PY12306,是一款免费开源的购票助手,优点是分布式,多账号,多任务进行购票,目前已有WEB管理界面!
开源地址
PY12306-GitHub:https://github.com/pjialin/py12306
功能
- 多日期查询余票
- 自动打码下单
- 用户状态恢复
- 电话语音通知
- 多账号、多任务、多线程支持
- 单个任务多站点查询
- 分布式运行
- Docker 支持
- 动态修改配置文件
- 邮件通知
- Web 管理页面
- 微信消息通知
-
代理池支持 (pyproxy-async)(未开发)
安装使用
PY12306 需要运行在 python 3.6 以上版本(其它版本暂未测试)
1、安装依赖
git clone https://github.com/pjialin/py12306 pip install -r requirements.txt
2、配置程序
cp env.py.example env.py
自动打码:
(若快已停止服务,目前只能设置free打码模式) free 已对接到打码共享平台,https://py12306-helper.pjialin.com,欢迎参与分享
语音通知:
语音验证码使用的是阿里云 API 市场上的一个服务商,需要到 https://market.aliyun.com/products/56928004/cmapi026600.html 购买后将 appcode 填写到配置中
3、启动前测试
目前提供了一些简单的测试,包括用户账号检测,乘客信息检测,车站检测等
python main.py -t # 开始测试 -t
# 测试通知消息,默认不会进行通知测试,要对通知进行测试需要加上 -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.py -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 --rm --name py12306 -p 8008:8008 -d -v $(pwd):/config -v py12306:/data pjialin/py12306
当前目录会多一个 12306.log 的日志文件, tail -f 12306.log
Docker-compose 中使用
1、复制配置文件
cp docker-compose.yml.example docker-compose.yml
2、从 docker-compose 运行
在 docker-compose.yml
所在的目录使用命令
docker-compose up -d
Web 管理页面
目前支持用户和任务以及实时日志查看,更多功能后续会不断加入
使用:
打开 Web 功能需要将配置中的 WEB_ENABLE 打开,启动程序后访问当前主机地址 + 端口号 (默认 8008) 即可,如 http://127.0.0.1:8008