歡迎光臨
每天分享高質量文章

Python實現12306自動搶票,併發短信郵件通知!

腳本實現及實踐

最近在學Python,所以用Python寫了這個12306搶票腳本,分享出來,與大家共同交流和學習,有不對的地方,請大家多多指正。話不多說,進入正題:

這個腳本目前只能刷一趟車的,人數可以是多個,支持選取作為型別等。

實現思路是splinter.browser模擬瀏覽器登陸和操作,由於12306的驗證碼不好自動識別,所以,驗證碼需要用戶進行手動識別,併進行登陸操作,之後的事情,就交由腳本來操作就可以了,下麵是我測試時候的一些截圖:

第一步:如下圖,首先輸入搶票基本信息

第二步:然後進入登錄頁,需要手動輸入驗證碼,並點擊登陸操作

第三步:登陸後,自動進入到搶票頁面,如下圖這樣的

最後:就是坐等刷票結果就好了,如下圖這樣,就說是刷票成功了,刷到票後,會進行短信和郵件的通知,請記得及時前往12306進行支付,不然就白搶了。

運行環境

Python運行環境:python3.6

用到的模塊:re、splinter、time、sys、httplib2、urllib、smtplib、email

未安裝的模塊,請使用pip instatll進行安裝,例如:pip install splinter

如下代碼是這個腳本所有用到的模塊引入:

準備城市名COOKIE

刷票前信息準備,我主要說一下始發站和目的地的cookie值獲取,因為輸入城市的時候,需要通過cookie值,cookie值可以通過12306官網,然後在F12(相信所有的coder都知道這個吧)的network裡面的查詢請求cookie中可以看到,在請求的essay-header裡面可以找到,_jc_save_fromStation值是出發站的cookie,_jc_save_toStation的值是目的地的cookie,然後加入到代碼里的城市的cookie字典city_list里即可,鍵是城市的首字母,值是cookie值的形式。

模擬登陸操作

搶票,肯定需要先登錄,我這裡模擬的登錄操作,會自動填充12306的賬號名和密碼,當然,你也可以在打開的瀏覽器中修改賬號和密碼,實現的關鍵代碼如下:

登錄之後,就是控制刷票的各種操作處理了,這裡,我就不貼代碼了,因為代碼比較多,別擔心,在最後,我會貼出完整的代碼的。

短信和郵件通知

當刷票成功後,我會進行短信和郵件的雙重通知,當然,這裡短信通知的平臺,就看你用那個具體來修改代碼了,我用的是互億無線的體驗版的免費短信通知接口;發送郵件模塊我用的是smtplib,發送郵件服務器用的是163郵箱,如果用163郵箱的話,你還沒有設置客戶端授權密碼,記得先設置客戶端授權密碼就好了,挺方便的。以下是主要實現代碼:

原始碼分享

說了那麼多,感覺都是說了好多廢話啊,哈哈,不好意思,耽誤大家時間來看我瞎扯了,我貼上大家最關心的原始碼,請接碼,大家在嘗試運行過程中,有任何問題,可以給我留言或者私信我,我看到都會及時回覆大家的:

 

    赞(0)

    分享創造快樂