日常工作中,許多 Web 系統涉及重複性點擊(如每日簽到)。本文以某簽到系統為例,演示兩種自動化路徑:瀏覽器端 HTML/JS 注入與服務端 HTTP 請求模擬。
Login.aspx,填寫用戶名/密碼,點擊登錄。Index.aspx,點擊「刷新」按鈕完成簽到。

</body> 前注入腳本:自動填表單、觸發提交。WebBrowser)執行。
// 伪代碼:注入登錄腳本
string html = GetHtml("https://host/Login.aspx");
html = html.Replace("", @""); webBrowser.DocumentText = html; // 觸發加載與腳本執行
| 優點 | 缺點 |
|---|---|
| 直觀,所見即所得;無需分析協議 | 依賴 DOM 結構,頁面改版即失效 |
| 自動執行 JS、處理 Cookie/重定向 | 需載入完整頁面資源,速度較慢 |
| 適用於複雜 JS 加密/驗證碼場景 | 難以在無頭服務器部署 |
使用 Fiddler 捕獲登錄請求(注意:本地請求需用 localhost. 代理):
__VIEWSTATE、__EVENTVALIDATION 等隱藏字段。__VIEWSTATE、按鈕名稱)。302 Redirect 或直接輸出 Index.aspx HTML。

public string PostLogin(string url, string postData) {
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.CookieContainer = new CookieContainer(); // 維持會話
byte[] bytes = Encoding.UTF8.GetBytes(postData);
req.GetRequestStream().Write(bytes, 0, bytes.Length);
using (var resp = (HttpWebResponse)req.GetResponse())
using (var sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8))
return sr.ReadToEnd(); // 返回 Index.aspx HTML
}
// 構造 POST 數據(需先解析首次 GET 獲取的 VIEWSTATE)
string postData = "__VIEWSTATE=...&txtUser=admin&txtPwd=123456&btnLogin=登錄";
string indexHtml = PostLogin("https://host/Login.aspx", postData);

| 優點 | 缺點 |
|---|---|
| 輕量、高速、無界面,適合服務器定時任務 | 需手動處理 Cookie、重定向、ViewState 等狀態 |
| 繞過瀏覽器渲染,資源消耗極低 | JS 加密/動態 Token 需逆向分析 |
| 易於併發、分佈式部署 | 反爬蟲機制(驗證碼、WAF)較難繞過 |
HttpClient 攜帶 Cookie 直請 API。HttpClient + AngleSharp/HtmlAgilityPack 解析;Python 用 requests + BeautifulSoup 或 Playwright/Selenium(無頭模式)。robots.txt 與服務條款,切勿用於惡意刷量或越權訪問。HTML 注入適合快速原型、強 JS 依賴頁面;HTTP 模擬適合高性能、穩定的後台任務。理解兩者原理,可根據場景靈活選擇或組合,將重繁瑣操作真正「自動化」。