传送门/pjialin/py12306/
py12306 购票助手
分布式,多账号,多任务购票
前言
今年回家的票明显要难买很多,早早就答应了父母今年的票没问题,到现在一张票没买到,虽然家里已经订了汽车票,让我不用操心,但是想想他们一行还有小孩,心还是很伤的。 这段时间从 12306Bypass 到 testerSunshine 大佬写的12306,还是没抢到票,索性就自己写了一个,希望也能帮助到更多人
Features
多日期查询余票自动打码下单用户状态恢复电话语音通知多账号、多任务、多线程支持单个任务多站点查询分布式运行Docker 支持动态修改配置文件邮件通知Web 管理页面微信消息通知使用
py12306 需要运行在 python 3.6 以上版本(其它版本暂未测试)
1. 安装依赖
git clone /pjialin/py12306pip install -r requirements.txt
2. 配置程序
cp env.py.example env.py
自动打码
目前支持免费打码,和若快打码
注:免费打码无法保证持续可用,如失效请手动切换到若快平台,需要先到注册一个账号后填写到配置中
语音通知
语音验证码使用的是阿里云 API 市场上的一个服务商,需要到/products/57126001/cmapi019902.html购买后将 appcode 填写到配置中
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 -c env.slave.py
即可快速启动
Docker 使用
1. 将配置文件下载到本地*
docker run --rm pjialin/py12306 cat /config/env.py > env.py# 或curl /pjialin/py12306/master/env.docker.py.example -o env.py
2. 修改好配置后运行
docker run -d -v $(pwd):/config -v py12306:/data pjialin/py12306
当前目录会多一个 12306.log 的日志文件,tail -f 12306.log
Web 管理页面
目前支持用户和任务以及实时日志查看,更多功能后续会不断加入
使用
打开 Web 功能需要将配置中的WEB_ENABLE
打开,启动程序后访问当前主机地址 + 端口号 (默认 8008) 即可,如http://127.0.0.1:8008
更新
19-01-10 支持分布式集群19-01-11 配置文件支持动态修改19-01-12 新增免费打码19-01-14 新增 Web 页面支持19-01-15 新增 钉钉通知新增 Telegram 通知新增 ServerChan 和 PushBear 微信推送截图
Web 管理页面
下单成功
关于防封
目前查询和登录操作是分开的,查询是不依赖用户是否登录,放在 A 云 T 云容易被限制 ip,建议在其它网络环境下运行
交流群274781597
Thanks
感谢大佬testerSunshine,借鉴了部分实现感谢所有提供 pr 的大佬转自git