12306之登录流程解析

如题所述

第1个回答  2022-06-14

本套教程共分3章:

本套内容主要用于分析12306购票流程,意在编写一套自动购票小程序。12306接口 api 经常变动,但是流程分析是固定的。因此,本套教程主要记录12306 相关购票流程分析过程,以作记录。

经过笔者这段时间对12306登录流程抓包发现,12306对登录有两套 api,其中一天时间内大部分使用的是下面所要说的第一套接口,第二套接口经常在早上 9:00-11:00 这个时间段内使用(当然,这只是我这两天观察得到,不一定准确)。下面开始分析下这两套登录接口 api:

从上图中可以看到,验证码图片的获取接口 api 为:

从接口就可以看出这是一个 Get 操作,参数有4个:

最后一个参数是一个随机数,去除这个随机数,一样能获取到验证码图片,但是为了防止浏览器对同一网址的缓存设置,最好就加上这个随机数参数。
:图片获取接口服务器会返回一个 Cookie,因此我们需要保存这个 Cookie,后续请求服务器需要用到这个 Cookie。

因此,当提交验证码给服务器后,服务器会检测这个验证码,然后返回给我们一个json格式的字符串。通过上图我们可以看到,当 "result_code" 等于"4"时,代表验证码正确;当 "result_code" 不等"4"时,错误信息会在"result_message"中显示。

前面说要获取 newapptk ,是因为这个页面需要提交这个参数:

最后,看下这个页面返回的结果:

当返回结果的 result_code=0时,表明请求成功,请求成功或失败的结果可以从键 result_message 中获取。

之所以要访问到这个页面,是因为这个服务器会下发一个新的 Cookie,后续的查询或者订单提交请求都必须使用这个更新的 Cookie。

因此,到这里,整个登录流程才结束。

其参数为:

跟第一套方案相比就少了个键值: login_site:E

可以看到,验证码检测接口变为了:

参数如下所示:

最后看下返回结果:

可以看到,接口为:

看下其携带的参数内容:

最后,看下返回内容:

这样,第二套登录接口流程就已经走完了。

无论是对于第一套登录接口,还是第二套登录接口,都可以用一套用户注销接口。
用户注销接口主要包含3个请求:

其接口为:

就是一个普通的 Get 请求,没有携带参数,也不用关心返回值。

其接口为:

就是一个普通的 Get 请求,没有携带参数,也同样不用关心返回值。但注意的是这里服务器会返回一个 Cookie。

其接口为:

这是一个 Post 请求,因此,我们来看下参数:

参数就是一个 appid ,其固定值为 otn 。
最后,我们需要得到其返回结果,来得知注销的结果:

以上,就是整个注销过程。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网