12306的候补购票功能能跑赢抢票软件吗?
节假日/春运,出行/回家,相信大部分的网友都有和我一样的体验, 官网抢不到票,三方出行软件买了一堆加速包,也只是出行软件营销的一个噱头,最终还是买不到票,那么票都是被谁抢了, 毫无疑问,高带宽+高性能的机器+自动抢票软件,手动跟他们抢,几率有点吓人,所以作为一名出色的程序员, 这个是不能接受的,能用程序来解决的问题, 就拒绝动手,于是就有了做一个刷票程序的想法。
下面简单的分享一下如何抓包
目前市面大部分的开源,或部分收费的软件,都是基于PC端来抓取接口,并且构造模拟请求,走完一整套的下单流程:
1、打开官网首页,打开浏览器调试模式,这里推荐使用谷歌浏览器,在network(网络)的界面选中保留日志
在抓取各种连接后,我们发现,每个请求都会携带cookie,由此推测出这是登录后才会把登录状态放到cookie中的
2、在官网的登录后,登录状态是在cookie中保持的,且刷票时的所有的请求都得有登录状态cookie,cookie中有两个特殊的存在,这两个值是在浏览器中生成的基础cookie,具体参考:RAIL_EXPIRATION、RAIL_DEVICEID
3、我的方法就是访问一次官网,然后打开控制台,把RAIL_EXPIRATION、RAIL_DEVICEID的cookie复制出来, 使用httpclient中的BasicCookieStore 来赋值cookie
在登录完成后,保存BasicCookieStore ,然后后续的请求每次都带着。
4、抓取下单的链接
5、输入条件,查询车票,在网络中查看调用的接口及参数
6、预约-选择乘车人,选座-下单
7、根据抓取到的链接,和参数,使用httpclient,模拟请求,模拟自动下单