【问题标题】:Get the .ASPXAUTH cookie value programmatically以编程方式获取 .ASPXAUTH cookie 值
【发布时间】:2019-11-24 19:51:28
【问题描述】:

有没有办法以编程方式获取 .ASPXAUTH 值。

例如,我使用自己的凭据 (POST) 登录网站,然后读取响应...它不会返回用于跟踪会话的 CookieContainer 中的 .APSXAUTH。

任何人都知道如何获取它并将其与随后的获取和帖子一起发送?

[编辑]以下是我所做的更具体的操作:

  • 向页面发送 HTTP GET。读取 _VIEWSTATE 等值。
  • 向登录页面发送 HTTP POST。它包括登录信息。
  • 服务器向某个默认页面发送 302 响应(重定向)。应该包含表单身份验证 cookie,但它没有。

所以我在想可能有比这更好的方法来跟踪会话:

CookieContainer _cookieJar = new CookieContainer();

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url);
request.CookieContainer = _cookieJar;

【问题讨论】:

  • 它应该在那里。你能把你的代码贴出来让我们看看吗?
  • 你说得对,它就在那里,我只是没有正确阅读回复。我创建了另一个请求,而我应该刚刚使用 request.GetResponse() 读取响应。我改变了它并繁荣,它就在那里......但现在一切都被编码......我在响应的文本中看不到任何东西。
  • 第二个问题的答案(所有内容都已编码)我在以下线程中找到:stackoverflow.com/questions/678547/…

标签: c# cookies httpwebrequest


【解决方案1】:

所以总结一下答案:

如果您尝试通过自己的应用程序以编程方式登录基于表单的身份验证网站,请确保遵循跟踪 cookie 的步骤。

首先创建一个初始GET 请求,然后执行后续的POST 请求,这些请求将执行回发。请求和响应应以这种方式制定:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url);
request.CookieContainer = _cookieJar;
HttpWebResponse httpsResponse = (HttpWebResponse)request.GetResponse();

CookieContainer 类按预期处理 cookie。

如果您的响应是使用 Gzip 编码的,只需包含以下行:

request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

在您致电request.GetResponse()之前

希望这对那里的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2011-05-17
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多