還沒(méi)買到票?快試試這個(gè)Python開(kāi)源工具,支持多任務(wù)搶票
買了加速包,好久也沒(méi)動(dòng)靜。
能依靠的只有勤勞的雙手,但每天收到的都是12306送來(lái)的溫馨:
家門口沒(méi)票,就買去終點(diǎn);北京沒(méi)票,就坐車去下一站;實(shí)在不行少買幾站上車再補(bǔ)……就算接受一切妥協(xié),也還是失敗。
還好這個(gè)世界有Python,可以彌補(bǔ)人類手速的缺陷。
一位名叫pjialin的程序猿,試用眾多開(kāi)源搶票助手 (包括testerSunshine出品,以及bypass12306) 無(wú)果,就自己寫了新的分布式算法,名曰py12306,剛剛發(fā)布不久。
它可以在一班火車上,觀察許多個(gè)出發(fā)站和到達(dá)站的排列組合,還有其他許多機(jī)智的功能。
有了它,程序猿開(kāi)心地買到了好幾張票。而且,不止他一人親測(cè)成功:
有些小伙伴已在運(yùn)行代碼,也有多人使用前先表示了資瓷,GitHub標(biāo)星與日俱增:
多任務(wù),多日期,多賬號(hào)
py12306購(gòu)票助手,主要功能有這些:
多日期查詢余票· 自動(dòng)打碼下單· 用戶狀態(tài)恢復(fù)· 電話語(yǔ)音通知· 多賬號(hào)多任務(wù)多線程支持· 單個(gè)任務(wù)多站點(diǎn)查詢· 分布式運(yùn)行· Docker支持· 動(dòng)態(tài)修改配置文件· 郵件通知
就像開(kāi)頭提到的,它能在一個(gè)任務(wù) (一班列車) 里,同時(shí)查看多個(gè)出發(fā)站,多個(gè)到達(dá)站;
并且支持多任務(wù) (多班列車) 、多日期、多賬號(hào)一同查看。
總之,是人類難以企及的多線程。
另外,也支持自動(dòng)下單和電話通知。
程序員說(shuō),這個(gè)擁有分布式集群的系統(tǒng),每個(gè)節(jié)點(diǎn)都能處理任務(wù),一個(gè)服務(wù)器掛了不影響其他的。所以,有條件的同學(xué)可以讓好幾臺(tái)服務(wù)器一起刷。
怎么用呢?
首先,程序猿提示,請(qǐng)選用python 3.6以上版本。
第一步,安裝依賴項(xiàng):
第二步,配置程序:
· 自動(dòng)打碼功能
支持免費(fèi)打碼和若快打碼。免費(fèi)打碼無(wú)法保證持續(xù)可用,失效需手動(dòng)切換到若快平臺(tái):
到ruokuai.com注冊(cè)一個(gè)賬號(hào),再填到配置中。
· 語(yǔ)音通知功能
語(yǔ)音驗(yàn)證碼來(lái)自阿里云API市場(chǎng)的一個(gè)服務(wù)商。
要到https://market.aliyun.com/products/57126001/cmapi019902.html 購(gòu)買,再把a(bǔ)ppcode填到配置中。
第三步,啟動(dòng)前測(cè)試:
py12306提供了一些簡(jiǎn)單測(cè)試,比如用戶賬號(hào)檢測(cè),乘客信息檢測(cè),車站檢測(cè)等等。
· 開(kāi)始測(cè)試配置信息 -t
· 測(cè)試通知消息 -t -n
第四步,運(yùn)行程序:
然后,來(lái)觀摩一下程序猿搶到票的喜悅:
還沒(méi)買到票?快試試這個(gè)Python開(kāi)源工具,支持多任務(wù)搶票
訂單提交成功,真是值得慶祝的瞬間,有接二連三的嘆號(hào)為證。
值此良辰,不免要向不幸沒(méi)搶到票的同學(xué)顯擺與沒(méi)買到票的小伙伴分享經(jīng)驗(yàn)。
pjialin把代碼放上GitHub,并對(duì)同樣寫過(guò)購(gòu)票小助手的testerSunshine前輩表示了感謝,因?yàn)橄蚯拜吔梃b了部分實(shí)現(xiàn)。
另外,雖然今年的票買好了,溫柔的程序猿依然在繼續(xù)更新這個(gè)項(xiàng)目:
下一步,可能會(huì)給最后兩個(gè)方框也打上勾:
這里,遙祝pjialin好人一生平安,每年都能輕易買到回家的車票。
4000星的大前輩
方才提到,py12306吸取的經(jīng)驗(yàn)來(lái)自TesterSunshine (文賢平/文先森) 。
文先森的12306購(gòu)票小助手在2018年年初誕生,如今已在搶票界德高望重:目前標(biāo)星4000+,昨天一天上漲200+。
從余票查詢到下單完成,節(jié)奏緊張而明快:
文先森還在項(xiàng)目頁(yè)面掛了兩個(gè)二維碼,方便搶票成功的小伙伴們激動(dòng)地打賞。
如果你還沒(méi)搶到票,也先觀賞一下成功的樣子:
哪個(gè)步驟失敗的話,還可以加群匯報(bào)一下,說(shuō)不定大佬能幫你調(diào)出來(lái):
祝你成功。
程序猿拯救世界
2010年,12306.cn含著祝福來(lái)到這個(gè)世界,于1月30日春運(yùn)首日開(kāi)通試運(yùn)行。
而程序猿用自己的方式查詢余票的活動(dòng),在這之前就已經(jīng)開(kāi)始了 (只要下圖日期沒(méi)有bug) :
△ 來(lái)自名叫李凡希的江蘇少年
或許是職業(yè)敏感,讓程序猿群體早早開(kāi)始擔(dān)心,12306體弱多病,會(huì)令人類買不到票。
只是,(上圖) 這個(gè)古老的項(xiàng)目已經(jīng)404了。
而GitHub上依然健在的、最年長(zhǎng)的訂票助手,可能是iFish在2012年1月9日發(fā)布的瀏覽器插件:
一個(gè)插件,拖垮GitHub
就是這只助手,在2013年1月15日訂票小高峰來(lái)臨之時(shí),引發(fā)了著名的“12306訂票助手拖垮GitHub”事件。
當(dāng)年,許多瀏覽器推出的春節(jié)版本都搭載了這個(gè)插件,連12306官方也引用了項(xiàng)目里的一個(gè)資源。
而插件的早期版本,用GitHub的Raw File服務(wù)作CDN,并且如果返回403錯(cuò)誤,就5秒重試一次,永久重試。
巨大的訪問(wèn)量,導(dǎo)致Github受到DDOS攻擊,速度撲街。GitHub甚至想找人聯(lián)系12306官方,讓對(duì)方去除這個(gè)引用。
iFish大佬,顯然低估了訂票助手的用戶數(shù)。
△ 我要回家了
一個(gè)程序猿想回家,可能沒(méi)有誰(shuí)能阻攔。
畢竟,連GitHub都能拖垮,還怕買不到票?
還是有風(fēng)險(xiǎn)
那么,搶票應(yīng)用會(huì)不會(huì)被河蟹?
新京報(bào)說(shuō),搶票軟件的存在確實(shí)會(huì)擾亂正常的市場(chǎng)購(gòu)票秩序,但搶票軟件提供的服務(wù)屬于在技術(shù)上通過(guò)計(jì)算機(jī)的方式代替人工購(gòu)票,性質(zhì)和黃牛倒票不同。
目前為止,還沒(méi)有搶票軟件受到過(guò)行政處罰。
不過(guò),相關(guān)法規(guī)說(shuō)不定已經(jīng)在路上了。
所以,有資源的好時(shí)節(jié),大家一定要珍惜啊。
py12306購(gòu)票小助手傳送門 (pjialin) :
https://github.com/pjialin/py12306/
12306購(gòu)票小助手 (testerSunshine) :
https://github.com/testerSunshine/12306
12306.CN訂票助手 (iFish) :
https://github.com/iccfish/12306_ticket_helper
— 完 —