閱讀文本大概需要 6.6 分鐘。
又到了一年一度的搶票大戰(zhàn),本來就辛苦勞累了一年,想著可以早點(diǎn)訂到票跟家里人團(tuán)聚。所以有挺多的人,寧愿多花些錢去找黃牛買票。但今年各種搶票軟件的橫行,還有官方出的加速包,導(dǎo)致連黃牛都不敢保證能買到票。你無奈的只能一起加入搶票大軍。
從不花錢的低速,到中速、高速、極速、光速、VIP,6 種搶票速度,越快當(dāng)然搶到的幾率也就更高,但每升一極都需要你花 10 個(gè)加速包才能實(shí)現(xiàn)。
而加速包的獲取方式有兩種:1 直接花錢買,1 元 1 個(gè)價(jià)格,全套下來大概 50 元左右。2 是好友助力,每邀請(qǐng)一個(gè)好友幫你助力就能獲取 2 ~ 5 不等的加速包。
大部分人都是不愿意花錢買加速的,所以你開始群發(fā)好友,轟炸微信群,朋友圈吆喝,掛 N 個(gè)搶票軟件,各種你能想到的手段,都嘗試一遍,但無一都失敗了。
今天我就給大家介紹一個(gè)開源的 Python 搶票程序,親測有效!我身邊已經(jīng)有很多好友,通過這個(gè)程序搶到車票了。不僅免費(fèi)開源,還非常有用。
12306 購票小助手
項(xiàng)目已經(jīng)在 GitHub 上開源了,地址:
https://github.com/testerSunshine/12306
作者也很用心的把程序的思路給畫了出來,我們可以簡單的看一下。整個(gè)思路其實(shí)就是模擬一個(gè)正常人購票的方式,首先查詢下車票剩余的票數(shù),如果有座位提交訂單,出現(xiàn)驗(yàn)證碼這識(shí)別驗(yàn)證碼,隨后就循環(huán)點(diǎn)擊提交按鈕,這里作者就做了很多的條件判斷,比如出現(xiàn)異常則重新查詢,提交訂單失敗也重新查詢,直至獲取訂單成功。訂票成功之后還有一個(gè)通知機(jī)制,即發(fā)送到你的郵箱里。
項(xiàng)目使用到的 Python 庫
接下來我們查看這個(gè)項(xiàng)目都用到哪些 Python 庫。打開 requirements.txt 文件,這里面把項(xiàng)目所用到的庫大致都寫了出來。
網(wǎng)絡(luò)請(qǐng)求用到了經(jīng)典的 requests 庫,而頁面解析用到了 bs4 和 beautifulsoup4。有人可能會(huì)問這兩個(gè)解析庫有什么區(qū)別?bs4 是用在 python3 版本上的,而 beautifulsoup4 是用在 python2 版本上。我最開始學(xué) beautifulsoup 的時(shí)候就被這個(gè)坑過。
Pillow:Pillow 是很經(jīng)典的 Python 圖像處理庫,可以大致猜測作者用這個(gè)庫來解決簡單驗(yàn)證碼的問題。
PyYAML:YAML 是一種直觀的能夠被電腦識(shí)別的的數(shù)據(jù)序列化格式,容易被人類閱讀,并且容易和腳本語言交互。YAML 類似于 XML,但是語法比 XML 簡單得多。PyYAML 是 YAML 的 Python 實(shí)現(xiàn),可以用于參數(shù)化 Pytho n對(duì)象,用來當(dāng)做配置文件。
Six:眾所周知 Python 2 和 Python 3 版本的分裂給 Python 開發(fā)者們帶來了很大的煩惱,為了使代碼同時(shí)兼容兩個(gè)版本,往往要增加大量的代碼。 于是 Six 出現(xiàn)了。正如它的介紹所說,它是一個(gè)專門用來兼容 Python 2 和 Python 3 的庫。它解決了諸如 urllib 的部分方法不兼容, str 和 bytes 類型不兼容等“知名”問題。
到這里就可以看出作者這個(gè)程序是考慮到 Python 不同版本之間的兼容性問題的,簡直業(yè)界良心。
wrapacache****:一個(gè)基于 Python 裝飾器 Decorators 的方法緩存系統(tǒng),用于緩存 Python 方法的輸出值,可以支持復(fù)雜數(shù)據(jù)類型,可以緩存到 Redis 中、Python dict、LUR 算法存儲(chǔ)中。
ntplib:這個(gè)庫是用來在 window 上同步校準(zhǔn)當(dāng)?shù)貢r(shí)間的。
安裝使用
上圖在 GitHub 倉庫中都有寫到。我這里就簡單的講下,首先你需要注冊(cè)「若快」的打碼平臺(tái),為了可以讓程序自動(dòng)打碼。隨后安裝程序依賴包,安裝方法上面已經(jīng)寫到了。
最后程序有一個(gè)很重要的文件叫「ticket_config.yaml」
所有購買車票的信息都是在這個(gè)文件里配置的,比如車票時(shí)間,12306 賬號(hào)密碼,乘車人信息,通知郵箱等等,作者在文件中都有詳細(xì)的注釋。
把這個(gè)配置文件按你的需求填寫完畢之后,大家就可以開始運(yùn)行了。
運(yùn)行 run.py 文件即可,親測有效!
考慮到有些同學(xué)上不了 GitHub 我已把所有文件都放在后臺(tái)了,在公眾號(hào)「癡海」中,回復(fù)「12306」即可獲取。
****搶到票的同學(xué),別忘了把文章分享給身邊需要的人!****
