1. 程式人生 > 實用技巧 >火了!開源的Python搶票神器,過年回家就看這一波了!

火了!開源的Python搶票神器,過年回家就看這一波了!

大家好,我是小白。

春運即將到來,搶票回家又該提上日程了!在Github上也有很多優秀的開發者開源了一些基於Python的搶票專案,比如一直很火的12306/py12306,目前已經累計超40k Star!

但如果你嘗試使用,會發現由於12306的驗證碼機制升級,這兩個專案的登陸模組都掛掉了,大概去年十月就已經不能使用。

but不慌,經過一番探索,我找到了一個還能完美使用的搶票專案,並聯繫到開發者@罐子裡的茶呢,瞭解到只要對登陸模組的一些介面地址進行變更,以及對部分引數的獲取邏輯進行調整,就能重新盤活Python搶票專案12306,地址如下

https://github.com/gzldc/12306

本文就將基於該專案詳細的指導大家如何快速使用Python搶票,順利回家!開始之前我們需要了解一下整體搶票思路

下載與依賴安裝

執行本專案之前需要將你的Python升級到Python3.6或者更高版本,我是Python3.8沒有問題。首先用git將原專案程式碼拉下來

gitclonehttps://github.com/gzldc/12306.git

或者直接下載壓縮包並解壓

解壓完的目錄應該如下

之後啟動終端/命令列(Mac/Win),並cd進入專案目錄,執行如下程式碼安裝相關依賴

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:810735403

pip install -r requirements.txt

需要注意的是,如果下載速度過慢可以切換源來解決,親測使用阿里雲映象是速度最快的

https://mirrors.aliyun.com/pypi/simple

關於安裝各種庫本文不是本文介紹的重點,總之requirements.txt中依賴庫必須正確被安裝,如果出現任何安裝上的問題,請自行百度。

獲取登陸資訊

之前我們說到,GitHub排名第一第二的12306搶票專案掛掉的原因都是在登陸驗證碼沒法處理上,但我們現在使用的專案並不是使用使用者名稱與密碼管理賬戶,只需要在登陸時提取自己賬戶的相關cookie欄位即可,可以按照以下步驟進行。

首先開啟12306官網,進入登陸頁面並按下F12,並選擇Network

之後輸入賬號密碼驗證碼點選登陸,之後點選XHR

如上圖指示,找到uamauthclient資料包進入並點選Cookies,之後按照下圖的指示記錄下tkRAIL_EXPIRATIONRAIL_DEVICEID三個欄位的value,複製下來儲存好,待會要用到

到這裡就成功拿到了12306校驗我們身份的關鍵資訊,讓我們繼續。

配置搶票資訊

現在回到專案目錄,開啟目錄下的TickerConfig.py進行配置,裡面有很多欄位大家可以自行檢視說明與配置,本文僅介紹部分關鍵欄位。

首先你需要修改53-55行的三個變數值,替換為我們剛剛儲存的tkRAIL_EXPIRATIONRAIL_DEVICEID三個欄位的value,這一步非常重要,因為使用本專案無需輸入賬號密碼,就靠這三個引數下單

之後如下圖修改乘車人、車次、出行日期等相關資訊,這部分自行填寫,不多解釋了

到這裡我們就可以直接使用了,當然你還可以繼續按照這個模版檔案說明對CDN加速、代理ip、搶票模式等設定進行調整,最後儲存退出即可。

啟動專案

最後讓我們啟動專案開始搶票,回到終端/命令列。執行如下程式碼開啟CDN加速

python3 run.py c

之後掛在後臺,重新開啟一個終端/命令列並進入專案目錄,執行下面程式碼開始搶票

python3 run.py r

如上圖所示,不出意外的話就會輸出一大堆日誌,我選擇的是杭州去蕪湖的票,因為有餘票,所以就沒有進入搶票模式,直接就下單待支付了

回到12306,點開我的訂單發現有一張票躺在那裡待支付,說明一切從登陸到下單所有功能都是可以正常使用的!

一些說明

因為時間關係,我沒有在搶票模式模式下進一步測試,在和專案作者以及部分群友交流後,再說明幾點方便大家使用

  • 如果在Windows下安裝tensorflow失敗,可以適當降低版本或者升高版本都是可以的(1.14.0rc\1.14.0rc\1.15.0\1.15.0rc均可)

  • 啟動專案時的CDN加速不是必須的,你可以選擇不啟動即直接執行python3 run.py r

  • tk等登陸cookies資訊可能有一定時效性,所以可能需要定時檢查一下

  • 如果是候補車票,需要通過人證一致性核驗的使用者及啟用的“鐵路暢行”會員可以提交候補需求,需要按照操作說明在鐵路12306app上完成人證核驗。

  • 軟體為全自動候補加撿漏,如果軟體候補成功則會停止搶票,發出郵件通知,但是不會影響你繼續撿漏,如果這個時候撿漏撿到的話,也是可以付款成功的,也就是說,撿漏+候補模式可以最大程度提升搶票成功率

最後,如果你看上面的使用步驟有些吃力,可以點選下方小程式觀看b站up主@罐子裡的茶呢製作的視訊,手把手教你搶票

在這裡還是要推薦下我自己建的Python開發交流學習(qq)群:810735403,群裡都是學Python開發的,如果你正在學習Python ,歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有Python軟體開發相關的),包括我自己整理的一份2021最新的Python進階資料和高階開發教程,歡迎進階中和想深入Python的小夥伴!