网易首页 > 网易号 > 正文 申请入驻

春运买不到票?程序员喊你来GitHub上用抢票神器!

0
分享至

来自:量子位

前言

想要春节回家的小伙伴们,想必前几天刚经历了一波抢票大战。顺便把一个 Python 抢票工具,送到了 GitHub 趋势榜第一。

这个项目名很干脆,就是“12306”,目前标星超过 2.2W+。项目发起者是一名叫文贤平的程序员。

这很可能是全 GitHub 最德高望重的购票小助手了,现在功能一直在更新,且已支持 Python 3.6 以上版本。

一些后起之秀也是在它的基础上开发出来,然后广受欢迎:

标星超 8K 的“py12306”便是其中之一,它支持分布式抢票。春运后面,如果需要抢票,可以试一下这些 Python 工具。已经有许多人亲测成功抢到票了。

两个 GitHub 上高星抢票项目

12306 购票小助手

文贤平/文先森 (testerSunshine) 的抢票小助手“12306”,虽然诞生在 2018 年初,但最近一次提交代码,是在今年 12 月 21 日,现在还十分新鲜。

这只得力的小助手,思路清晰又紧凑:

从查询余票开始,到付款完成,最后获取订单号。一气呵成,不怕人类手速太慢。

有了它,文先森去年就丝滑地抢到了回家的票。而后,便努力帮助抢票助手继续进化。

到目前为止,文先森与一众贡献者,已经在项目里提交了 361 次代码,实现的功能有这些:

从更新日志看来,最近加入的重要功能是候补订单。所谓候补,就是在票卖完的情况下预先付款,等其他人退票之后自动补上,是我国 2019 年春运才出现的新机制。

但文先森也还不清楚,这项功能在抢票助手里的需求是怎样的,所以正在密集地尝试和调整:

在实现新功能的同时,已有的功能也在不断优化。这个抢票工具越来越强大,已具备自动打码、自动登陆、准点预售和捡漏、智能候补、邮件通知、 pushbear 通知等功能。GitHub 标星数量比起年初的 4K,也已经翻了两番。

随着项目的成长,文先森在 8 月 31 日宣布了一件重要的事:放弃支持 Python 2.7,只支持 3.6 以上版本。

下面让我们具体看看这个项目:

(1)依赖库

