火车票被秒光,别慌!快用Python来抢票!

点击“Python编程与实战”,选择“置顶公众号”

第一时间获取 Python 技术干货!


2019年接近尾声,距离春节回家的日子越来越近,有没有很激动啊!要回家过年啦!

回家过年最重要的事情当然是抢火车票,这里有张图,务必记得收藏!!!

然而大多数人遇到的情况是这样的,当你满心期待摩拳擦掌准备抢票的时候,你会发现一票难求!想回趟家真难!

那么作为程序猿的你,当然要用程序猿的方式来抢票!下面介绍几款在 github 上面很火的抢票工具!

testerSunshine/12306

目前 GitHub 上面最火的抢票软件,基于 Python 编写。支持以下功能:

  • 自动打码

  • 自动登录

  • 准点预售和捡漏

  • 智能候补

  • 邮件通知

  • server酱通知

该项目用到了 Tensorflow、keras、sklearn 等深度学习模型训练,当然还有爬虫。我们可以来看下项目的依赖的库:

emmm 居然还用到了 selenium  这个自动化工具…项目核心是验证码识别和爬虫

  • 验证码目前可以本地识别,需要下载模型,放于项目根目录,全部代码来源于此项目 传送门,表示感谢

      1\. 模型下载链接:https://pan.baidu.com/s/1rS155VjweWVWIJogakechA  密码:bmlm
         群里面也可以下载
      2\. git仓库下载:https://github.com/testerSunshine/12306model.git
    
  • 自托管云打码服务器搭建:12306_code_server

  • 如果大家有空闲的服务器,可搭建之后在这个 issues 里面填入自己的服务器(请注意服务器安全!)

请注意最好不要在 window 环境下使用,因为 Tensorflow 在 window 下安装会有很多的问题!

上面是项目的架构流程图,可以来看下买票的日志例子:

正在第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分钟内完成支付!

感谢作者!这是项目地址:https://github.com/testerSunshine/12306

pjialin/py12306

pjialin/py12306: 另一个基于 Python 的抢票项目,目前 Github 的 star 达到了 9.4k !我去年就是凭借这款软件抢到回家的票的!

我们来看下支持的功能吧:

  • 多日期查询余票

    自动打码下单

    用户状态恢复

    电话语音通知

    多账号、多任务、多线程支持

    单个任务多站点查询

    分布式运行

    Docker 支持

    动态修改配置文件

    邮件通知

    Web 管理页面

    微信消息通知

    x 代理池支持 (pyproxy-async)

一个分布式的抢票项目,同时也支持自动打码不过是调用的打码平台,不像上面那个是用训练的模型来打码。不过这个项目有个 web 管理页面,是基于 Py't'hon 中的框架 Flask 开发的。据作者说他那时候在12306没抢到票,所以有花了几天时间开发的…我还能说什么… 强!

上图是依赖包,在 windows 下也能友好使用。主要特点:

分布式集群

集群依赖于 redis,目前支持情况

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

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

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

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

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

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

后台管理界面也很美观简洁:

下面的程序运行界面:

项目地址:https://github.com/pjialin/py12306,请大力 star 吧!

12306bypass

这个工具相信大家都听说过,分流抢票。简直神器,现在也支持候补了,这软件我也一直在用,那是相当的给力!而且是2013年开发的,一直是免费免费!如果你要自动打码,只要20元年费即可,可以打码一年!

该软件也是因为作者那时候没抢到票,遂开发此软件,看到没,不由得感叹需求才是最大的生产力!

软件作者:Cheney.小风,基于微软.Net开发的抢火车票程序,而且当时作者还在上大学!

背后的故事,这款软件相信大家毕竟熟悉,就不多说了,详情可以去官网膜拜。https://www.bypass.cn/about.html

感谢上面三位大神,这么些年我从来没找过黄牛买票,都是用上面的软件抢的,重要的是免费,免费!

—— 推 荐 阅 读 ——

Flask 蓝图机制及应用

JS逆向之新榜登录

JS逆向 | 防脱发的秘诀

JS逆向实战之混淆加密和AES加密的破解

THANKS

- End -

点个“在看”必升职加薪喔

#这只是一个半成品,只是实现了,一个完整的订票过程,对于,如果刷票,自己研究 #简单过程 # 第一、getRandAndCookie() 获得cook 和一个随机数用于登录 # 第二、getEnterRandCode() 得到登录的识别码 # 第三、setuseandpassword(randcode,use,password) 发送随机数、识别码和用户及密码。由于随机数只在内部使用,所以定义成了全局变量, # 第四、GetTrainList() 得到所有车站列表,'@bjb|北京北|VAP|beijingbei|bjb|0' 其文、拼音、拼音缩写、所一个ID(唯一),其主要是可以,通过上面的列表,找到它的唯一ID,TranCityToId('南昌') # 第五、GetTrainNumList(date,fromstationid,tostationid,starttime) 得到哪到哪的所在车次,消息格式如下,其所以,一下车次的的ID:"id":"650000K1060I" # {"end_station_name":"北京西","end_time":"16:18","id":"650000K1060I","start_station_name":"深圳","start_time":"10:54","value":"K106"} # 通过ChangeToTrainNumId('K106')得到车次ID # 第六、QueryTrain(fromstationid,tostationid,date,stationNum,starttime) 就是点击查询按键,得到是否有能预订,格式如下 #       南昌         20:12,    北京西        07:38,11:26,--,--,--,--,10,有,有,--,有,有,--,<a name='btn130_2' class='btn130_2' # 通过choiceSubmitNum(stationNum,trainsubmitinfo)提取出getSelected()消息 # 第七、submitRequest(choiceSubmitNum(stationNum,trainsubmitinfo),date,starttime) 就是点击预订按钮 # 第八、getrandCheckCode()得到提交订单的识别码 # 第十、CheckInMyTicket(info,randcode,peoples)点击提交,如果成功的话,就会返回{"errMsg":"Y"} # 出于,网络是UTF8格式,所以,必须# -*- coding: utf-8 -*-,(当然,自己转换也是可以的) # 出于这一个控制台信息,所以,识别码的图片在脚本同一目录 #得到头信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全村之希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值