五一來了,還沒買到票的朋友,來試下這個(gè)
聽說這個(gè)五一將出現(xiàn)爆發(fā)式的出行,原因是很多人過年沒回家,趕在五一回。我很能理解,因?yàn)槲揖褪瞧渲械囊粏T,自然的,我也沒有買到票,可以這樣說,自從畢業(yè)之后,只要是長點(diǎn)的節(jié)假日,我在 12306 上就沒有買到過回老家的票。
不過沒買到票,也別灰心,我們不是有 Python 嗎,今天再次分享下 12306 的 Python 搶票工具,改下代碼,還能用。
都知道 12306 的登錄驗(yàn)證碼比較奇葩,選擇了圖片驗(yàn)證碼還沒完,還要拖動滑塊,這個(gè)工具就在登錄環(huán)節(jié),里面還搭建了驗(yàn)證碼的識別服務(wù),需要自己搭建,雖然按照它的方法搭建了,依然失敗了,猜測可能與滑塊驗(yàn)證碼有關(guān),作者已經(jīng)快兩年沒有更新了。
其實(shí)只要發(fā)送請求時(shí)攜帶的 cookie 沒有過期,請求就是有效的,想到這,改了改代碼,將原來的用戶名密碼那里添加了 cookie 相關(guān)的信息,在請求的時(shí)候攜帶 cookie ,然后運(yùn)行了下,是可以用的:
下面是使用教程:
下載源代碼
- git clone https://gitee.com/somenzz/get_12306_tickets.git
如果你沒有安裝 git,可以在公眾號「Python七號」回復(fù)「12306」獲取壓縮包,下載后解壓即可。
修改配置文件
進(jìn)入 get_12306_tickets 目錄,可以找到配置文件 TickerConfig.py ,里面有詳細(xì)的注釋,修改好自己要搶票的信息就可以,不再贅述。這里只說下如何獲取 cookie 信息,也就是配置文件的下述信息:
- tk = "hJS61DZ91CYfiz4O3pV_NfKGZ*****9U4UL9hZWg09s1s0"
- RAIL_EXPIRATION = "161918280****"
- RAIL_DEVICEID = "YUhVlabf8dlgF8sL*****_wcL5manb6X1-Ok4MRChkKhQqtgv80Ba1JVTVqqSHwBtfxZhl_aBaz20NMVRe2RingNB93-qDv0wEwhwqyEro8y2WUueNfqfeWL3YEc1q61AEdvVmnNQxXlmt1FdAgvSM1HNoJaJH"
方法就是使用 Chrome 瀏覽器打開 12306 并登錄,然后打開谷歌瀏覽器的開發(fā)者工具,找到 network,點(diǎn)擊 XHR,然后隨意找到一個(gè)接口請求,直到看到對應(yīng)的 cookie 信息,如下圖所示:
然后將上圖中的 cookie 字符串分解填入配置文件 TickerConfig.py 中即可。
制作虛擬環(huán)境,激活,安裝依賴包
- cd get_12306_tickets
- python3 -m venv env
- source env/bin/activate
- pip install -r requirements.txt
加入cdn: python3 run.py c
啟動腳本: python3 run.py r