C 刷票程式

2022-02-22 12:28:22 字數 1893 閱讀 5765

上個月有人讓我幫忙投票,我想要不寫個程式給他多刷點得了,雖然這事情有悖原則,就當娛樂了。。

先上圖

1.分析

(1).首先,這是公開給所有人的投票,沒有必須是其使用者的限制。

(2).先按f12檢視網路情況,抓取投票的http請求。點投票,擷取,發現是get方式,querysting值有乙個隨機數,乙個候選人的編號,還有乙個不清楚的值,初步猜測是用cookie限制的。

(3).投完票再點投票,顯示「你已經參與過,每天只能投一次」。

(4).在chrome瀏覽器,設定,隱私設定,檢視cookie裡,找該**的cookies,發現多了乙個不清楚的,還有乙個存著候選人編號的cookie。把這倆都刪了,再點投票,顯示「投票失敗」。雖然沒投票成功,但是返回資訊不一樣了,說明肯定和cookie有關。

(5).直接禁用該**的cookie,點投票還是顯示「投票失敗」。

(6).這時候仔細看了看querystring那一長傳不清楚的值,和cookie裡那個不清楚的值是相同的,投票按鈕的事件應是不會變的,那估計頁面載入的時候這倆就一起載入了。然後重新整理頁面,果然這個值變了。

(7).然後只刪除存候選人編號的cookie,保留這個cookie,再點投票,成功了!

這個**防刷票的措施比較簡陋,只要仔細看看就能發現這個問題。然後我做了第一版。

2.構造http請求

(1).獲取sid。先把上面我說的那個一長串不清楚的值叫做sid吧,應該是為了驗證cookie是否起作用。

private

string

getsid()

(2).根據瀏覽器抓取的http請求模擬乙個http請求

(3).刷票,並觀察刷票狀況。就是將返回的內容裡找到票數,更新到textbox上。

private

void

go()

catch

}

(4).設定迴圈。用for迴圈發請求的話,嗖一下幾百次迴圈完了,而那邊還沒反應過來。中間用sleep()的話,程式有時會陷入假死的狀態,不能實時觀察到刷票的情況。所以我們就用winform自帶的控制項timer,在頁面載入的時候先停了,設定時間間隔,然後在timer的事件裡加上上面的方法就可以了。

private

void form1_load(object

sender, eventargs e)

3.改進上面幾步完成後試著刷了一下,發現刷太快系統會返回「投票失敗,疑似刷票」的提示,又調整了一下間隔時間。可過了兩天,突然又不好使了,幾番分析,發現是加了ip限制。找**比較麻煩,所以就用寬頻重連的方法不停的換ip吧。每刷一票斷線重連一次就可以了。

public

static

string connect(string users,string

pwds)

public

static

string

disconnect()

\" /disconnect

", "

寬頻連線");

return

invokecmd(arg);

}private

static

string invokecmd(string

cmdargs)

網頁投票沒有完善的防止刷票的措施,只能說是防君子不防小人,要想刷了總能找到空子。

微信怎麼刷票

延伸閱讀 居然不用登陸,當然是每個ip只能投一票。開啟chrome dev tools,看一下 get請求。那直接把request url複製下來,這個就是用於刷票的url 按理來說只要把這個url 發給任何乙個人 他點開,就是幫你投票了。他返回了乙個json資料格式。告訴我們已經投過票了。然後我們...

微信防刷票限制

一 判斷上一級頁面 通過http請求header中的refere,來判斷投票操作的上級頁面,可以防止直接傳送請求來進行投票的部分自動投票軟體。判斷上一級頁面 通過請求頭部資訊中的agent來判斷開啟的客戶端。三 驗證碼 在投票的頁面上新增驗證碼資訊並加密,傳遞給後台,判斷驗證碼是否一致。1 在htm...

搶票小程式

目錄 db.txt from multiprocessing import process import json,time,os def search time.sleep 1 模擬網路io with open db.txt mode rt encoding utf 8 as f res json...