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

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

春节临近,又双叕到了抢票的关键时刻。你在朋友圈跪求朋友加速了吗?乖乖听话买加速包了吗?但对于「难点地区」的同学们来说,即使买了加速包,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): 

  1. git clone https://github.com/pjialin/py12306 
  2.  
  3. cd py12306 
  4.  
  5. pip install -r requirements.txt 

然后配置程序: 

  1. 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 文件即可。 

  1. pythonmain.py 

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

 

责任编辑:华轩 来源: 机器之心
相关推荐

2018-01-05 09:33:10

Python火车票春运

2011-01-24 15:37:32

火车票

2018-09-27 05:31:14

2018-12-29 16:24:58

Python12306火车票

2013-01-07 17:34:47

火车票抢票浏览器

2011-12-20 14:09:40

2024-01-30 08:55:24

2022-09-09 15:49:03

携程火车票组件化管理优化

2018-01-02 09:56:04

Python12306火车票

2012-01-11 08:54:24

移动互联网春运友盟

2019-04-24 09:25:51

安全事故复联

2020-01-13 07:42:01

技术研发指标

2012-01-05 13:14:42

火车票

2023-09-15 09:34:54

2016-08-31 13:26:24

PythonPython3工具

2018-01-10 22:19:44

2023-07-07 14:18:57

携程实践

2011-01-28 15:48:11

Chrome插件Page Monito火车票

2015-03-18 15:05:12

12306验证码

2019-12-23 10:51:40

Python车票抢票
点赞
收藏

51CTO技术栈公众号