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

C# 模擬網站登錄實戰:HttpWebRequest 處理 Cookie 與 POST 資料 (第 2 部分)

     編輯:關於C語言

流程概覽

  1. 取得登入頁面,解析表單欄位與隱藏值 (如 __VIEWSTATE)。
  2. 建立 HttpWebRequest,設定 CookieContainer 維持 Session。
  3. 以 POST 方式提交帳號、密碼與必要欄位。
  4. 驗證回應 (Cookie、重導向、內容關鍵字) 確認登入成功。
  5. 後續請求攜帶相同 CookieContainer 即可存取需登入頁面。

核心程式碼片段

簡單 GET 取得 HTML

public static string GetHtml(string url)
{
    WebRequest req = WebRequest.Create(url);
    req.Credentials = CredentialCache.DefaultCredentials;
    using (WebResponse resp = req.GetResponse())
    using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.Default))
        return sr.ReadToEnd();
}

取得回應 Cookie

string cookie = resp.Headers.Get("Set-Cookie");

發送 POST 資料

byte[] postData = Encoding.UTF8.GetBytes("username=xxx&password=yyy");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = postData.Length;
using (Stream s = req.GetRequestStream())
    s.Write(postData, 0, postData.Length);

完整範例專案

原文提供 Demo 專案 (附件) 實作盛大通行證登入流程:多步驟重導向、Ticket 交換、跨網域 Cookie 傳遞。核心原理相同,皆為模擬瀏覽器 HTTP 行為。

後續應用

  • 登入成功後,重複使用 CookieContainer 發送請求即可進行發文、下載等操作。
  • 建議使用 Fiddler/Charles 抓包分析目標網站實際 HTTP 交互,再以 C# 重現。
  • 現代網站多採用 OAuth/OIDC、JWT、雙因子認證,單純模擬表單登入適用性降低,需配合 Selenium/Puppeteer 等瀏覽器自動化工具。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved