春節搶票正在如火如荼的進行,過年回家那肯定需要搶票,每年的搶票大戰,都是一場硬戰,沒有一個好工具,怎麼能上戰場死鎖呢。今天我推薦一個Python搶票工具,送到了GitHub趨勢榜第一:
項目名很乾脆,就是「12306」,標星超過1.2W,來自名叫文賢平的程式設計師。
這很可能是全GitHub最德高望重的購票小助手了,功能一直在更新,且現已支持Python 3.6以上版本。
有些後起之秀,也是在它的基礎上開發出來,然後廣受歡迎:
標星5k的「py12306」便是其中之一,它支持分布式搶票。
如果你還沒搶到回程的票,試一下這些Python工具吧。已經有許多人類親測成功了:
使用
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 已對接到打碼共享平台,py12306-helper.pjialin.com,歡迎參與分享
語音通知
語音驗證碼使用的是阿里雲 API 市場上的一個服務商,需要到 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
參數列表
- -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
更新
- 19-01-10支持分布式集群
- 19-01-11配置文件支持動態修改
- 19-01-12新增免費打碼
- 19-01-14新增 Web 頁面支持
- 19-01-15新增 釘釘通知新增 Telegram 通知新增 ServerChan 和 PushBear 微信推送
- 19-01-18新增 CDN 查詢