py12306 README

The project's README from github.com/pjialin/py12306. As one markdown file: README.md.

🚂 py12306 购票助手

分布式,多账号,多任务购票

Features

使用

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. 启动前测试

目前提供了一些简单的测试,包括用户账号检测,乘客信息检测,车站检测等

开始测试 -t

python main.py -t

测试通知消息 (语音, 邮件) -t -n

# 默认不会进行通知测试,要对通知进行测试需要加上 -n 参数 
python main.py -t -n

4. 运行程序

python main.py

参数列表

分布式集群

集群依赖于 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

更新

截图

Web 管理页面

Web 管理页面图片

下单成功

下单成功图片

关于防封

目前查询和登录操作是分开的,查询是不依赖用户是否登录,放在 A 云 T 云容易被限制 ip,建议在其它网络环境下运行

QQ 交流群 780289875,TG 群 Py12306 交流

Online IDE

在 Gitpod 中打开

Thanks

License

Apache License.

py12306 (pjialin/py12306)

Searching Database…

这是什么?一个自己搭建的 12306 抢票助手:它会盯着余票情况,自动识别验证码并帮你下单购票。
这是托管服务,还是要我自己运行?需要自己搭建:它是在你自己的电脑上长期运行的 Python 程序(或 Docker 容器),不断查询 12306 并下单,还可以选择开启 8008 端口上的网页管理界面。
怎么让它跑起来?安装 Python 3.6+ 和相关依赖,然后在配置文件里填入你的 12306 账号和乘车人信息。用 python main.py -t 验证(加上 -n 可以顺便测试通知),再用 python main.py 启动。也支持 Docker 和 docker-compose。
除了 Python 还需要什么?只有想用分布式集群模式才需要 Redis。验证码功能目前只能通过共享识别平台的免费模式使用,电话语音通知则需要从阿里云 API 市场购买 appcode。
自动识别验证码还能用吗?只能用免费模式:原来的付费服务商(若快)已经关停,所以程序现在改接一个免费的共享打码平台。
在云服务器上运行安全吗?README 提醒要谨慎:查询和登录是分开的(查询不需要登录账号),但阿里云、腾讯云这类云服务器的 IP 很容易被限制,所以建议换一个网络环境。
可以免费使用吗?可以 —— 它是基于 Apache 2.0 协议的开源项目;你只需要为它对接的第三方服务付费,比如阿里云的电话语音服务。
能不能在多台机器上组成集群运行?可以 —— 集群模式基于 Redis:一台主节点带多台从节点,主节点挂掉会自动故障转移,配置修改后无需重启就能推送到所有从节点。在配置里开启 CLUSTER_ENABLED,然后用 python main.py -c env.slave.py 启动从节点。
网页管理页面能看到什么?用户、任务和实时日志。在配置里开启 WEB_ENABLED,启动后在浏览器打开本机地址的 8008 端口即可;作者表示后续还会加入更多功能。
怎么知道它抢到票了?它可以通过语音电话通知你(通过阿里云 API 市场的服务商),也可以发送邮件、钉钉、Telegram,或通过 ServerChan(方糖)和 PushBear 推送微信消息。在出发日前用 python main.py -t -n 先测试一遍。
支持同时查询多个日期或车站吗?支持。它可以查询多个日期的余票,一个任务可以覆盖多个车站,还能多账号、多任务、多线程并行运行。
Creator
pjialin
Size
2.4 MB
Stars
15K
Age
7y
Commits · 90 Days