如何寫一個網頁刷票器之類的東西?

實現比如說,對一個網頁頁面的一個按鈕進行不斷點擊來刷票的;再比如窮舉一個4位的密碼。是用什麼實現的呢?PHP?寫腳本?這樣的東西是叫網頁「腳本」嗎?有沒有實現的例子呢?


時隔一年,學習了一些知識,半年前就已經試著寫了12306刷票器。今天偶然看到以前自己的提問,就來自問自答一下吧。

第一,無論使用什麼語言實現,首先要懂得原理——web最基本的原理是HTTP協議,要先去理解HTTP協議,知道什麼是Get請求Post請求。

第二,弄懂網站的工作原理。所謂工作原理就是從後台伺服器的數據如何到前端,前端的數據如何發送給伺服器,以及伺服器是如何知道每一次請求都是來自你這個用戶的。也就是說明白cookie和session。

學習的途徑可以試著學一種後台語言試著寫個用戶註冊登錄的demo,這樣理解最深刻。

或者隨便找個網站用chrome的F12把「控制台」,打開看Network里的每個請求。

當然最好還是學個一種後台語言,試著做個小網站。

第三,懂點密碼學。登錄的時候,填寫的密碼一般是加密後才發送的,所以要模擬登錄就需要密碼加密。了解了解MD5和RSA等等加密演算法,具體演算法怎麼實現的網上都有現成的可以下載研究或者直接用。

第四,圖像文字信息識別。這個是為了搞定驗證碼的,這個我研究不深,對於簡單的驗證碼用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 一天只能投一票,投票之前還要輸入驗證碼的難度就很高啦。


推薦閱讀:

如何看待吳亦凡在微博上直接呼籲粉絲刷票?

TAG:PHP | 網路安全 | ASP | 刷票 |