为了账号安全,请及时绑定邮箱和手机立即绑定

使用发布请求获取身份验证令牌

使用发布请求获取身份验证令牌

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 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信