传智播客博学谷
微信号:boxuegu-
get最新最全的IT技能
免费领取各种视频资料
每逢春运,就可以用一句话形容:抢票难,难于上青天。
很多人为抢到票花钱买加速包,或者疯狂邀请好友为自己加速,阵势堪比双 11 求赞。
但是,这些加速包真的有用吗?
加速包被吐“无用”
虽然怀疑,但看到加速套餐上飙升的成功率,求票心切的都会决定试一试。
经过测试,不管在哪个软件上都是一个原则:抢票套餐的费用越高,显示抢票的成功率就越大。原理是采用机器代替人工下单,通过自动刷新余票、自动识别验证码、自动提交订单等操作。
但是票源仍在12306平台,抢票成功率仅取决于12306是否还有余票。成功率只是根据往年春运数据得出的,“数字仅供参考”。
所以加速包可能更多的是加的你想买到票的心理,真正能不能起到实质性的作用就不一定了。
12306抢票小助手
花了钱还不一定管用的加速包,你还在求点击吗?
今天给大家介绍一个开源的 Python 抢票程序,亲测有效!我身边已经有很多好友,通过这个程序抢到车票了。不仅免费开源,还非常有用。
GitHub开源地址:
https://github.com/testerSunshine/12306
作者也很用心的把程序的思路给画了出来,整个思路其实就是模拟一个正常人购票的方式,首先查询下车票剩余的票数,如果有座位提交订单,出现验证码这识别验证码,随后就循环点击提交按钮,这里作者就做了很多的条件判断,比如出现异常则重新查询,提交订单失败也重新查询,直至获取订单成功。订票成功之后还有一个通知机制,即发送到你的邮箱里。
项目使用到的 Python 库
接下来我们查看这个项目都用到哪些 Python 库。打开 requirements.txt 文件,这里面把项目所用到的库大致都写了出来。
网络请求用到了经典的 requests 库,而页面解析用到了 bs4 和 beautifulsoup4。有人可能会问这两个解析库有什么区别?bs4 是用在 python3 版本上的,而 beautifulsoup4 是用在 python2 版本上。我最开始学 beautifulsoup 的时候就被这个坑过。
Pillow:Pillow 是很经典的 Python 图像处理库,可以大致猜测作者用这个库来解决简单验证码的问题。
PyYAML:YAML 是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。YAML 类似于 XML,但是语法比 XML 简单得多。PyYAML 是 YAML 的 Python 实现,可以用于参数化 Pytho n对象,用来当做配置文件。
Six:众所周知 Python 2 和 Python 3 版本的分裂给 Python 开发者们带来了很大的烦恼,为了使代码同时兼容两个版本,往往要增加大量的代码。 于是 Six 出现了。正如它的介绍所说,它是一个专门用来兼容 Python 2 和 Python 3 的库。它解决了诸如 urllib 的部分方法不兼容, str 和 bytes 类型不兼容等“知名”问题。
到这里就可以看出作者这个程序是考虑到 Python 不同版本之间的兼容性问题的,简直业界良心。
wrapacache:一个基于 Python 装饰器 Decorators 的方法缓存系统,用于缓存 Python 方法的输出值,可以支持复杂数据类型,可以缓存到 Redis 中、Python dict、LUR 算法存储中。
ntplib:这个库是用来在 window 上同步校准当地时间的。
安装使用
上图在 GitHub 仓库中都有写到。我这里就简单的讲下,首先你需要注册「若快」的打码平台,为了可以让程序自动打码。随后安装程序依赖包,安装方法上面已经写到了。
最后程序有一个很重要的文件叫「ticket_config.yaml」
所有购买车票的信息都是在这个文件里配置的,比如车票时间,12306 账号密码,乘车人信息,通知邮箱等等,作者在文件中都有详细的注释。
把这个配置文件按你的需求填写完毕之后,大家就可以开始运行了。
运行 run.py 文件即可,亲测有效!
领取专属 10元无门槛券
私享最新 技术干货