是不是感覺市面上的搶票軟件都不管用了?還是跟我用python來搶票把
如果你對自己手速和市面上的各種 “加速包” 都沒什么信心的話,不妨試試用程序員的手段搶票?
況且,[12306 官方宣布屏蔽了一大批付費(fèi)搶票軟件],這也意味著你即使給這些軟件付了會員費(fèi),也依舊搶不到票。
所以只能回到最初的手動搶票?No!No!No!
GitHub 上有兩個(gè) “年經(jīng)” 項(xiàng)目,每到春運(yùn)前一段時(shí)間,就會定時(shí)定點(diǎn)的登頂熱榜,助力一代又一代程序員和姿勢豐富的非程序員們搶票回家。

那么,這兩個(gè)項(xiàng)目究竟怎么用?好不好用?
和手動搶票、第三方軟件搶票比起來優(yōu)勢是否明顯?
安裝使用過程中,會不會遇到不可名狀的 bug?
今天為大家一一橫評。
霸占熱榜的兩個(gè)項(xiàng)目
排在 GitHub 熱榜第 1 的項(xiàng)目名字簡單粗暴,就直接叫 12306,已經(jīng)有 21300 星,來自 ID 為 testerSunshine 的作者。
testerSunshine 的 12306 項(xiàng)目可以自動登錄用戶賬戶,能卡點(diǎn)搶票,也能撿漏候補(bǔ),搶到票后會通過郵件進(jìn)行通知。
排在熱榜第 2 位的,叫做 py12306,目前已有 8300 星,今年初就已經(jīng)非?;鹆?。
我該選哪個(gè)搶票軟件
那么整體來看,這兩款開源軟件,哪個(gè)更好用呢?
py12306 從去年開始就已經(jīng)被大家廣泛使用,其優(yōu)點(diǎn)是設(shè)置比較簡潔,甚至還有圖形界面。但是它在驗(yàn)證碼登錄過程中容易出現(xiàn)下載失敗的情況,如果把打碼接口從 free 換成 “若快” 平臺,還需要充值。

如果你對運(yùn)行代碼一無所知,建議使用 py12306.
testerSunshine 的 12306 插件設(shè)置比較復(fù)雜,自動獲取 cookie 經(jīng)常失敗,因此需要手動填寫,這一點(diǎn)比不上 py12306;但是它自帶了開發(fā)者的 12306 圖片識別模型,我們可以在本地完成圖片識別碼的登錄過程。
從實(shí)際使用效果來看,我們更推薦 testerSunshine 的 12306,目前它在 GitHub 上的高人氣,也反映的用戶們的選擇。
測評細(xì)節(jié) & 使用教程
兩個(gè)搶票插件的關(guān)鍵都在配置文件的修改:testerSunshine/12306 的關(guān)鍵在于 TickerConfig.py,而 py12306 的關(guān)鍵在于 env.py。
熱榜第一:12306
我們先開始測試現(xiàn)在趨勢榜第一的 12306,先將項(xiàng)目復(fù)制到本地:

再安裝依賴項(xiàng),為了避免多 python 環(huán)境產(chǎn)生問題,建議以 root 用戶方式安裝:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
下面到了整個(gè)過程最關(guān)鍵的環(huán)節(jié),配置 TickerConfig.py 文件,這一步將決定你的成敗!非常重要!
看到配置文件里一長串字符,你是不是覺得很頭疼呢?我們經(jīng)過測試,找到了其中的幾個(gè)關(guān)鍵點(diǎn):
1、如果你沒有搶到票,寄希望于其他人退票后撿漏,令 TICKET_TYPE = 2,否則設(shè)置為 1;

2、STATION_TRAINS可以填入一串你想要搶的車次,比如北京到合肥方向,你想購買 G267、G29 次列車,就設(shè)置為 STATION_TRAINS = [“G267”, “G29”],中間用逗號隔開,不填寫等于搶當(dāng)日全部車次;

