如何在 C# 中使用 POST 和 GET 請求驗證 Web 抓取?
Jan 18, 2025 am 09:26 AMC# 網頁抓取驗證:POST 和 GET 請求實用指南
網頁抓取受保護的網站需要使用者驗證。本指南詳細介紹如何使用 C# 登入網站,繞過進階庫的典型限制。 我們將專注於使用 WebRequest
和 WebResponse
來精確控制 HTTP 請求。
先決條件:
- 需要登入才能存取內容的網站。
- 熟悉 C# 程式設計和網頁抓取基礎。
實作步驟:
身份驗證涉及兩個關鍵步驟:
-
發佈登入憑證:
- 建立登入 URL 並正確編碼表單參數(使用者名稱、密碼)。
- 使用 POST 方法、內容類型(「application/x-www-form-urlencoded」)和資料長度配置
WebRequest
。 - 發送包含編碼表單資料的 POST 請求。
- 從回應的「Set-Cookie」標頭中提取身份驗證 cookie。這個cookie對於後續請求至關重要。
-
取得受保護的內容:
- 為受保護頁面建立
WebRequest
。 - 將步驟1中獲得的身份驗證cookie加入到請求標頭中。
- 伺服器驗證 cookie,授予對受保護資源的存取權。
- 使用
StreamReader
檢索並處理頁面的HTML原始碼。
- 為受保護頁面建立
程式碼範例:
此範例示範登入與擷取受保護的頁面:
string loginUrl = "http://www.mmoinn.com/index.do?PageModule=UsersAction&Action=UsersLogin"; string loginParams = string.Format("email_address={0}&password={1}", "your email", "your password"); string cookieHeader; WebRequest loginRequest = WebRequest.Create(loginUrl); loginRequest.ContentType = "application/x-www-form-urlencoded"; loginRequest.Method = "POST"; byte[] data = Encoding.ASCII.GetBytes(loginParams); loginRequest.ContentLength = data.Length; using (Stream requestStream = loginRequest.GetRequestStream()) { requestStream.Write(data, 0, data.Length); } WebResponse loginResponse = loginRequest.GetResponse(); cookieHeader = loginResponse.Headers["Set-cookie"]; string protectedPageUrl = "http://www.mmoinn.com/protected_page.html"; WebRequest protectedRequest = WebRequest.Create(protectedPageUrl); protectedRequest.Headers.Add("Cookie", cookieHeader); WebResponse protectedResponse = protectedRequest.GetResponse(); using (StreamReader reader = new StreamReader(protectedResponse.GetResponseStream())) { string pageSource = reader.ReadToEnd(); // Process the protected page's HTML }
登入後複製
此程式碼說明了完整的身份驗證流程:發送 POST 請求、檢索 cookie,並使用該 cookie 透過 GET 請求存取受保護的內容。 請記得將 "your email"
和 "your password"
替換為實際憑證。 應該為健壯的應用程式添加錯誤處理(例如,無效憑證)。
以上是如何在 C# 中使用 POST 和 GET 請求驗證 Web 抓取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)