决战春运之巅,我们用这个项目抢到了火车票

百家 作者:机器之心 2019-12-26 04:05:53

机器之心报道

机器之心编辑部

春节临近,又双叕到了抢票的关键时刻。你在朋友圈跪求朋友加速了吗?乖乖听话买加速包了吗?但对于「难点地区」的同学们来说,即使买了加速包,APP 显示极速抢票,也未必能买到票。



对于程序员来说,抢票可不止这两种「常规操作」。最近几天在 GitHub 全球趋势榜上,几个火车抢票项目一直名列前茅。

国人占领 GitHub 趋势榜:在 12306 上自动抢票的 Python 项目最近几天 star 量飞涨。


目前在 GitHub 上最火的两个 12306 抢票项目是:

  • 12306 购票小助手(约 23200 Star):https://github.com/testerSunshine/12306

  • py12306 购票助手(约 9000 Star):https://github.com/pjialin/py12306


此外还有两个 12306 网站验证码识别工具:


  • https://github.com/YinAoXiong/12306_code_server

  • https://github.com/zhaipro/easy12306


这些项目其实并不是刚刚出现的,它们已经经过了去年春节抢票,以及五一、十一抢票的考验。就其中 star 量最高的那两个来说——自去年春节之后,「12306 购票小助手」更新了图形界面,加入了购票成功信息推送,增加了候补订单/捡漏功能等等。


为什么用工具抢票几率更高?因为这种方法可以免去输入验证码、并略过网页刷新等待的时间。

由于 Python 官方对于 2.X 版本支持的结束,目前项目仅支持 Python 3.6 以上版本。机器之心选择了「py12306 购票助手」项目进行了测(qiang)试(piao)。


抢票效果很惊人


这一工具能否抢到票?其实,机器之心小编也正饱受春节回老家抢不到票的困扰,所以编辑部用了这个神奇的项目,结果成功抢到了车票


不要被 GitHub 上的代码吓到了,这些工具使用起来非常简单。


你看,小编刚开始刷票就抢到了一张从北京到长沙的高铁票,我们再登陆 12306 的官方网站就可以直接付款了。


总体而言,py12306 购票助手使用非常便捷,体验也是非常好的。毕竟有什么报错,大家都可以在 Issue 中找到解答。这样的流行项目,很多开发者已经帮我们试过水了。


使用流程如下:


  1. 下载项目并安装相关依赖库;

  2. 打开参数文档,输入自己的用户名、密码、起止城市(支持多个车站)、发车时间段、座位信息;

  3. 启动程序,搜索车次;

  4. 如果发现了合适的车票,会自动下单,并通过邮件、微信等工具提醒。

  5. 最后,登录 12306 付款~


值得注意的是,每次重新启动,程序都会从历史进程中获取信息,并尝试直接恢复用户的登录等状态。如下是启动抢票功能后的初始化界面:


当然,如果当前车次或车站没有多余的火车票,那么程序会一直刷票,并且当存在余票时能立即占用票务资源。



比较有意思的是,Py12306 还提供了一个可视化网页端,这能让不了解开发的同学直观看到程序的运行结果。


使用指南


首先,你需要将项目克隆到自己的电脑上(需要 Python 3.6):


git clone https://github.com/pjialin/py12306

cd py12306

pip install -r requirements.txt


然后配置程序:


cp env.py.example env.py

配置之后,你需要输入相关信息,如用户名和密码、查询条件等。这时候,你需要打开安装目录里面的 env.py 文件,不论是用 Vim、SubLime 这些纯文本编辑器,还是电脑自带的「记事本」、「文本编辑」,只要能打开纯文本并编辑就 OK 了。


出现在你眼前的文档看上去非常复杂,但每一行代码都有很多中文注释,相信小白也能看懂所有配置选项。首先是参数 USER_ACCOUNTS,这里可以将示例改成自己的用户名和密码,如:



如果你对心跳查询、免费大码之类的参数不感兴趣,请尽管跳过,这是一个初学者教程。


接下来是查询任务参数 QUERY_JOBS,这里可以输入出发和到达的城市。此处只需要修改 left_dates 和 stations 两个参数。注意,如果一行代码前面有井号,表示修改这行文字只是一个注释。


如下图所示,我们只需要修改第一个 left_dates 和第一个 stations 即可。left_dates 可以输入多个,每个都需要按照图中的格式,使用引号括住日期,每个日期用英文逗号隔开。



在这里还有一个重要参数:旅客姓名,参数名称为 members。这里注意,如果以前是学生,现在是成人或者是需要购买成人票,写姓名的时候前面需要一个「*」号。


最后是出发日的时间段和座位类型,这里会按照输入的顺序优先购买有票的:



当修改完这些信息后,保存并退出编辑界面。


然后你就可以抢票了,只需要运行 main.py 文件即可。


python main.py

准备妥当,好了,是时候抢票了!


机器之心「SOTA模型」22大领域、127个任务,机器学习 SOTA 研究一网打尽。


点击阅读原文,立即访问

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接