文章只做技术研究 如果通过此技术违反国家法律,一切后果自负,作者不承担任何责任。
好吧,先来唠叨,唠叨。这几天大家都沉浸在抢票中,当然我也不例外。
最后总结一句,有抢票软件不一定能抢到票,没抢票软件一定是抢不到票,网页一点就死了。
往年,还能弄个小工具抢抢,今年12306换了件新衣服,更加跑不动了,最后独留下孤单在心里。
好吧 ,进入正题:玩转新版12306抢票
订火车票无非是如下几个流程:
登录 - 查询 - 点预定按钮 - 提交订票用户 - 确认订单 或者是 自动所谓的自动刷票 登录 - 查询 - 输入验证码提交
下面一起分析分析这两套流程:
首先准备抓包工具
登录拆分为:
https://kyfw.12306.cn/otn/ 抓cookie
https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand 获取验证码
https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn 预验证验证码
https://kyfw.12306.cn/otn/login/loginAysnSuggest 登录
https://kyfw.12306.cn/otn/login/userLogin 正式登录(没有这个请求是无法登录的)
订票流程
查票 https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2014-01-04&leftTicketDTO.from_station=SZQ&leftTicketDTO.to_station=BHQ&purpose_codes=ADULT
注意这个请求的cookie 这个cookie会伴随抢票流程的始终。有时候有些人会返回-10等等一些奇怪的错误,我这里想说 get请求参数是可以验证先后顺序的,注意顺序就好了。
点击预定按钮
https://kyfw.12306.cn/otn/confirmPassenger/initDc 这个请求主要是获取订单提交时候的2个令牌值(REPEAT_SUBMIT_TOKEN,key_check_isChange)
获取提交订单验证码
https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&0.4528230968713445
预验证验证码
https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn
检查订单
https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
有人会想问oldPassengerStr和passengerTicketStr是什么,这里给一段代码把
-
-
-
-
-
-
-
publicstaticStringgetOldPassengerStr(List<UserInfo>userInfo){
-
StringoldStrs="";
-
for(inti=0;i<userInfo.size();i++){
-
StringoldStr=userInfo.get(i).getName()+","+userInfo.get(i).getCardType()+","+userInfo.get(i).getCardID()+","+userInfo.get(i).getType();
-
oldStrs+=oldStr+"_";
-
}
-
returnoldStrs;
-
}
-
-
-
-
-
-
-
-
publicstaticStringgetPassengerTicketStr(List<UserInfo>userInfo){
-
StringoldStrs="";
-
for(inti=0;i<userInfo.size();i++){
-
StringoldStr="";
-
if("WZ"==userInfo.get(i).getSeatType()){
-
}else{
-
oldStr=userInfo.get(i).getSeatType();
-
}
-
StringbR=oldStr+",0,"+userInfo.get(i).getTickType()+","+userInfo.get(i).getName()+","+userInfo.get(i).getCardType()+","+userInfo.get(i).getCardID()+","
-
+(userInfo.get(i).getPhone()==null?"":userInfo.get(i).getPhone())+",N";
-
oldStrs+=bR+"_";
-
}
-
returnoldStrs.substring(0,oldStrs.length()-1);
-
}
其实把 这两个参数怎么拼接的 可以在js里面找到答案。
获取时时余票
https://kyfw.12306.cn/otn/confirmPassenger/getQueueCount
确认订单
https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
其实 说到这个应该也就快完了 剩下的刷票流程短一点,大家可以自己抓包分析。曾经这里出现过无须验证码提交订票信息的漏洞,最近这两天好像修复好了。
其实吧,技术只是一方面,重要的是理解流程。
转载请注明出处:http://blog.csdn.net/hncdyj/article/details/17952815
源码分享:http://www.zuidaima.com/share/1642189453937664.htm
持续更新程序下载地址:https://code.google.com/p/mygod-go-home/downloads/list
分享到:
相关推荐
HttpClient4.3模拟登陆新版12306
2014版12306订票助手 基于.NET技术构建的订票助手,脱离浏览器,为您提供更快更优秀的订票体验!12306订票助手.NET由 木鱼(iFish) 为您提供
12306网站的接口工具,调用dll中的对应结构能直接获取12306的各种信息。
新版12306网站订购火车票教程.docx
12306 新版验证码识别脚本,文中完整代码链接:https://gist.github.com/Evi1m0/fbbdb1ba7c66cc4e1bb2
12306余票查询系统C# 网上转载的,不是自己原创,仅供学习参考,希望对你开发火车票相关程序起到借鉴的作用。
火车票查询车次 票价 余票 购买火车票立即出票
不采用第三方接口,纯粹模拟访问12306获取火车票信息。加上定时任务,你就可以无忧无虑的获取火车票信息了。
12306友科订票助手V2.2 永久免费,2014年为数不多能用的抢票工具,2014年春运期间将会继续保持更新!确保与官网同步最新接口
12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构12306架构...
12306Bypass.
12306抢票专家是UC浏览器打造的一款最新火车票抢票软件,12306...12306抢票专家v4.0.3001.0 【2014.12.08】更新日志: 升级至 Chromium 38 内核 增加抢票插件 提升浏览器冷启动速度 解决若干崩溃问题,提升浏览器稳定性
12306订票助手源码
12306抢票
2014-1-8号12306再次更改代码,友科订票助手V2.3.10再次与其进行最新对接
12306 登录 脚本
支持新版12306订票系统。 安装方法: 1. 在chrome浏览器中地址栏输入:chrome://chrome/extensions/ 或者 在菜单里选择工具->扩展程序,打开扩展程序窗口 2. 将下载的“12306订票助手_Chrome.crx”文件拖动到该...
12306订票助手.NET12306订票助手.NET12306订票助手.NET12306订票助手.NET
12306 抢票助手 - Java版
12306订票助手源码