買到回家的票了嗎?用Python刷票,還不快來試試!
項(xiàng)目地址:https://github.com/testerSunshine/12306
又是一年春運(yùn)高潮來臨,搶票回家成了老大難題。除了 12306 官網(wǎng)和官方 APP,各種第三方搶票軟件也是層出不窮。就算朋友圈沒被搶票小程序刷屏,聊天群也被刷了吧?
然而,春運(yùn)的火爆,光靠這些小程序還是難以滿足大家的要求。小編***天搶票時(shí),看著放票的瞬間,所有票種都變成紅色時(shí)就明白了這個(gè)道理(哭)……機(jī)器之心小編們的日常問好都由「你吃了嗎?」變成「你搶到了嗎?」== 搶票之難,難于上青天……
這一點(diǎn),通過票圈的畫風(fēng),可見一斑↓↓
吐槽風(fēng):
跪求加速風(fēng):
不過!小編今天很開心,因?yàn)榻裉欤覀兛吹搅艘粋€(gè)有趣的項(xiàng)目。在大家「嗷嗷待票」的關(guān)鍵時(shí)刻,這個(gè)智能搶火車票的項(xiàng)目可真是雪中送炭~
GitHub 用戶 testerSunshine 創(chuàng)建了一個(gè)買火車票的項(xiàng)目「12306 購票小助手」,它可以加速買票的過程。
該項(xiàng)目自誕生以來,創(chuàng)建者一直在更新,及時(shí)解決用戶遇到的問題,更新日志中最近更新顯示「增加預(yù)售踩點(diǎn)查詢下單,經(jīng)測(cè)試,誤差在 0.004s」。下面我們來看該項(xiàng)目的具體細(xì)節(jié)。
思路
先來看一下該程序的思路圖:
執(zhí)行
該程序使用 Python 創(chuàng)建,支持版本為 2.7.10 - 2.7.15。
1. 依賴
依賴庫包括:用來對(duì)付 12306「刺激」驗(yàn)證碼的圖像識(shí)別工具(該 repo 中推薦使用若快);項(xiàng)目依賴包 requirements.txt。
按照如下命令安裝項(xiàng)目依賴包:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
2. 項(xiàng)目使用說明
- 需要配置郵箱,可以配置可以不配置,配置郵箱的格式在 yaml 里面可以看到 ex
- 提交訂單驗(yàn)證碼哪里依賴打碼兔,所以如果是訂票遇到驗(yàn)證碼的時(shí)候,沒有打碼兔是過不了的,不推薦手動(dòng),手動(dòng)太慢
- 配置 yaml 文件的時(shí)候,需注意空格和遵循 yaml 語法格式
3. 使用幫助
- 測(cè)試郵箱是否可用
- 測(cè)試下單接口是否可用,有兩個(gè)下單接口,隨便用哪個(gè)都 ok
- 如果下載驗(yàn)證碼過期或者下載失敗的問題,應(yīng)該是 12306 封 ip 的策略,多重試幾次,12306 現(xiàn)在封服務(wù)器(阿里云和騰訊云)ip 比較嚴(yán)重,盡量不要放在服務(wù)器里面
4. 項(xiàng)目開始
(1)服務(wù)器啟動(dòng):
- 修改 config/ticket_config.yaml 文件,按照提示更改自己想要的信息
- 運(yùn)行根目錄 sudo python run.py,即可開始
(2)由于新增對(duì)時(shí)功能,請(qǐng)務(wù)必用 sudo,sudo,sudo 執(zhí)行,否則會(huì)報(bào)權(quán)限錯(cuò)誤。windows 打開 ide 或者 cmd 請(qǐng)用管理員身份執(zhí)行 python run.py,不需要加 sudo
(3)如果你的服務(wù)器安裝了 docker,那么就可以 docker 啟動(dòng)
- docker build -t dockerticket .
- docker run dockerticket python run.py &
- 本來是可以直接 Dockerfile 啟動(dòng)的,但不知道為什么啟動(dòng)不了,如果有大佬看到問題所在,歡迎提出
5. 目錄對(duì)應(yīng)說明
- agency - cdn 代理
- config - 項(xiàng)目配置
- damatuCode - 打碼兔接口
- init - 項(xiàng)目主運(yùn)行目錄
- myException - 異常
- myUrllib - urllib 庫
希望大家能夠在搶票的時(shí)候看到類似下圖這樣的好消息~
PS. 項(xiàng)目創(chuàng)建者說了,該項(xiàng)目不能用于商業(yè)用途哦~
PSS. 鑒于以前遇到過的情況,大家可小心點(diǎn)用別把程序整崩了喲~重點(diǎn)是,希望這個(gè)項(xiàng)目能夠給大家?guī)韱l(fā),各位碼農(nóng)們可以有樣學(xué)樣自己研究出程序就更好了喲~畢竟,授人以魚不如授人以漁。
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】