验证码目前可以本地识别,需要下载模型,放于项目根目录,全部代码来源于此项目(https://github.com/zhaipro/easy12306),表示感谢:

git仓库下载:https://github.com/testerSunshine/12306model.git

项目依赖包查看 requirements.txt:

https://github.com/testerSunshine/12306/blob/master/requirements.txt

安装方法 x:

  • root 用户(避免多 Python 环境产生问题):pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

  • 非 root 用户(避免安装和运行时使用了不同环境):pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

(2)项目使用说明

服务器启动:

  • 修改配置文件,可以配置邮箱,配置邮箱的格式在配置里面可以看到 ex,可以配置 Server 酱提醒(推荐)配置教程,配置配置文件的时候,需注意空格和遵循 Python 语法格式。

  • 运行根目录 sudo python run.py,即可开始。

如果你的服务器安装了 Docker 与 Docker-Compose, 那么就可以通过 Docker-Compose 进行启动。

docker.sh 脚本对此进行了封装,可以通过如下命令进行启动:

  • sudo ./docker.sh run #创建一个镜像并启动容器,如果镜像已经创建过了会直接启动容器。

  • sudo ./docker.sh restart #修改配置文件后,通过此名命令可重新加载容器运行。

  • sudo ./docker.sh rm #删除容器。

  • sudo ./docker.sh drun #后台运行容器。

  • sudo ./docker.sh logs #在后台运行时,通过此命令查看运行的内容。

  • 注:针对没有 Docker 环境的同学提供了 Docker 安装脚本(Centos7)- sudo ./docker_install_centos.sh。

(3)目录对应说明

目录对应说明如下:

  • agency-cdn 代理

  • config-项目配置

  • verify-自动打码

  • init-项目主运行目录

  • inter-接口

  • myException-异常

  • myUrllib request 网络请求库

(4)日志例子

成功 log,如果是购票失败的,请带上失败的 log 给我,我尽力帮你调,也可加群一起交流,程序只是加速买票的过程,并不一定能买到票:

正在第355次查询 乘车日期: 2018-02-12 车次G4741,G2365,G1371,G1377,G1329 查询无票 代理设置 无 总耗时429ms 车次: G4741 始发车站: 上海 终点站: 邵阳 二等座:有 正在尝试提交订票... 尝试提交订单... 出票成功 排队成功, 当前余票还剩余: 359 张 正在使用自动识别验证码功能 验证码通过,正在提交订单 提交订单成功! 排队等待时间预计还剩 -12 ms 排队等待时间预计还剩 -6 ms 排队等待时间预计还剩 -7 ms 排队等待时间预计还剩 -4 ms 排队等待时间预计还剩 -4 ms 恭喜您订票成功,订单号为:EB52743573, 请立即打开浏览器登录12306,访问‘未完成订单’,在30分钟内完成支付!

推荐有动手能力的朋友使用,抢票事半功倍。所以,多试几种工具也是好的,尤其是可以同时进行多个任务的那种。

py12306 购票助手

一位名叫 pjialin 的程序员,借鉴了文先森的部分代码实现,开发了一个分布式工具,名叫 py12306 购票助手。

就是说,一台机器抢不到,可以让许多硬件一起跑。它还支持多任务 (多班列车) 、多日期、多账号一起查。另一个机智的功能是,同时观察多个始发站和到达站的组合。

比如,北京出发的票没有了,就跑去下一站上车;或者家门口买不到,就直接买到终点:愿意妥协但限于手速的小伙伴,也能交给工具自动查看了。

项目作者说,试过文先森的算法和 bypass12306 未果,这才做出了自己的抢票工具。

用上这个新工具,他一下子抢到了好几张票:

同样是支持 Python 3.6 以上版本,这个项目现在也有 8K 标星了。

下面我们来看看使用方法:PS:py12306 需要运行在 python 3.6 以上版本(其他版本暂未测试)。

(1)安装依赖

git clone https://github.com/pjialin/py12306 pip install -r requirements.txt

(2)配置程序

cp env.py.example env.py

自动打码:验证码可以本地识别,所用的模型和算法均来自:

https://github.com/zhaipro/easy12306

语音通知:语音验证码使用的是阿里云 API 市场上的一个服务商,需要购买后将 appcode 填写到配置中:

https://market.aliyun.com/products/56928004/cmapi026600.html

(3)启动前测试

目前提供了一些简单的测试,包括用户账号检测,乘客信息检测,车站检测等。

开始测试 -t:

python main.py -t

测试通知消息 (语音,邮件) -t -n:

# 默认不会进行通知测试,要对通知进行测试需要加上 -n 参数 python main.py -t -n

(4)运行程序

python main.py

参数列表如下:

  • -t:测试配置信息

  • -t -n:测试配置信息以及通知消息

  • -c:指定自定义配置文件位置

分布式集群依赖于 Redis,目前支持情况:

  • 单台主节点多个子节点同时运行。

  • 主节点宕机后自动切换提升子节点为主节点。

  • 主节点恢复后自动恢复为真实主节点。

  • 配置通过主节点同步到所有子节点。

  • 主节点配置修改后无需重启子节点,支持自动更新。

  • 子节点消息实时同步到主节点。

使用:将配置文件的中 CLUSTER_ENABLED 打开即开启分布式。

目前提供了一个单独的子节点配置文件 env.slave.py.example 将文件修改为 env.slave.py,通过 python main.py -c env.slave.py 即可快速启动。

Docker 使用

(1)将配置文件下载到本地

docker run --rm pjialin/py12306 cat /config/env.py > env.py # 或 curl https://raw.githubusercontent.com/pjialin/py12306/master/env.docker.py.example -o env.py

(2)修改好配置后运行

docker run --rm --name py12306 -p 8008:8008 -d -v $(pwd):/config -v py12306:/data pjialin/py12306

当前目录会多一个 12306.log 的日志文件,tail -f 12306.log。

Docker-Compose 中使用如下:

(1)复制配置文件

cp docker-compose.yml.example docker-compose.yml

(2)从 Docker-Compose 运行

在 docker-compose.yml 所在的目录使用命令:

docker-compose up -d

Web 管理页面

目前支持用户和任务以及实时日志查看,更多功能后续会不断加入。

打开 Web 功能需要将配置中的 WEB_ENABLE 打开,启动程序后访问当前主机地址 + 端口号 (默认 8008) 即可,如 http://127.0.0.1:8008。

关于防封:目前查询和登录操作是分开的,查询是不依赖用户是否登录,放在 A 云 T 云容易被限制 IP,建议在其他网络环境下运行。

最后,祝小伙伴们春节都能顺利回家!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
渔民无故被扣10天拒不放人!大陆不再忍让,4大反制将雷霆落地

渔民无故被扣10天拒不放人!大陆不再忍让,4大反制将雷霆落地

起喜电影
2026-06-28 21:22:30
2026世界杯1-16决赛赛程时间表及对阵图高清完整版

2026世界杯1-16决赛赛程时间表及对阵图高清完整版

格斗联盟王大锤
2026-06-28 18:05:57
聊聊谢娜北京演唱会取消这事

聊聊谢娜北京演唱会取消这事

关尔东
2026-06-28 23:25:28
高市早苗没料到,拒赴深圳APEC,想给中国甩脸色,中方根本不接招

高市早苗没料到,拒赴深圳APEC,想给中国甩脸色,中方根本不接招

离离言几许
2026-06-27 15:44:23
最高院:提供 “口交” “肛交”等进入式性服务,是否属卖淫行为?

最高院:提供 “口交” “肛交”等进入式性服务,是否属卖淫行为?

周军律师聊案子
2026-04-21 09:50:16
大闹美联航大妈后续:以为回国就没事?三重处罚直接砸脸上

大闹美联航大妈后续:以为回国就没事?三重处罚直接砸脸上

娱乐圈见解说
2026-06-29 02:55:56
世界杯深度分析:南非VS加拿大,淘汰首场加拿大第一个16强名额?

世界杯深度分析:南非VS加拿大,淘汰首场加拿大第一个16强名额?

童叔不飙车
2026-06-29 01:24:38
暴增13974%!10倍牛股,光模块出口引爆市场

暴增13974%!10倍牛股,光模块出口引爆市场

21世纪经济报道
2026-06-28 21:01:58
对于明天周一A股,我只说4句话:第一,4000点大概率还不是终点!

对于明天周一A股,我只说4句话:第一,4000点大概率还不是终点!

趋势清风侠
2026-06-28 16:57:23
刚结婚就离婚?这次老夫少妻的残酷,在尹子维身上展现的淋漓尽致

刚结婚就离婚?这次老夫少妻的残酷,在尹子维身上展现的淋漓尽致

小椰的奶奶
2026-06-29 02:04:42
66年首次!泰王携王后公主空降法国,苏提达一袭藏青泰服,太亮眼

66年首次!泰王携王后公主空降法国,苏提达一袭藏青泰服,太亮眼

叮当当科技
2026-06-28 18:28:04
上海市民骑哈啰单车称遭遇“价格刺客”,骑79分钟收费30元!哈啰回应:建议用户骑行前留意价格信息,避免误骑高价车辆

上海市民骑哈啰单车称遭遇“价格刺客”,骑79分钟收费30元!哈啰回应:建议用户骑行前留意价格信息,避免误骑高价车辆

三湘都市报
2026-06-28 19:30:46
比赖清德还狂!若2028年她当台湾地区领导人,解放军出手武力统台

比赖清德还狂!若2028年她当台湾地区领导人,解放军出手武力统台

阿讯说天下
2026-05-26 13:40:22
伊朗出现致命误判!种种迹象证明,特朗普不装了,以色列也不装了

伊朗出现致命误判!种种迹象证明,特朗普不装了,以色列也不装了

掉了颗大白兔糖
2026-06-28 11:30:39
阿根廷击败约旦后,梅西首条 INS 动态刷屏全网!

阿根廷击败约旦后,梅西首条 INS 动态刷屏全网!

夜白侃球
2026-06-28 20:15:58
“这跟没断奶有什么区别”,五年级男孩无法分床睡,未来姻缘没了

“这跟没断奶有什么区别”,五年级男孩无法分床睡,未来姻缘没了

世界圈
2026-06-27 08:31:45
第一重仓!木头姐押注的AI制药“卖水人”,大涨218%!

第一重仓!木头姐押注的AI制药“卖水人”,大涨218%!

智药局
2026-06-28 18:07:01
电讯报:英格兰右后卫位置全线崩盘,图赫尔不带阿诺德太荒唐

电讯报:英格兰右后卫位置全线崩盘,图赫尔不带阿诺德太荒唐

懂球帝
2026-06-28 22:20:07
塔雷米:这是一届灾难性的世界杯,足球不该成为政治的一部分

塔雷米:这是一届灾难性的世界杯,足球不该成为政治的一部分

懂球帝
2026-06-27 20:18:28
中国地震局对四川宜宾市高县地震启动三级应急响应

中国地震局对四川宜宾市高县地震启动三级应急响应

澎湃新闻
2026-06-29 01:30:03
2026-06-29 04:16:49
程序员追风 incentive-icons
程序员追风
Java架构学习经验分享
190文章数 5813关注度
往期回顾 全部

科技要闻

DeepSeek最新论文:如何让大模型跑得更快

头条要闻

四川宜宾市高县发生5.5级地震 震中距宜宾28公里

头条要闻

四川宜宾市高县发生5.5级地震 震中距宜宾28公里

体育要闻

两周飞5万公里!因凡蒂诺遭环保人士猛批

娱乐要闻

曾沛慈拿下《乘风2026》年度总冠军

财经要闻

省钱,我只服梁文锋

汽车要闻

搭载华为乾崑六件套 东风奕派M8预售19.98万起

态度原创

教育
时尚
艺术
房产
手机

教育要闻

入学就“锁定”事业编!“振兴龙江”计划,毕业直接就业

夏天裙子不用买多,建议入手一条蓝裙子,清爽高级又耐看

艺术要闻

她不用笔,她用刀

房产要闻

全国高考大放水,300分就能上本科!论上岸率,海南没输过!

手机要闻

iOS 27 Beta 2曝光百度视觉搜索组件,新机蓄势待发中

无障碍浏览 进入关怀版