3、STATION_DATES填入你出發(fā)的日期,這一步不難;STATION 和到達(dá)站 TO_STATION 不必精確到具體的站,只需填入城市,除非你想從特定站點(diǎn)出發(fā);

5、乘車人填入你 12306 賬號中常用聯(lián)系人的姓名,比如 TICKET_PEOPLES = [“張三”],如果沒有,需要登錄 12306 手動添加;

6、填入你的 12306 賬戶名和密碼;

7、如果不需要郵箱和 Server 醬提醒,請把 EMAIL_CONF 和 SERVER_CHAN_CONF 的第一項(xiàng)都設(shè)置為 False;
8、開放搶票時(shí)間根據(jù)自己車次填入,可以提前幾秒,比如下午一點(diǎn)開發(fā)搶票,則填入 OPEN_TIME = “12:29:57” ;

9、cookie 設(shè)置這一步尤為關(guān)鍵,經(jīng)過我們實(shí)測,COOKIE_TYPE 設(shè)置為 1 或 2 都有些問題,建議設(shè)置為 3;

10、上一步設(shè)置為 3 以后,還需要手動設(shè)置后面的兩個(gè)參數(shù) RAIL_EXPIRATION和RAIL_DEVICEID。

如何找到這兩個(gè)參數(shù)?先用 Chrome 瀏覽器打開 12306.cn,點(diǎn)擊網(wǎng)站地址左邊的 “鎖形” 圖標(biāo):再點(diǎn)擊下發(fā)的 Cookie

接著會出現(xiàn)一組 Cookie,選擇來自 12306.cn 的 Cookie:

看到 RAIL_EXPIRATION和RAIL_DEVICEID兩個(gè)參數(shù),點(diǎn)擊它,將內(nèi)容里的一串字符復(fù)制到配置文件中。

需要注意的是 RAIL_DEVICEID 參數(shù)很長,可能顯示不全,請完整復(fù)制。
至此,準(zhǔn)備工作已全部完成,啟動前請先篩選 cdn,這點(diǎn)很重要!
python3run.pyc
接著啟動服務(wù):
python3run.pyr
接著它會提出登錄成功,并列出當(dāng)日所有相關(guān)車次信息,然后開始搶票:

搶票成功后,這個(gè)軟件不能幫你完成支付,你還需要在手機(jī)或者電腦上登錄 12306 網(wǎng)站,在 30 分鐘內(nèi)完成支付動作,否則你辛辛苦苦搶的票就沒了。

熱榜第二:py12306
py12306 的安裝方式與前者類似:

然后修改配置文件,現(xiàn)更改后綴名
cpenv.py.exampleenv.py
默認(rèn)配置文件中需要修改的選項(xiàng)有:
1、你的 12306 賬戶和密碼;

2、查詢?nèi)蝿?wù) QUERY_JOBS 中的各項(xiàng)參數(shù),包括出發(fā)日期 left_dates、出發(fā)站 left 和到達(dá)站 arrive、乘客姓名 members、坐席 seats、車次 train_numbers;

接著運(yùn)行程序:
python3main.py
如果你不善于使用命令行模式,還可以使用圖形界面觀察搶票任務(wù)。
在學(xué)習(xí)Python的過程中,往往因?yàn)闆]有資料或者沒人指導(dǎo)從而導(dǎo)致自己不想學(xué)下去了,因此我特意準(zhǔn)備了個(gè)群 827513319 ,群里有大量的PDF書籍、教程都給大家免費(fèi)使用!不管是學(xué)習(xí)到哪個(gè)階段的小伙伴都可以獲取到自己相對應(yīng)的資料!
將配置中的 WEB_ENABLE 打開,啟動程序后訪問當(dāng)前主機(jī)地址 + 端口號 (默認(rèn) 8008) 即可,然后在瀏覽器中輸入 http://127.0.0.1:8008。

現(xiàn)在,就可以讓程序幫你搶票啦。
不過,搶票軟件并非萬能,巧 coder 難為無票之炊,除了技術(shù),你可能還需要一點(diǎn)點(diǎn)運(yùn)氣。