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 — только если хотите распределённый режим кластера. Распознавание капч сейчас работает только в бесплатном режиме через общую платформу распознавания, а для голосовых звонков-уведомлений нужен appcode, купленный в маркетплейсе API Aliyun.
Автоматическое распознавание капч ещё работает?Только в бесплатном режиме: изначальный платный провайдер (RuoKuai) закрылся, поэтому приложение теперь подключается к бесплатной общей платформе распознавания капч.
Безопасно ли запускать его на облачном сервере?README советует быть осторожным: запросы и вход в систему разделены (для запросов не нужен залогиненный аккаунт), но облачные IP вроде Alibaba Cloud или Tencent Cloud легко попадают под ограничения, поэтому рекомендуется другая сетевая среда.
Это бесплатно?Да — проект с открытым кодом под лицензией Apache 2.0; платить придётся только за сторонние сервисы, которые он использует, например за провайдера голосовых звонков Aliyun.
Можно запустить его на нескольких машинах как кластер?Да — режим кластера работает на Redis: один мастер и несколько подчинённых узлов, автоматическое переключение при падении мастера, изменения конфигурации рассылаются всем подчинённым узлам без перезапуска. Включите CLUSTER_ENABLED в конфигурации и запустите подчинённый узел командой python main.py -c env.slave.py.
Что видно на веб-странице управления?Пользователей, задачи и логи в реальном времени. Включите WEB_ENABLED в конфигурации и после запуска откройте адрес вашей машины на порту 8008; автор говорит, что возможностей будет больше.
Как я пойму, что билет куплен?Он может позвонить вам с голосовым сообщением (через провайдера из маркетплейса API Aliyun), отправить email, DingTalk, Telegram или push в WeChat через ServerChan и PushBear. Проверьте их командой python main.py -t -n до дня вылова билетов.
Можно искать по нескольким датам или станциям сразу?Да. Он может искать оставшиеся билеты по нескольким датам, одна задача может охватывать несколько станций, и он запускает несколько аккаунтов, задач и потоков параллельно.
Creator
pjialin
Size
2.4 MB
Stars
15K
Age
7y
Commits · 90 Days