1. 程式人生 > >用 Python 程式碼自動搶火車票

用 Python 程式碼自動搶火車票

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

市場上很多火車票搶票軟體大家應該非常熟悉,但很少有人研究具體是怎麼實現的,所以覺得很神祕,其實很簡單。下面使用Python模擬搶票程式,給大家揭祕搶票到底是怎麼回事。

該程式碼僅供參考,主要用於大家溝通交流,禁止用於商業用途。

具體程式碼如下,可以修改成自己的12306使用者名稱賬號:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

準備工具

  • 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,找到控制元件填充值:

?wx_fmt=png

?wx_fmt=png

找到使用者名稱密碼控制元件名

?wx_fmt=png

找到起始地控制元件名

確定起始地的值,方法Chrome瀏覽器中的“檢查”功能(按F12),Network ---> Cookies中找到:

?wx_fmt=png

cookie中起始地的值

拷貝起始地的cookie值,我把幾個常用的城市拷出來,放到了字典中:

?wx_fmt=png

查詢車票程式碼:

?wx_fmt=png

其實,你只需要執行程式碼:

?wx_fmt=png

當然,還需要手動點一下的還是萬惡的12306驗證碼,搶到票後確認支付就行啦。

?wx_fmt=png

搶票進行中

?wx_fmt=png

搶票成功!

轉載自公眾號【計算機與網路安全】,本文僅用於技術討論。

更多相關文章閱讀

想知道一人運維一萬臺伺服器的祕密嗎?

第九屆GOPS全球運維大會將於2018年4月13日-14日在深圳召開。大會為期2天,側重方向包括AIOps、運維自動化和 DevOps。

為期兩天的大會將涵蓋眾多先進的技術與理念:

0?wx_fmt=png

點選閱讀原文,進入大會官網