1

我对此很陌生,没有其他人可以问。我正在尝试以编程方式(C#)访问一些网页抓取软件的网页。我已经弄清楚了使用 HttpWebResponse 和 HttpWebRequest 类通过网页表单执行登录的过程,但是我有一个具有两阶段登录过程的网站。

首次登录通过弹出窗口进行。后台没有加载网页,只是弹出一个对话框说需要验证并提示输入用户名和密码。

通过第一次登录后,第二次登录只是一个 Web 表单,我应该能够根据我已经学到的知识来处理自己。

我的问题:如何以编程方式为弹出式身份验证请求提供登录信息?

编辑

只是为了提供更多信息。Fiddler 在尝试访问网站时将主机设为 CONNECT。

编辑

我试图在下面使用 MrEye 的答案,虽然它似乎让我更进一步,但仍然有挂断。我遇到了证书问题,因此经过一些 Google 工作后,我通过添加以下代码找到了解决方法:

ServicePointManager.ServerCertificateValidationCallback +=
            delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        };

现在我得到一个System.Net.WebException值为“删除服务器返回错误:(401)未经授权。” 例外Status是 ProtocolError,尽管我无法进一步了解。我确定提供的用户名/密码是有效的。

4

1 回答 1

2

您需要做的就是将一个 NetworkCredential 对象分配给您创建的 HttpWebRequest 对象的 Credentials 属性。例如:

myWebRequest.Credentials = new NetworkCredential("username","password");

根据您连接的服务器,您可能还需要:

myWebRequest.PreAuthenticate = true; 
于 2010-12-02T23:05:55.347 回答