大家好,我是 zeroing~
馬上該過年了,不知道大家都買到回家的票了沒?每到年末,票就變得特別難搞,今年因為疫情管控可能要比往年好一點,但依舊不好搶,,,
對於路途相對較遠的小夥伴,一旦錯過了最佳放票時機,之後搶到票的的可能性很小,因為跟你一起競爭搶票的大部分都不是人而是自動化程序,在一秒之內就能完成購票下單的那種(當然,也是在有票的前提下)
今天呢,給大家介紹一個 12306搶票 相關的開源項目,並手把手教大家把程序跑起來,希望我們大家都能搶到回家的票
在 Github 上搜索關鍵詞 12306 能搜到好多相關開源項目,star 最高的有 29.3k ,但根據項目更新日誌(最近更新是13個月之前)來看,時效性有待驗證
這個項目的配置過程很簡單,只需要配置用戶名跟密碼即可,我試著本地跑了一下;驗證碼識別步驟是沒問題,但是在登錄(Cookie 自動收集驗證時)步驟不太行了
star目前 已有260+ ,我自己也測試了一下可用,用來搶票的話是沒有問題的,效果如下;
下面我將介紹一下這個項目的具體配置步驟
1, 下載倉庫到本地
該項目的Github 地址:https://github.com/gzldc/12306
首先把下載原項目到本地,下載時是建議不要用 git 命令,會比較慢,直接點下方的 Download ZIP按鈕即可
把下載好的項目進行解壓,解壓後的目錄如下(沒有venv文件夾,venv 指的是虛擬環境)
這裡需要說一下,因為項目需要依賴項 Tensorflow ,Tensorflow 目前僅支持 Python 3.6-3.8,且為 64 位的,請確保自己的 Python 版本是否符合這個要求;我用的是 Python 3.7.6 、64 位, 進行測試,一切 正常
2,創建虛擬環境、安裝依賴項
創建虛擬環境的主要目的防止項目所需配置項與系統自帶的產生衝突,為項目創建一個虛擬環境,可以用pipenv、virtualenv 命令行命令,也可以藉助 Pycharm 中的 Project Interpreter 選項進行配置,我配置時藉助的是 Pycharm
安裝依賴項,在項目根目錄下打開終端,在虛擬環境下輸入下方命令配置項目所需要的依賴項
pip install -r requirements.txt
3,添加Cookie,更改項目配置
依賴項配置完成之後,打開項目文件目錄下的 TickerConfig.py 這個文件存放的是程序需要的配置信息,在50-55行左右,找到 三個參數 tk、RAIL_EXPIRATION、RATI_DEVICEID , 這三個參數的信息都在 Cookie 中,需要手動配置
如何找到找到 Cookie 呢?首先用瀏覽器打開 12306,用自己的帳號進行登錄,完成之後按快捷鍵 F12 或滑鼠右鍵找到 審查選項,點擊網頁開發者模式,Network->XHR,如下圖
如果上方右邊頁面為空的話,刷新一下網頁即可,
點擊 XHR 中的 initMy...網頁,Request Headers 選項下的 Cookies 就是程序需要的信息
Cookie 中只需要其中的3項,找到 tk、RAIL_EXPIRATION、RATI_DEVICEID 這三項,依次填入配置文件中即可,注意只需填入等號之後分號之前的字符串
Cookie 配置完之後,接下來就是一些基本信息的配置,例如日期、乘車人、座位等,重新進入TickerConfig.py 腳本
TICKET_TYPE,刷票模式,(默認1 就行),SATION_DATES、出發日期OPEN_TIME ,預售放票時間(建議為空);
FROM_STATION,出發地TO_STATION,目的地SET_TYPE,座位IS_MORE_TICKET,單張填 True,多張填 False
TICKET_PEOPLES,自己帳戶中的乘客信息(需要提前在帳戶中配置好)USER , 默認即可,不需要填PWD,默認即可,不需要填tk,RAIL_EXPIRATION,RAIL_DEVICEID ,Cookie 中的內容,參考文章前面提配置教程;後面11 字符是配置中需要更改的參數就是上面提到的這些,到這裡環境配置基本 OK,接下來就是要啟動程序
4,啟動程序,開始搶票
在終端處,先輸入
python run.py c加入 cdn,程序中用到了代理池,所以提前先啟動一下代理池,把一些不能用的代理給剔除掉,cdn 運行效果如下(這個步驟耗時相對長一些,請耐心等待)
cdn 加載完成之後,輸入以下命令
python run.py r啟動腳本進行搶票,最終效果如下:
搶到票之後,需要用戶在30分鐘之內完成支付,否則票會被系統回收;因此程序中還添加了郵箱提醒、微信提醒等功能,這裡我沒有做詳細介紹,小夥伴們感興趣的話可以自行研究一下
5,後記
上面的步驟雖然很詳細,但可能由於環境配置的一點差異,第一次部署時可能依然存在一些 bug 問題,下面的兩條是我在配置中遇到的,小夥伴們可以參考一下(沒遇到更好)
1,AttributeError : 'str' object has no attribute 'decode'
報錯信息如下
model_config = json.loads(model_config.decode('utf-8'))AttributeError: 'str' object has no attribute 'decode'出現上面這個錯誤是由於 安裝的一個包 h5py版本過高,
解決方法:通過 pip install h5py==2.10.0 降低版本即可;
2,tk 失效
是由於步驟 3 中的Cookie信息過期了,解決方法,按照步驟 3 的方法重新配置一下 tk 即可,後面的兩個參數基本不會發生變化;
以上就是本篇文章的全部內容了,希望文章對大家有所幫助,最後感謝大家閱讀!
免責聲明,本教程僅作為個人學習研究使用,不得用於任何商業用途,否則後果自負!