12306之登录流程解析

发表于:2018-2-08 11:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Whyn    来源:51Testing软件测试网采编

#
流程
分享:
  本套内容主要用于分析12306购票流程,意在编写一套自动购票小程序。12306接口 api 经常变动,但是流程分析是固定的。因此,本套教程主要记录12306 相关购票流程分析过程,以作记录
  登录流程分析
  1.首先,我们可以在登录 这个界面进行登录操作。
  然后,当我们输入用户名和密码,并输入正确的验证码后,浏览器就会向12306服务器发送我们的登录请求。因此,我们如果要实现自动登录过程,就必须模拟这个操作,通过 Firefox 浏览器自带的开发者工具,我们可以很方便的对这整个过程进行抓包,得到相应的登录接口。
  经过笔者这段时间对12306登录流程抓包发现,12306对登录有两套 api,其中一天时间内大部分使用的是下面所要说的第一套接口,第二套接口经常在早上 9:00-11:00 这个时间段内使用(当然,这只是我这两天观察得到,不一定准确)。下面开始分析下这两套登录接口 api:
  ●第一套接口(大部分时间使用):
  1.验证码图片获取接口分析,抓包结果如下图所示:
  captcha.png
  从上图中可以看到,验证码图片的获取接口 api 为:
  https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&{random}
  从接口就可以看出这是一个Get操作,参数有4个:
  login_site:E
  module:login
  rand:sjrand
  0.3375607650273108:
  最后一个参数是一个随机数,去除这个随机数,一样能获取到验证码图片,但是为了防止浏览器对同一网址的缓存设置,最好就加上这个随机数参数。
  注:图片获取接口服务器会返回一个 Cookie,因此我们需要保存这个 Cookie,后续请求服务器需要用到这个 Cookie。
  2.当我们获取到验证码,填写完用户名,密码和验证码后,就会走captcha-check这个流程,服务器首先会对提交的验证码进行检测,抓包如下图所示:
  captcha-check
  提交的参数如下所示:
  form Data
  最后看下返回结果:
  response
  因此,当提交验证码给服务器后,服务器会检测这个验证码,然后返回给我们一个json格式的字符串。通过上图我们可以看到,当 "result_code" 等于"4"时,代表验证码正确;当 "result_code" 不等"4"时,错误信息会在"result_message"中显示。
  3.当验证码验证成功后,就会真正走登录接口,抓包如下:
  login
  对应的表单参数有:
  form Data
  提交表单结果完成后,服务器会返回一个json字符串结果:
  response
  从服务器返回结果中,我们可以就可以知道登录的状态了。但是,这里登录流程还没有结束。让我们继续下面的分析:



上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号