想要十一回家的小伙伴们, 大概刚刚经历了一波抢票大战.
顺便把一个 Python 抢票工具, 送到了 GitHub 趋势榜第一:
项目名很干脆, 就是 "12306", 标星超过 8.4k, 来自名叫文贤平的程序员.
这很可能是全 GitHub 最德高望重的购票小助手了, 功能一直在更新, 且现已支持 Python 3.6 以上版本.
有些后起之秀, 也是在它的基础上开发出来, 然后广受欢迎:
标星 4k 的 "py12306" 便是其中之一, 它支持分布式抢票.
如果你还没抢到回程的票, 试一下这些 Python 工具吧. 已经有许多人类亲测成功了:
△12306 项目的用户评价
△ py12306 项目的用户评价
以及, 十一后面还有春运, 可以提前做好准备活动嘛.
热榜第一的抢票神器
文贤平 / 文先森 (testerSunshine) 的抢票小助手 "12306", 虽然诞生在 2018 年初, 但最近一次提交代码, 是在今年 9 月 5 日, 现在还十分新鲜.
这只得力的小助手, 思路清晰又紧凑:
从查询余票开始, 到付款完成, 最后获取订单号. 一气呵成, 不怕人类手速太慢.
有了它, 文先森去年就丝滑地抢到了回家的票. 而后, 便努力帮助抢票助手继续进化.
到目前为止, 文先森与一众贡献者, 已经在项目里提交了 361 次代码, 实现的功能有这些:
从更新日志看来, 最近加入的重要功能是候补订单.
所谓候补, 就是在票卖完的情况下预先付款, 等其他人退票之后自动补上, 是我国 2019 年春运才出现的新机制.
但文先森也还不清楚, 这项功能在抢票助手里的需求是怎样的, 所以正在密集地尝试和调整:
在实现新功能的同时, 已有的功能也在不断优化.
这个抢票工具越来越强大, GitHub 标星数量比起年初的 4k, 也已经翻了一番.
随着项目的成长, 文先森在 8 月 31 日宣布了一件重要的事:
放弃支持 Python 2.7, 只支持 3.6 以上版本.
具体的食用方法, 可以从传送门前往项目页观察.
如果, 你在食用过程中遇到了障碍, 使用帮助目录里也没找到解答, 除了发起 Issue, 还可以进群讨论:
把失败的 log 发到群里, 大佬说不定能帮你调出来.
不过, 有了抢票助手, 也不是一定买得到票.
所以, 多试几种工具也是好的, 尤其是可以同时进行多个任务的那种:
分布式抢票助手
一位名叫 pjialin 的程序员, 借鉴了文先森的部分代码实现, 开发了一个分布式工具, 名叫 py12306 购票助手.
就是说, 一台机器抢不到, 可以让许多硬件一起跑.
它还支持多任务 (多班列车) , 多日期, 多账号一起查.
另一个机智的功能是, 同时观察多个始发站和到达站的组合.
比如, 北京出发的票没有了, 就跑去下一站上车; 或者家门口买不到, 就直接买到终点: 愿意妥协但限于手速的小伙伴, 也能交给工具自动查看了.
项目作者说, 试过文先森的算法和 bypass12306, 未果, 这才做出了自己的抢票工具.
用上这个新工具, 他一下子抢到了好几张票.
同样是支持 Python 3.6 以上版本, 这个项目现在也有 4k 标星了.
薪火承传
2010 年初, 官方上线 12306. 从那时起, 程序员就开始用自己的方法查询余票了:
△ 来自李凡希
后来, 越来越多的程序员加入这个队伍, 他们的力量也越发强大, 大到能让 GitHub 垮掉.
2012 年, 一位叫做 iFish 的大佬开发的插件, 被各家浏览器的春节版本纷纷搭载, 12306 官方也引用了里面的一个资源.
就是它, 在 1 月 15 日小高峰来临的时候, 引发了著名的 "12306 订票助手拖垮 GitHub" 事件.
原因是插件的早期版本, 用 GitHub 的 Raw File 服务作 CDN, 且如果返回 403 错误, 就 5 秒重试一次, 永久重试.
iFish 大佬应该不会想到, 巨大的访问量导致 GitHub 受到 DDOS 攻击, 速度扑街. GitHub 甚至想到找人联系 12306 官方, 去除那个引用.
虽然, 当年的事件过去了, 但程序员对回家的渴望还在那里, 就会不断孕育出新的抢票工具, 拯救自己, 拯救世界.
最后, 祝小伙伴们都能顺利回家.
12306 项目传送门:
https://github.com/testerSunshine/12306
py12306 项目传送门:
https://github.com/pjialin/py12306/
来源: http://news.51cto.com/art/201909/602624.htm