首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

.NET HttpWebRequest 無法獲取 AJAX 內容?抓包分析真實請求地址

     編輯:程式設計疑難解答

使用 HttpWebRequest 請求頁面 URL,返回的 HTML 中不包含 AJAX 動態加載的數據,因為 AJAX 數據由瀏覽器發起的獨立異步請求獲取,並非初始頁面響應的一部分。

解決步驟

  1. 抓包分析:使用 Fiddler、Charles、Wireshark 或瀏覽器開發者工具(Network 面板)捕獲頁面加載過程中的所有請求。
  2. 篩選 AJAX 請求:關注 XHR/Fetch 類型請求,記錄其 完整 URL、HTTP 方法、Header、Body 參數。
  3. 模擬請求:在代碼中直接請求該 AJAX API 地址,攜帶相同 Header(如 Referer、X-Requested-With: XMLHttpRequest、Cookie 等)和參數。
  4. 解析響應:通常為 JSON 格式,使用 Newtonsoft.Json 或 System.Text.Json 反序列化提取數據。

代碼示例

var request = (HttpWebRequest)WebRequest.Create(ajaxUrl);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers["X-Requested-With"] = "XMLHttpRequest";
request.CookieContainer = cookies; // 若需登錄態
using (var stream = request.GetRequestStream()) {
    byte[] data = Encoding.UTF8.GetBytes(postData);
    stream.Write(data, 0, data.Length);
}
using (var response = (HttpWebResponse)request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
    string json = reader.ReadToEnd();
    // 解析 json
}

注意事項

  • 部分站點有反爬蟲機制(簽名、Token、瀏覽器指紋),需進一步分析 JS 邏輯或使用 Selenium/Puppeteer 等無頭瀏覽器。
  • 優先尋找官方開放 API,避免違反服務條款。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved