如何寫一個網頁刷票器之類的東西?
實現比如說,對一個網頁頁面的一個按鈕進行不斷點擊來刷票的;再比如窮舉一個4位的密碼。是用什麼實現的呢?PHP?寫腳本?這樣的東西是叫網頁「腳本」嗎?有沒有實現的例子呢?
時隔一年,學習了一些知識,半年前就已經試著寫了12306刷票器。今天偶然看到以前自己的提問,就來自問自答一下吧。
第一,無論使用什麼語言實現,首先要懂得原理——web最基本的原理是HTTP協議,要先去理解HTTP協議,知道什麼是Get請求Post請求。
第二,弄懂網站的工作原理。所謂工作原理就是從後台伺服器的數據如何到前端,前端的數據如何發送給伺服器,以及伺服器是如何知道每一次請求都是來自你這個用戶的。也就是說明白cookie和session。
學習的途徑可以試著學一種後台語言試著寫個用戶註冊登錄的demo,這樣理解最深刻。或者隨便找個網站用chrome的F12把「控制台」,打開看Network里的每個請求。當然最好還是學個一種後台語言,試著做個小網站。第四,圖像文字信息識別。這個是為了搞定驗證碼的,這個我研究不深,對於簡單的驗證碼用ocr就可以。稍微有噪點之類的干擾的用Open CV也可以去除。當然,重疊、旋轉等等的複雜驗證碼,需要更深入的「機器學習」等等知識了。
第五,寫刷票工具。工具看寫在什麼平台了,windows、Linux還是Android?一般跑在windows上用的話,語言很多可供選擇的,,C#、java都可以,或者直接寫在網頁上用javascript寫ajax也行。
當然,用好工具和開源庫會事半功倍, Apache有個HttpClient可以幫助模擬HTTP協議很方便HttpClient - HttpClient Home最後,當然了,如果目的只是寫一個刷票器,其實不需要如此大動干戈,去細究每個環節的原理和技術細節。但是我知道題主一定不只想做個簡單的刷票器,刷票器只是個階梯。這樣學來的「刷票器」的技術一樣可以進入教務處瘋狂地採集照片做個facemash,然後順手做個Facebook成為扎克伯格,改變世界,不是嗎?
加油吧,年輕人。
反對排名第一的答案。
首先做個簡單的刷票器沒那麼麻煩。你可以學填表,七八分鐘就能學會的東西幹嘛搞這麼高大上的感覺。然後可以學習抓包用post或者get讓刷票速度更快,最後你可以學習怎麼換ip。我高二時幫班主任做了個刷票軟體,就用了一個晚上,功能齊全,成功幫班主任的女兒刷成第一名。
補充一點,你所謂的點擊按鈕就是填表,可以用vb的webbrowser控制項實現,簡單的不行。
窮舉一個四位的密碼,你用0123456789作為基底,然後從0123 0124....一個個試
最後再補充一下,腳本是解釋執行,不生成機器代碼,比如php,javascript(AJAX技術用到的語言),其它如c/c++,.net,delphi等都是編譯型語言,是生成機器碼的我現在也在在琢磨這個東西,這是我之前寫的一個程序C# 刷票程序 - woostundy,實現了構造Http請求和換IP。現在正在研究需要身份驗證的投票能否刷票。
先說個簡單的,不需要編程基礎。搜索按鍵精靈,錄製一個腳本,重複點擊投票的按鈕,然後讓親朋好友晚上睡覺的時候開著電腦掛著腳本幫忙刷下票。缺點是效率低,電費都划不來。
有編程和網路基礎的可以自己模擬發包,方法很多,跑個 curl 腳本,或者用 Python 什麼的寫個程序都可以。
當然以上前提都是在網站沒做任何防止刷票的措施才能成功的,像是一個 IP 一天只能投一票,投票之前還要輸入驗證碼的難度就很高啦。
推薦閱讀: