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

代碼驅動 Web 自動化:從 HTML 注入到 HTTP 模擬登錄

     編輯:關於C語言

緣起:把重複操作交給機器

日常工作中,許多 Web 系統涉及重複性點擊(如每日簽到)。本文以某簽到系統為例,演示兩種自動化路徑:瀏覽器端 HTML/JS 注入與服務端 HTTP 請求模擬。

目標系統流程

  1. 訪問 Login.aspx,填寫用戶名/密碼,點擊登錄。
  2. 跳轉 Index.aspx,點擊「刷新」按鈕完成簽到。

登錄頁 刷新頁 刷新後

方案一:HTML/JS 注入法

原理

  1. 程序獲取登錄頁 HTML 源碼。
  2. 在 </body> 前注入腳本:自動填表單、觸發提交。
  3. 將修改後的 HTML 加載至內嵌瀏覽器控件(如 WebBrowser)執行。
  4. 獲取登錄後頁面 HTML,同法注入點擊「刷新」腳本。

關鍵代碼片段


// 伪代碼:注入登錄腳本
string html = GetHtml("https://host/Login.aspx");
html = html.Replace("", 
    @"");
webBrowser.DocumentText = html; // 觸發加載與腳本執行

優缺點

優點缺點
直觀,所見即所得;無需分析協議依賴 DOM 結構,頁面改版即失效
自動執行 JS、處理 Cookie/重定向需載入完整頁面資源,速度較慢
適用於複雜 JS 加密/驗證碼場景難以在無頭服務器部署

方案二:HTTP 請求模擬法

抓包分析

使用 Fiddler 捕獲登錄請求(注意:本地請求需用 localhost. 代理):

  1. GET Login.aspx:獲取 __VIEWSTATE、__EVENTVALIDATION 等隱藏字段。
  2. POST Login.aspx:提交表單字段(含用戶名、密碼、__VIEWSTATE、按鈕名稱)。
  3. 服務端驗證通過,返回 302 Redirect 或直接輸出 Index.aspx HTML。

Fiddler捕獲 POST數據 VIEWSTATE

核心實現


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);

發送請求代碼 調試截圖 返回HTML

優缺點

優點缺點
輕量、高速、無界面,適合服務器定時任務需手動處理 Cookie、重定向、ViewState 等狀態
繞過瀏覽器渲染,資源消耗極低JS 加密/動態 Token 需逆向分析
易於併發、分佈式部署反爬蟲機制(驗證碼、WAF)較難繞過

進階建議

  • 混合策略:登錄階段用 HTTP 模擬(獲取 Cookie),後續操作用 HttpClient 攜帶 Cookie 直請 API。
  • 現代工具:.NET 推薦 HttpClient + AngleSharp/HtmlAgilityPack 解析;Python 用 requests + BeautifulSoup 或 Playwright/Selenium(無頭模式)。
  • 合規提醒:自動化操作需遵守目標網站 robots.txt 與服務條款,切勿用於惡意刷量或越權訪問。

總結

HTML 注入適合快速原型、強 JS 依賴頁面;HTTP 模擬適合高性能、穩定的後台任務。理解兩者原理,可根據場景靈活選擇或組合,將重繁瑣操作真正「自動化」。

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