4.下面会访问uamtk页面,主要为了获取一个newapptk键值,抓包如下:
response
5.成功获取newapptk后,我们就可以访问uamauthclient页面,抓包如下:
uamauthclient
前面说要获取newapptk,是因为这个页面需要提交这个参数:
form Data
最后,看下这个页面返回的结果:
response
当返回结果的 result_code=0时,表明请求成功,请求成功或失败的结果可以从键 result_message 中获取。
之所以要访问到这个页面,是因为这个服务器会下发一个新的 Cookie,后续的查询或者订单提交请求都必须使用这个更新的 Cookie。
因此,到这里,整个登录流程才结束。
●第二套接口(一般在早上短暂出现)
1.验证码图片获取接口分析,抓包结果如下图所示:
getPassCodeNew
可以看到,验证码图片的获取接口变为了:
https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand&{random}
其参数为:
params
跟第一套方案相比就少了个键值:login_site:E
2.接下来,同样是先对验证码进行检测,抓包如下:
checkRandCodeAnsyn
可以看到,验证码检测接口变为了:
https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn
参数如下所示:
form Data
最后看下返回结果:
response
当验证码验证成功后,就会真正走登录接口,抓包如下:
loginAysnSuggest
可以看到,接口为:
https://kyfw.12306.cn/otn/login/loginAysnSuggest
看下其携带的参数内容:
form Data
最后,看下返回内容:
response
这样,第二套登录接口流程就已经走完了。
用户注销流程分析
无论是对于第一套登录接口,还是第二套登录接口,都可以用一套用户注销接口。
用户注销接口主要包含3个请求:
1.loginOut 过程,抓包如下:
loginOut
其接口为:
https://kyfw.12306.cn/otn/login/loginOut
就是一个普通的Get请求,没有携带参数,也不用关心返回值。
2.init 流程,抓包如下:
init
其接口为:
https://kyfw.12306.cn/otn/login/init
就是一个普通的Get请求,没有携带参数,也同样不用关心返回值。但注意的是这里服务器会返回一个 Cookie。
3.uamtk 流程,抓包如下:
image.png
其接口为:
https://kyfw.12306.cn/passport/web/auth/uamtk
这是一个Post请求,因此,我们来看下参数:
form Data
参数就是一个appid,其固定值为otn。
最后,我们需要得到其返回结果,来得知注销的结果:
response
以上,就是整个注销过程。