0

我正在尝试使用 POST 和 C#(或 VB)登录到一个站点(不能提供 URL,它只是 Intranet)。我收到以下错误:

该系统需要使用 HTTP cookie 来验证授权信息。我们的系统检测到您的浏览器已禁用 HTTP cookie 或不支持它们。请参阅浏览器中的帮助页面,了解有关如何正确配置浏览器以用于本系统的更多信息。

我使用以下代码:

var cookies = new CookieContainer();
ServicePointManager.Expect100Continue = false;

var request = (HttpWebRequest)WebRequest.Create("http://.......");
request.CookieContainer = cookies;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var requestStream = request.GetRequestStream())
using (var writer = new StreamWriter(requestStream))
{
    writer.Write("user=XX&pass=XX");
}

using (var responseStream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(responseStream))
{
    var result = reader.ReadToEnd();
    Console.WriteLine(result);
}

我该如何解决这个问题?

4

1 回答 1

0

我该如何解决这个问题?

通过查看合法流量并从代码中重放。我的猜测:登录页面设置了一个 cookie 和/或一个隐藏的表单值,您必须将两者之一或两者都发布到登录页面。

所以:启动Fiddler,用浏览器请求登录页面,登录,确认上述理论并从代码重建:

  1. 获取附加了 CookieContainer 的登录表单
  2. 读取登录表单并存储隐藏值(如果需要)
  3. 使用 1 中的 CookieContainer 和 2 中的表单字段执行 POST
  4. ???
  5. 利润
于 2013-02-27T11:17:34.297 回答