12306模拟登录

在模拟12306登录及购票的时候,不要登录或者购票的次数测试频率太高,否则直接封IP。现在12306验证码的问题很复杂,我并不会破解,所以只能做需要带验证的模拟登录和购票。
在模拟的时候,在开发者工具栏中查看提交的get或者post数据。如果只是查看网络提交或者接收数据用Httpfox最好,他可以把全部的请求显示出来。用fixbug查看,发生了网页跳转的中间请求不能显示出来。现在来分析登录过程请求的先后顺序以及请求参数。
验证码的地址 https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand 后面还有一个随机数,这个随机数我没添加,也是可以请求的,不会报错,他只是为了防止缓存。

登录过程中的请求顺序

这里写图片描述
(1)第一个链接是检查验证码是否正确
第一个参数randCode是根据验证码图片来获取的。9张小图片,每张小图片都有一个像素范文。第一张就是需要选中图片的题目,后面8张就是需要选择的答案。我在做swing时,将验证码图片进行切割,将每张小图片按顺序放入9个JButton中,作为按钮的背景。选中哪些图片,则就会有相应的事件来执行,将对应的对象像素放入数组中,然后在登录的时候进行处理。图片效果如下:
这里写图片描述

登录前会先访问https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn ,判断验证码和参数是否正确。返回的结果为:{“validateMessagesShowId”:”_validatorMessage”,”status”:true,”httpstatus”:200,”data”:{“result”:”1”,”msg”:”TRUE”},”messages”:[],”validateMessages”:{}} ,如果有”msg”:”TRUE”,则验证码正确。

(2)进行登录,地址为https://kyfw.12306.cn/otn/login/loginAysnSuggest 参数为:

这里写图片描述

其中randCode是验证时候发送的验证码,采用post方法传递参数,键的名字一定要对,与表单中的大小写都要相同。返回数据:{“validateMessagesShowId”:”_validatorMessage”,”status”:true,”httpstatus”:200,”data{“otherMsg”:”“,”loginCheck”:”Y”},”messages”:[],”validateMessages”:{}} ,返回的json数据中有 “loginCheck”:”Y”,则登录信息正确。

(3)登录成功的最后一步,地址https://kyfw.12306.cn/otn/login/userLogin 。发送的数据较为简单:

这里写图片描述

值为空,不会有数据返回。
到此为止登录就分析完毕。总体来说登录还是很简单的,没有复杂的参数需要传递。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值