是不是感覺(jué)市面上的搶票軟件都不管用了妄迁?還是跟我用python來(lái)?yè)屍卑?/p>
如果你對(duì)自己手速和市面上的各種 “加速包” 都沒(méi)什么信心的話寝蹈,不妨試試用程序員的手段搶票?
況且登淘,[12306 官方宣布屏蔽了一大批付費(fèi)搶票軟件]箫老,這也意味著你即使給這些軟件付了會(huì)員費(fèi),也依舊搶不到票形帮。
所以只能回到最初的手動(dòng)搶票槽惫?No!No辩撑!No界斜!
GitHub 上有兩個(gè) “年經(jīng)” 項(xiàng)目,每到春運(yùn)前一段時(shí)間合冀,就會(huì)定時(shí)定點(diǎn)的登頂熱榜各薇,助力一代又一代程序員和姿勢(shì)豐富的非程序員們搶票回家。
那么君躺,這兩個(gè)項(xiàng)目究竟怎么用峭判?好不好用?
和手動(dòng)搶票棕叫、第三方軟件搶票比起來(lái)優(yōu)勢(shì)是否明顯林螃?
安裝使用過(guò)程中,會(huì)不會(huì)遇到不可名狀的 bug俺泣?
今天為大家一一橫評(píng)疗认。
霸占熱榜的兩個(gè)項(xiàng)目
排在 GitHub 熱榜第 1 的項(xiàng)目名字簡(jiǎn)單粗暴,就直接叫 12306伏钠,已經(jīng)有 21300 星横漏,來(lái)自 ID 為 testerSunshine 的作者。
testerSunshine 的 12306 項(xiàng)目可以自動(dòng)登錄用戶賬戶熟掂,能卡點(diǎn)搶票缎浇,也能撿漏候補(bǔ),搶到票后會(huì)通過(guò)郵件進(jìn)行通知赴肚。
排在熱榜第 2 位的素跺,叫做 py12306,目前已有 8300 星誉券,今年初就已經(jīng)非持秆幔火了。
我該選哪個(gè)搶票軟件
那么整體來(lái)看横朋,這兩款開(kāi)源軟件仑乌,哪個(gè)更好用呢?
py12306 從去年開(kāi)始就已經(jīng)被大家廣泛使用,其優(yōu)點(diǎn)是設(shè)置比較簡(jiǎn)潔,甚至還有圖形界面。但是它在驗(yàn)證碼登錄過(guò)程中容易出現(xiàn)下載失敗的情況指蚁,如果把打碼接口從 free 換成 “若快” 平臺(tái),還需要充值蓖捶。
如果你對(duì)運(yùn)行代碼一無(wú)所知,建議使用 py12306.
testerSunshine 的 12306 插件設(shè)置比較復(fù)雜扁远,自動(dòng)獲取 cookie 經(jīng)常失敗俊鱼,因此需要手動(dòng)填寫,這一點(diǎn)比不上 py12306畅买;但是它自帶了開(kāi)發(fā)者的 12306 圖片識(shí)別模型并闲,我們可以在本地完成圖片識(shí)別碼的登錄過(guò)程。
從實(shí)際使用效果來(lái)看谷羞,我們更推薦 testerSunshine 的 12306帝火,目前它在 GitHub 上的高人氣,也反映的用戶們的選擇湃缎。
測(cè)評(píng)細(xì)節(jié) & 使用教程
兩個(gè)搶票插件的關(guān)鍵都在配置文件的修改:testerSunshine/12306 的關(guān)鍵在于 TickerConfig.py犀填,而 py12306 的關(guān)鍵在于 env.py。
熱榜第一:12306
我們先開(kāi)始測(cè)試現(xiàn)在趨勢(shì)榜第一的 12306嗓违,先將項(xiàng)目復(fù)制到本地:
再安裝依賴項(xiàng)九巡,為了避免多 python 環(huán)境產(chǎn)生問(wèn)題,建議以 root 用戶方式安裝:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
下面到了整個(gè)過(guò)程最關(guān)鍵的環(huán)節(jié)蹂季,配置 TickerConfig.py 文件冕广,這一步將決定你的成敗乏盐!非常重要佳窑!
看到配置文件里一長(zhǎng)串字符制恍,你是不是覺(jué)得很頭疼呢父能?我們經(jīng)過(guò)測(cè)試,找到了其中的幾個(gè)關(guān)鍵點(diǎn):
1净神、如果你沒(méi)有搶到票何吝,寄希望于其他人退票后撿漏,令 TICKET_TYPE = 2鹃唯,否則設(shè)置為 1爱榕;
2、STATION_TRAINS可以填入一串你想要搶的車次坡慌,比如北京到合肥方向黔酥,你想購(gòu)買 G267、G29 次列車,就設(shè)置為 STATION_TRAINS = [“G267”, “G29”]跪者,中間用逗號(hào)隔開(kāi)棵帽,不填寫等于搶當(dāng)日全部車次;
3渣玲、STATION_DATES填入你出發(fā)的日期逗概,這一步不難;STATION 和到達(dá)站 TO_STATION 不必精確到具體的站忘衍,只需填入城市逾苫,除非你想從特定站點(diǎn)出發(fā);
5枚钓、乘車人填入你 12306 賬號(hào)中常用聯(lián)系人的姓名铅搓,比如 TICKET_PEOPLES = [“張三”],如果沒(méi)有搀捷,需要登錄 12306 手動(dòng)添加狸吞;
6、填入你的 12306 賬戶名和密碼指煎;
7蹋偏、如果不需要郵箱和 Server 醬提醒,請(qǐng)把 EMAIL_CONF 和 SERVER_CHAN_CONF 的第一項(xiàng)都設(shè)置為 False至壤;
8威始、開(kāi)放搶票時(shí)間根據(jù)自己車次填入,可以提前幾秒像街,比如下午一點(diǎn)開(kāi)發(fā)搶票黎棠,則填入 OPEN_TIME = “12:29:57” ;
9镰绎、cookie 設(shè)置這一步尤為關(guān)鍵脓斩,經(jīng)過(guò)我們實(shí)測(cè),COOKIE_TYPE 設(shè)置為 1 或 2 都有些問(wèn)題畴栖,建議設(shè)置為 3随静;
10、上一步設(shè)置為 3 以后吗讶,還需要手動(dòng)設(shè)置后面的兩個(gè)參數(shù) RAIL_EXPIRATION和RAIL_DEVICEID燎猛。
如何找到這兩個(gè)參數(shù)?先用 Chrome 瀏覽器打開(kāi) 12306.cn照皆,點(diǎn)擊網(wǎng)站地址左邊的 “鎖形” 圖標(biāo):再點(diǎn)擊下發(fā)的 Cookie
接著會(huì)出現(xiàn)一組 Cookie重绷,選擇來(lái)自 12306.cn 的 Cookie:
看到 RAIL_EXPIRATION和RAIL_DEVICEID兩個(gè)參數(shù),點(diǎn)擊它膜毁,將內(nèi)容里的一串字符復(fù)制到配置文件中昭卓。
需要注意的是 RAIL_DEVICEID 參數(shù)很長(zhǎng)愤钾,可能顯示不全,請(qǐng)完整復(fù)制候醒。
至此绰垂,準(zhǔn)備工作已全部完成,啟動(dòng)前請(qǐng)先篩選 cdn火焰,這點(diǎn)很重要劲装!
python3run.pyc
接著啟動(dòng)服務(wù):
python3run.pyr
接著它會(huì)提出登錄成功,并列出當(dāng)日所有相關(guān)車次信息昌简,然后開(kāi)始搶票:
搶票成功后占业,這個(gè)軟件不能幫你完成支付,你還需要在手機(jī)或者電腦上登錄 12306 網(wǎng)站纯赎,在 30 分鐘內(nèi)完成支付動(dòng)作谦疾,否則你辛辛苦苦搶的票就沒(mé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的過(guò)程中裹刮,往往因?yàn)闆](méi)有資料或者沒(méi)人指導(dǎo)從而導(dǎo)致自己不想學(xué)下去了音榜,因此我特意準(zhǔn)備了個(gè)群 827513319 ,群里有大量的PDF書(shū)籍捧弃、教程都給大家免費(fèi)使用赠叼!不管是學(xué)習(xí)到哪個(gè)階段的小伙伴都可以獲取到自己相對(duì)應(yīng)的資料!
將配置中的 WEB_ENABLE 打開(kāi)塔橡,啟動(dòng)程序后訪問(wèn)當(dāng)前主機(jī)地址 + 端口號(hào) (默認(rèn) 8008) 即可梅割,然后在瀏覽器中輸入 http://127.0.0.1:8008霜第。
現(xiàn)在葛家,就可以讓程序幫你搶票啦。
不過(guò)泌类,搶票軟件并非萬(wàn)能癞谒,巧 coder 難為無(wú)票之炊底燎,除了技術(shù),你可能還需要一點(diǎn)點(diǎn)運(yùn)氣弹砚。