每年的春运,就像是一场和 12306 的生死搏斗。
各个群里都是求帮忙加速的的小程序,但即使买了再多加速包,焦虑也缓解不了半分。
抢票面前,人人平等,程序猿也不例外。
但是当一个程序猿想回家的时候,是没有人能拦得住的。
Github 上的 pjialin ,便发出了这样的感叹:
今年回家的票明显要难买很多,早早就答应了父母今年的票没问题,到现在一张票没买到,虽然家里已经订了汽车票,让我不用操心,但是想想他们一行还有小孩,心还是很伤的。 这段时间从 12306Bypass 到 testerSunshine 大佬写的 12306,还是没抢到票,索性就自己写了一个,希望也能帮助到更多人
今天就来给大家介绍这样一款亲测好用,已经帮我抢到了回家的票(真的感谢!)的开源工具py12306。
工具介绍
先给大家看一下这个工具的主要功能:
多日期查询余票
自动打码下单
电话语音通知
多账号、多任务、多线程支持
单个任务多站点查询
分布式运行
Docker 支持
动态修改配置文件
邮件通知
Web 管理页面
微信消息通知
钉钉通知
在 py12306 中,如果需要自动打码下单,则需要输入自己的 12306 的账号与密码,在程序刷新查询到余票后,会自动帮你下单之后通过电话或者邮件,微信,钉钉等方式通知你,接到通知后上 12306 网站的未完成订单即可看到,但是要注意的是在通知后需要在 30 分钟内支付订单,否则就会被取消。如果介意输入密码的话也可以选择仅查询,整个查询过程都不需要经过自己的账户。
使用流程
在使用这个工具前,需要先做好以下几个准备:
确认自己电脑的 python 环境是 3.6 以上版本并且有 pip
可以在终端输入如下命令:
python --version
返回的即是自己 python 版本号
同时,你也可以像我一样创建一个虚拟环境,我倾向于使用 conda 来管理环境:
conda create -n train python=3.6
创建好了后,输入
conda activate
train
则进入了刚刚建的名为 train 的 python3.6 虚拟环境
确认自己的 12306 账户,并且确认乘客信息已经添加好
如果需要语音通知服务,需要事先在这里买好,我只买了 1 元钱的,再加上免费的 5 条,15 条已经很够用了。
在这些准备做好了后,就可以开始配置工具了:
(以下少部分命令是仅针对 mac/linux 系统,windows 用户可能需要自行修改一下)
首先将这个软件下载下来
git clone https://github.com/pjialin/py12306
进入刚刚下载的文件夹
cd py12306
在下载的文件中,已经事先列好了依赖项,在 pip 中下载安装
pip install -r requirements.txt
用 vim 打开配置文件
vim env.py
点击 i 进入编辑模式,修改配置文件,包括输入自己的账户名密码,创建一个或多个抢票任务,以及设置通知方式,是否分布式运行等。
对于打码软件可以选择今年开发者新增的免费打码或者说是用若快平台上的若快打码,开发者称免费打码不稳定,如果失效了再手动换成若快打码也是可以的,我个人运行的情况是在免费打码的情况下就抢到票了。
配置完成后,点击 esc 键退出编辑模式,再输入 :wq保存文件。
这时我们可以测试一下配置信息以及通知的功能:
python main.py
-t -n
测试成功后,接下来,就是紧张刺激的抢票环节了
python main.py
首先,它会弹出你的配置以及任务,进入这个用户的账号运行开始
之后就是不断的刷新查询刷新查询
如果检测到放票,会马上给你下单
但是很多时候,也可能会因为被别人捷足先登而出票失败余票不足
但是,要相信,总会抢票成功的!抢票成功
使用风险
但值得注意的是,使用这个软件,还是有一定风险的。
中国铁道科技研究院电子所副总工程师兼 12306 技术部主任单杏花表示,12306 启用风险防控系统,对访问请求实施安全风险识别和分级控制,维护公平公正的售票环境。如果有人以频繁极高的速度访问服务器,会被视为非正常操作,高危用户将被拦截甚至被列入黑名单。还未达到拦截或封号级别的抢票软件将被风控系统拖到慢队列中,也就是说,通过第三方软件抢票可能会更慢。
大家也要注意 ip 的可能被限制问题。
结语
从还没开始放票前,家里就在各个软件上早早给我预约了抢票,结果一个没抢着,每天他们就守着那些软件,一遍遍看还有没有能买的加速包,我看着也是实在心疼。这个 python 开源工具的出现,让我一下子就抢到了回家的票,实在欣喜若狂。
我真诚地感谢这个工具的开发者,他实实在在地造福了我和我的家庭,现在,我也希望能把这个工具推荐给你们,造福更多的人。