火了!開(kāi)源的 Python 搶票神器,過(guò)年回家就看這一波了!

春運(yùn)即將到來(lái),搶票回家又該提上日程了!
在 Github 上也有很多優(yōu)秀的開(kāi)發(fā)者開(kāi)源了一些基于 Python 的搶票項(xiàng)目,比如一直很火的12306/py12306,目前已經(jīng)累計(jì)超 40k Star!

但如果你嘗試使用,會(huì)發(fā)現(xiàn)由于 12306 的驗(yàn)證碼機(jī)制升級(jí),這兩個(gè)項(xiàng)目的登陸模塊都掛掉了,大概去年十月就已經(jīng)不能使用。
but 不慌,經(jīng)過(guò)一番探索,我找到了一個(gè)還能完美使用的搶票項(xiàng)目,并聯(lián)系到開(kāi)發(fā)者@罐子里的茶呢,了解到只要對(duì)登陸模塊的一些接口地址進(jìn)行變更,以及對(duì)部分參數(shù)的獲取邏輯進(jìn)行調(diào)整,就能重新盤(pán)活 Python 搶票項(xiàng)目 12306,地址如下
https://github.com/gzldc/12306
本文就將基于該項(xiàng)目詳細(xì)的指導(dǎo)大家如何快速使用 Python 搶票,順利回家!
開(kāi)始之前我們需要了解一下整體搶票思路
下載與依賴(lài)安裝
運(yùn)行本項(xiàng)目之前需要將你的 Python 升級(jí)到 Python3.6 或者更高版本,我是Python3.8 沒(méi)有問(wèn)題。
首先用 git 將原項(xiàng)目代碼拉下來(lái)
git?clone?https://github.com/gzldc/12306.git
或者直接下載壓縮包并解壓

解壓完的目錄應(yīng)該如下
之后啟動(dòng)終端/命令行( Mac/Win ),并 cd 進(jìn)入項(xiàng)目目錄,執(zhí)行如下代碼安裝相關(guān)依賴(lài)
pip?install?-r?requirements.txt
需要注意的是,如果下載速度過(guò)慢可以切換源來(lái)解決,親測(cè)使用阿里云鏡像是速度最快的
https://mirrors.aliyun.com/pypi/simple
關(guān)于安裝各種庫(kù)本文不是本文介紹的重點(diǎn),總之requirements.txt中依賴(lài)庫(kù)必須正確被安裝,如果出現(xiàn)任何安裝上的問(wèn)題,請(qǐng)自行百度
獲取登陸信息
之前我們說(shuō)到,GitHub 排名第一第二的 12306 搶票項(xiàng)目掛掉的原因都是在登陸驗(yàn)證碼沒(méi)法處理上,但我們現(xiàn)在使用的項(xiàng)目并不是使用用戶(hù)名與密碼管理賬戶(hù),只需要在登陸時(shí)提取自己賬戶(hù)的相關(guān) cookie 字段即可,可以按照以下步驟進(jìn)行。
首先打開(kāi) 12306 官網(wǎng),進(jìn)入登陸頁(yè)面并按下 F12,并選擇Network

之后輸入賬號(hào)密碼驗(yàn)證碼點(diǎn)擊登陸,之后點(diǎn)擊XHR

如上圖指示,找到uamauthclient數(shù)據(jù)包進(jìn)入并點(diǎn)擊Cookies,之后按照下圖的指示記錄下tk、RAIL_EXPIRATION、RAIL_DEVICEID三個(gè)字段的value,復(fù)制下來(lái)保存好,待會(huì)要用到

到這里就成功拿到了 12306 校驗(yàn)我們身份的關(guān)鍵信息,讓我們繼續(xù)。
配置搶票信息
現(xiàn)在回到項(xiàng)目目錄,打開(kāi)目錄下的TickerConfig.py進(jìn)行配置,里面有很多字段大家可以自行查看說(shuō)明與配置,本文僅介紹部分關(guān)鍵字段
首先你需要修改 53-55 行的三個(gè)變量值,替換為我們剛剛保存的tk、RAIL_EXPIRATION、RAIL_DEVICEID三個(gè)字段的 value,這一步非常重要,因?yàn)槭褂帽卷?xiàng)目無(wú)需輸入賬號(hào)密碼,就靠這三個(gè)參數(shù)下單
之后如下圖修改乘車(chē)人、車(chē)次、出行日期等相關(guān)信息,這部分自行填寫(xiě),不多解釋了
到這里我們就可以直接使用了,當(dāng)然你還可以繼續(xù)按照這個(gè)模版文件說(shuō)明對(duì) CDN 加速、代理 ip、搶票模式等設(shè)置進(jìn)行調(diào)整,最后保存退出即可
啟動(dòng)項(xiàng)目
最后讓我們啟動(dòng)項(xiàng)目開(kāi)始搶票,回到終端/命令行
執(zhí)行如下代碼開(kāi)啟 CDN 加速
python3?run.py?c

之后掛在后臺(tái),重新打開(kāi)一個(gè)終端/命令行并進(jìn)入項(xiàng)目目錄,執(zhí)行下面代碼開(kāi)始搶票
python3?run.py?r

如上圖所示,不出意外的話(huà)就會(huì)輸出一大堆日志,我選擇的是杭州去蕪湖的票,因?yàn)橛杏嗥?,所以就沒(méi)有進(jìn)入搶票模式,直接就下單待支付了
回到 12306,點(diǎn)開(kāi)我的訂單發(fā)現(xiàn)有一張票躺在那里待支付,說(shuō)明一切從登陸到下單所有功能都是可以正常使用的!
一些說(shuō)明
因?yàn)闀r(shí)間關(guān)系,我沒(méi)有在搶票模式模式下進(jìn)一步測(cè)試,在和項(xiàng)目作者以及部分群友交流后,再說(shuō)明幾點(diǎn)方便大家使用
如果在 Windows 下安裝 tensorflow 失敗,可以適當(dāng)降低版本或者升高版本都是可以的(1.14.0rc\1.14.0rc\1.15.0\1.15.0rc均可) 啟動(dòng)項(xiàng)目時(shí)的?CDN 加速不是必須的,你可以選擇不啟動(dòng)即直接執(zhí)行 python3 run.py rtk 等登陸 cookies 信息可能有一定時(shí)效性,所以可能需要定時(shí)檢查一下 如果是候補(bǔ)車(chē)票,需要通過(guò)人證一致性核驗(yàn)的用戶(hù)及激活的“鐵路暢行”會(huì)員可以提交候補(bǔ)需求,需要按照操作說(shuō)明在鐵路 12306 app 上完成人證核驗(yàn)。 軟件為全自動(dòng)候補(bǔ)加撿漏,如果軟件候補(bǔ)成功則會(huì)停止搶票,發(fā)出郵件通知,但是不會(huì)影響你繼續(xù)撿漏,如果這個(gè)時(shí)候撿漏撿到的話(huà),也是可以付款成功的,也就是說(shuō),撿漏+候補(bǔ)模式可以最大程度提升搶票成功率
-END-
