1. 程式人生 > 其它 >針對自動化搶票 功能的實現和 總結

針對自動化搶票 功能的實現和 總結

  實際的生活中,我們總會被搶不到對應的票而困擾,或許是因為手速,或許是因為網路,總之,大多數時候,我們想要搶的票都會在我們載入好而消失,這不科學,也不行。所以按道理來講完全可以用計算機的方式來實現自動化部署搶票。

  本文所要介紹的就是通過兩種實踐方法來完成自動化部署搶票。(僅限於某大學羽毛球館,更多的是提供一種思想)

  下面正式開始

  第一種方式是採用了 java + 定時器 + seleium 技術來實現模擬使用者實際上在手機上點選的操作。

  首先來還原一下正常的搶球場邏輯,先是進入道搶場地的頁面,然後等待對應的重新整理時間重新整理,然後等待資料載入,等到載入好了之後,使用者點選自己想選擇的場次,然後點選選擇好場地,然後點選付款。

  那麼其實我們完全可以讓計算機來為我們完成這件事情,而不需要我們自己來手動,畢竟計算機絕對是要比手動快很多的。

  那麼最核心的就是通過 seleium 操控瀏覽器,然後通過一定的定時任務進行啟動,等到了對應的載入時間,直接啟動來用電腦模擬使用者的請求。

  這個方法其實就是解決了手速不好的人的毛病,但是會存在一個關鍵性的問題是,載入時由於網路不好,導致等你載入完場次也被選擇完了,雖然通過 seleium 能夠解決手速慢的問題,但是網路問題還是沒有被解決,所以,有一種設想就是,能不能跳過載入,直接搶場地呢?!!!

  當有了這個想法之後呢,開始思考,搶場子的前後端互動問題,實際上無論什麼搶票軟體,不管你進行什麼樣的操作,你都是需要將資料傳送給後臺的,我們所謂的選擇其實也就是選擇了傳遞給後臺的引數,事實上我們正常需要載入完了才可以選擇點選的引數,如果想要跳過載入,那麼就可以直接向後臺傳送請求,自己來封裝引數。

  當有了這個想法後,首先通過 seleium 獲取到對應的請求,發現是 提交的URL 和 請求型別,以及對應的請求頭,和傳遞的引數。

  當獲取到了以上的資料之後,完全可以自己模擬前臺的傳送,果不其然,測試成功,所接收到的和後端傳遞給前端的資料完全一樣。

  當使用了第二種方法的時候,在網路很好的情況下,是第一種的數十倍之快。並且該方法能應用到網路高峰期的情況。

  (慎記:一般的網站都有針對性的反搶票功能,第一種實現方式基本上觸發不到這種情況,我曾經以每秒一千次的用第二種方式來請求我們學校的體育館,結果被封號了,所以切記不要和我一樣加無限訪問邏輯!!!)

  該功能的啟發思想不僅僅能應用在這裡,通過搗鼓搶票軟體,也讓我學習會了自動化測試,運維,模擬瀏覽器動作等技能,也可以通過如此擴充套件。

  以上就是一個 又菜又愛玩羽毛球的學生 在研究如何攻克學校體育館的思考過程,以上思想提供給大家借鑑。