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 註冊一個賬號後填寫到配置中

語音通知

語音驗證碼使用的是阿里雲 API 市場上的一個服務商,需要到 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

更新

  • 19-01-10
    • 支持分佈式集羣
  • 19-01-11
    • 配置文件支持動態修改
  • 19-01-12
    • 新增免費打碼
  • 19-01-14
    • 新增 Web 頁面支持
  • 19-01-15
    • 新增 釘釘通知
    • 新增 Telegram 通知
    • 新增 ServerChan 和 PushBear 微信推送

截圖

Web 管理頁面

 

下單成功

 

關於防封

目前查詢和登錄操作是分開的,查詢是不依賴用戶是否登錄,放在 A 雲 T 雲容易被限制 ip,建議在其它網絡環境下運行

交流羣 274781597

Thanks

  • 感謝大佬 testerSunshine,借鑑了部分實現
  • 感謝所有提供 pr 的大佬

轉自git

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章