首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

防刷票機制研究與 .NET HttpRequest 代理 IP 實戰

     編輯:關於.NET

背景

受友人委託測試其 PHP 投票網站的防刷票能力。網站初期僅採 IP 限制,極易被突破。本文記錄從收集免費代理 IP、分析 HTTP 請求到模擬刷票的完整過程,並探討對應防禦策略。

實戰步驟

1. 收集免費代理 IP

搜尋「免費代理 IP」可獲得大量公開代理清單,依格式儲存為文字檔(IP:Port),供後續輪詢使用。

代理 IP 清單範例

2. 抓取目標投票請求封包

使用 Fiddler 攔截正常投票操作,分析 HTTP Request Header 與 Body,確認必要參數(如表單欄位、Cookie、Referer 等)。

Fiddler 攔截投票請求

3. .NET 模擬投票程式核心邏輯

public class VoteBot
{
    private readonly List<string> _proxies;
    private int _proxyIndex = 0;

    public VoteBot(string proxyListPath)
    {
        _proxies = File.ReadAllLines(proxyListPath)
                       .Where(l => !string.IsNullOrWhiteSpace(l))
                       .ToList();
    }

    public async Task<bool> VoteAsync(string voteUrl, Dictionary<string, string> formData)
    {
        var proxy = GetNextProxy();
        var handler = new HttpClientHandler
        {
            Proxy = new WebProxy(proxy),
            UseProxy = true,
            CookieContainer = new CookieContainer()
        };

        using (var client = new HttpClient(handler))
        {
            // 模擬瀏覽器 Header
            client.DefaultRequestHeaders.Add("User-Agent", 
                "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...");
            client.DefaultRequestHeaders.Referrer = new Uri(voteUrl);

            var content = new FormUrlEncodedContent(formData);
            var response = await client.PostAsync(voteUrl, content);
            return response.IsSuccessStatusCode;
        }
    }

    private string GetNextProxy()
    {
        if (_proxies.Count == 0) throw new InvalidOperationException("無可用代理");
        var proxy = _proxies[_proxyIndex];
        _proxyIndex = (_proxyIndex + 1) % _proxies.Count;
        return proxy;
    }
}

常見防刷票機制與繞過手段

防禦層級典型做法攻擊繞過
IP 限制同 IP 限投一次/天代理 IP 池輪換
Cookie/Session驗證 Cookie 有效性模擬登入獲取 Cookie,或攜帶固定 Cookie
驗證碼圖形/滑塊/點選驗證碼OCR 識別、第三方打碼平台、滑塊軌跡模擬
裝置指紋Canvas、User-Agent、字型列表等Headless Chrome + 指紋偽裝腳本
行為分析點擊頻率、停留時間、鼠標軌跡隨機延遲、模擬人類操作軌跡
帳號綁定需登入/手機驗證才能投票批量註冊/接碼平台/賬號採購

建議防禦策略(纵深防禦)

  1. 前端:隱藏表單欄位(蜜罐)、動態生成 Token、行為式驗證碼(如滑塊、點選)。
  2. 傳輸層:HTTPS 強制、Referer 檢查、限制非標準 Header。
  3. 應用層:
      • 登入/實名認證門檻
      • 同一帳號/設備/IP 多維度限流
      • 投票資料異常檢測(時間序列、IP 聚類、User-Agent 熵值)
      • 關鍵操作需二次驗證(簡訊/郵件/App 推播)
  4. 資料層:唯一索引防重複、審計日誌留存。
  5. 事後:定期清洗異常數據、封禁惡意 IP/帳號、法律追訴管道。

總結

單一防禦手段極易被突破,唯有構建「前端阻擋 + 傳輸驗證 + 業務風控 + 數據審計」的立體防禦體系,並持續更新規則庫、引入機器學習異常檢測,才能有效提升刷票成本,守護投票公平性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved