py12306 购票助手 梦里梦外; 2022-03-26 06:20 174阅读 0赞 # 传送门 [https://github.com/pjialin/py12306/][https_github.com_pjialin_py12306] # # py12306 购票助手 # 分布式,多账号,多任务购票 ## 前言 ## 今年回家的票明显要难买很多,早早就答应了父母今年的票没问题,到现在一张票没买到,虽然家里已经订了汽车票,让我不用操心,但是想想他们一行还有小孩,心还是很伤的。 这段时间从 12306Bypass 到 testerSunshine 大佬写的 [12306][],还是没抢到票,索性就自己写了一个,希望也能帮助到更多人 ## Features ## * 多日期查询余票 * 自动打码下单 * 用户状态恢复 * 电话语音通知 * 多账号、多任务、多线程支持 * 单个任务多站点查询 * 分布式运行 * Docker 支持 * 动态修改配置文件 * 邮件通知 * Web 管理页面 * 微信消息通知 ## 使用 ## py12306 需要运行在 python 3.6 以上版本(其它版本暂未测试) **1. 安装依赖** git clone https://github.com/pjialin/py12306 pip install -r requirements.txt **2. 配置程序** cp env.py.example env.py 自动打码 目前支持免费打码,和若快打码 注:免费打码无法保证持续可用,如失效请手动切换到若快平台,需要先到 [http://www.ruokuai.com][http_www.ruokuai.com] 注册一个账号后填写到配置中 语音通知 语音验证码使用的是阿里云 API 市场上的一个服务商,需要到 [https://market.aliyun.com/products/57126001/cmapi019902.html][https_market.aliyun.com_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 https://raw.githubusercontent.com/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][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 管理页面 ### ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1YW5nbWluZ3NreQ_size_16_color_FFFFFF_t_70][] ### 下单成功 ### ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1YW5nbWluZ3NreQ_size_16_color_FFFFFF_t_70 1][] ### 关于防封 ### 目前查询和登录操作是分开的,查询是不依赖用户是否登录,放在 A 云 T 云容易被限制 ip,建议在其它网络环境下运行 交流群 [274781597][] ## Thanks ## * 感谢大佬 [testerSunshine][12306],借鉴了部分实现 * 感谢所有提供 pr 的大佬 转自git [https_github.com_pjialin_py12306]: https://github.com/pjialin/py12306/ [12306]: https://github.com/testerSunshine/12306 [http_www.ruokuai.com]: http://www.ruokuai.com/login [https_market.aliyun.com_products_57126001_cmapi019902.html]: https://market.aliyun.com/products/57126001/cmapi019902.html [http_127.0.0.1_8008]: http://127.0.0.1:8008/ [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1YW5nbWluZ3NreQ_size_16_color_FFFFFF_t_70]: /images/20220326/e0d37e4642d74e5cbf0c3bdf112242c4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1YW5nbWluZ3NreQ_size_16_color_FFFFFF_t_70 1]: /images/20220326/69bc08708e8448cb8f86c4a5c231d891.png [274781597]: http://shang.qq.com/wpa/qunwpa?idkey=8eab0b6402096266a62263c1cd452149926adb5cba7a2b7a98a5adc65869addf
还没有评论,来说两句吧...