用 Python 程式碼自動搶火車票
市場上很多火車票搶票軟體大家應該非常熟悉,但很少有人研究具體是怎麼實現的,所以覺得很神祕,其實很簡單。下面使用Python模擬搶票程式,給大家揭祕搶票到底是怎麼回事。
該程式碼僅供參考,主要用於大家溝通交流,禁止用於商業用途。
具體程式碼如下,可以修改成自己的12306使用者名稱賬號:
準備工具
12306網站使用者名稱和密碼
Python
chrome瀏覽器及下載chromedriver
下載Python程式碼,位於:https://github.com/ppy2790/tickets
程式碼用的Python+Splinter開發,Splinter是一個使用Python開發的開源Web應用測試工具,它可以幫你實現自動瀏覽站點和與其進行互動。Splinter官網
http://splinter.readthedocs.io/en/latest/ 。Splinter執行的時候會自動開啟你指定的瀏覽器,訪問指定的URL。然後你所開發的模擬的任何行為,都會自動完成,你只需要坐在電腦面前,像看電影一樣看著螢幕上各種動作自動完成然後收集結果即可。
瞭解原理
找到相應URL,找到控制元件模擬登入、查詢、訂票操作。關鍵是找到控制元件名稱,難點是起始地不是直接輸入的頁面值,需要在cookie中查出。
12306查詢URL:
https://kyfw.12306.cn/otn/leftTicket/init
12306登入URL:
https://kyfw.12306.cn/otn/login/init
我的12306URL:
https://kyfw.12306.cn/otn/index/initMy12306
購票確認URL:
https://kyfw.12306.cn/otn/confirmPassenger/initDc
Python程式碼開啟URL,找到控制元件填充值:
找到使用者名稱密碼控制元件名
找到起始地控制元件名
確定起始地的值,方法Chrome瀏覽器中的“檢查”功能(按F12),Network ---> Cookies中找到:
cookie中起始地的值
拷貝起始地的cookie值,我把幾個常用的城市拷出來,放到了字典中:
查詢車票程式碼:
其實,你只需要執行程式碼:
當然,還需要手動點一下的還是萬惡的12306驗證碼,搶到票後確認支付就行啦。
搶票進行中
搶票成功!
轉載自公眾號【計算機與網路安全】,本文僅用於技術討論。
更多相關文章閱讀
想知道一人運維一萬臺伺服器的祕密嗎?
第九屆GOPS全球運維大會將於2018年4月13日-14日在深圳召開。大會為期2天,側重方向包括AIOps、運維自動化和 DevOps。
為期兩天的大會將涵蓋眾多先進的技術與理念:
點選閱讀原文,進入大會官網