转自freebuf
1,2,3,零咯,几秒钟心仪的票票就被人抢完了,也不知道是不是人手一部传说中的抢票大杀器,针对上面的情况,所以写了下面的内容,如果分析不到位,欢迎大伙指正。
细节如下:打开登录口 通常,从12306页面上打开登录页面,地址是 https://dynamic.12306.cn/otsweb/loginAction.do?method=init ,访问该地址时,加载很多链接. 1.登录
登录过程,需要下面条件:
—-验证码
——- [GET] https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=sjrand
—————验证码请求过程也可设置上面的cookie(如果上面未设定cookie)
—————构造HTTPS请求(假设只发包,会出现403提示) —-随机数 ——- [GET] https://dynamic.12306.cn/otsweb/loginAction.do?method=loginAysnSuggest
—————随机数请求完成任务如下:
—————Set-Cookie: JSESSIONID=605B4539EA6825A9650AD6C383363E21; Path=/otsweb
—————Set-Cookie: BIGipServerotsweb=2480144650.62495.0000; path=/
—————随机数在登录时会用到,随意设置会引起”拒绝访问”
——本缓存服务器管理员: wssupport@chinanetcenter.com
——Via:hbts175:8361 (Cdn Cache Server V2.0)
——Generated Fri, 18 Jan 2013 07:05:07 GMT by cache.51cdn.com (Cdn Cache Server V2.0)
—————正常访问,返回结果如下:
—————{“loginRand”:”754″,”randError”:”Y”} —-登录验证——- [post] https://dynamic.12306.cn/otsweb/loginAction.do?method=login
整个登录过程如下:
A.先获取验证码
B.再获取随机号
C.POST提交-验证身份假设分开完成A,B,C请求,还能登录吗?
No.1 —— 验证码
No.2 —— 随机号
No.3 —— POST
熟悉HTTP/HTTPS协议,经常会看到Connection: keep-alive,12306在接受到数据之后,会返回数据给客户端.
如果只是单纯的提交而不接受,会提示403错误.No.1 验证码(省略)No.2 随机数(省略)
No.3 验证登录 此处的cookie,在请求回去随机数/验证码时生成(服务器返回set-cookie响应).POST提交的参数如下: #################################################################
2.订票
订票过程:
No.1 —— 查询
—— 该过程生成参数ypInfoDetail(查看余票情况)—- (对比参数leftTicketStr)
ypInfoDetail —— 1*****32091*****00003*****0000 // 请看后面ypInfoDetail详解
1*****3209
1*****0000
3*****0000
leftTicketStr —– 100685306510068500003014550000
1006853065
1006850000
3014550000
No.2 —— 预订
——– 参数leftTicketStr — 判断是否能够订票 No.3 —— 提交购票人信息
——– 参数leftTicketStr — 再次确认是否有票可购订票过程中,核心就是参数leftTicketStr,因为这个参数决定是否有票可买.
No.2与No.3之间的时间间隔,往往就是购票失败的原因.No.1 查询 No.2 预定预定——选择车次 ^^^^^^^^^^^ypInfoDetail详解^^^^^^^^^^^
参考: http://www.v2ex.com/t/57909 提交信息,获取车票—-<点击预定按钮后,填写购票人信息> 填写完购票人信息,系统会借测是否有票可购 最后一步,确认购票 整个购票流程大致如此.如果成功匹配12306验证码,精确管理”预定/提交订票“这两处,实现抢票应该指日可待.
1,2,3,零咯,几秒钟心仪的票票就被人抢完了,也不知道是不是人手一部传说中的抢票大杀器,针对上面的情况,所以写了下面的内容,如果分析不到位,欢迎大伙指正。
细节如下:打开登录口 通常,从12306页面上打开登录页面,地址是 https://dynamic.12306.cn/otsweb/loginAction.do?method=init ,访问该地址时,加载很多链接. 1.登录
登录过程,需要下面条件:
—-验证码
——- [GET] https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=sjrand
—————验证码请求过程也可设置上面的cookie(如果上面未设定cookie)
—————构造HTTPS请求(假设只发包,会出现403提示) —-随机数 ——- [GET] https://dynamic.12306.cn/otsweb/loginAction.do?method=loginAysnSuggest
—————随机数请求完成任务如下:
—————Set-Cookie: JSESSIONID=605B4539EA6825A9650AD6C383363E21; Path=/otsweb
—————Set-Cookie: BIGipServerotsweb=2480144650.62495.0000; path=/
—————随机数在登录时会用到,随意设置会引起”拒绝访问”
——本缓存服务器管理员: wssupport@chinanetcenter.com
——Via:hbts175:8361 (Cdn Cache Server V2.0)
——Generated Fri, 18 Jan 2013 07:05:07 GMT by cache.51cdn.com (Cdn Cache Server V2.0)
—————正常访问,返回结果如下:
—————{“loginRand”:”754″,”randError”:”Y”} —-登录验证——- [post] https://dynamic.12306.cn/otsweb/loginAction.do?method=login
整个登录过程如下:
A.先获取验证码
B.再获取随机号
C.POST提交-验证身份假设分开完成A,B,C请求,还能登录吗?
No.1 —— 验证码
No.2 —— 随机号
No.3 —— POST
熟悉HTTP/HTTPS协议,经常会看到Connection: keep-alive,12306在接受到数据之后,会返回数据给客户端.
如果只是单纯的提交而不接受,会提示403错误.No.1 验证码(省略)No.2 随机数(省略)
No.3 验证登录 此处的cookie,在请求回去随机数/验证码时生成(服务器返回set-cookie响应).POST提交的参数如下: #################################################################
2.订票
订票过程:
No.1 —— 查询
—— 该过程生成参数ypInfoDetail(查看余票情况)—- (对比参数leftTicketStr)
ypInfoDetail —— 1*****32091*****00003*****0000 // 请看后面ypInfoDetail详解
1*****3209
1*****0000
3*****0000
leftTicketStr —– 100685306510068500003014550000
1006853065
1006850000
3014550000
No.2 —— 预订
——– 参数leftTicketStr — 判断是否能够订票 No.3 —— 提交购票人信息
——– 参数leftTicketStr — 再次确认是否有票可购订票过程中,核心就是参数leftTicketStr,因为这个参数决定是否有票可买.
No.2与No.3之间的时间间隔,往往就是购票失败的原因.No.1 查询 No.2 预定预定——选择车次 ^^^^^^^^^^^ypInfoDetail详解^^^^^^^^^^^
参考: http://www.v2ex.com/t/57909 提交信息,获取车票—-<点击预定按钮后,填写购票人信息> 填写完购票人信息,系统会借测是否有票可购 最后一步,确认购票 整个购票流程大致如此.如果成功匹配12306验证码,精确管理”预定/提交订票“这两处,实现抢票应该指日可待.