亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用發布請求獲取身份驗證令牌

使用發布請求獲取身份驗證令牌

C#
慕碼人8056858 2021-07-06 13:08:35
我正在嘗試通過向 url 發出 web 請求來獲取請求身份驗證令牌。api 需要用戶名/密碼作為form-data有效負載中的憑據。當我單擊瀏覽器上的登錄選項時,網絡日志顯示一個GET請求HTML作為響應,然后是一個POST請求,該請求返回帶有用戶名/密碼的表單數據和有效負載中的請求令牌。嘗試使用 模擬流程webrequest,我正在執行一個簡單的post請求,如下所示:public string HttpPost(string url, string post, string refer = "")        {            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);            // request.CookieContainer = cJar;            request.UserAgent = UserAgent;            request.KeepAlive = false;            request.Method = "POST";            request.Referer = refer;            byte[] postBytes = Encoding.ASCII.GetBytes(post);            request.ContentType = "application/x-www-form-urlencoded";            request.ContentLength = postBytes.Length;            Stream requestStream = request.GetRequestStream();            requestStream.Write(postBytes, 0, postBytes.Length);            requestStream.Close();            HttpWebResponse response = (HttpWebResponse)request.GetResponse();            StreamReader sr = new StreamReader(response.GetResponseStream());            return sr.ReadToEnd();        }但是,此請求僅像瀏覽器請求的第一部分一樣返回頁面的文本/HTML 標記。如何讓它運行后續POST以從端點獲取令牌?
查看完整描述

1 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

該令牌是一個 CSRF 令牌,您需要做的是在您收到初始 get 請求的 html 響應中找到登錄表單,并確保您存儲在此響應中設置的 cookie。

然后,您需要在 html 響應中搜索用戶名和密碼輸入字段旁邊名為“token”的隱藏輸入參數,并使用該元素的值來編寫您的發布請求。

可以使用一些正則表達式或 htmlagilitypack 以編程方式執行此操作以提取該令牌


查看完整回答
反對 回復 2021-07-18
  • 1 回答
  • 0 關注
  • 208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號