如何处理弹出认证?

时间:2010-12-02 22:54:44

标签: c# authentication web-scraping http-authentication

我对此很陌生,没有其他人可以问。我正在尝试以编程方式(C#)访问某个网页报废软件的网页。我已经找到了使用HttpWebResponse和HttpWebRequest类通过网页表单执行登录的过程,但我有一个网站,它有两个阶段的登录程序。

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

在第一次登录后,第二次登录只是一个网络表单,我应该能够从我已经学到的东西中处理自己。

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

修改

仅提供更多信息。 Fiddler在尝试访问网站时将主机视为CONNECT。

修改

我试图在下面使用MrEye的答案,虽然它似乎让我更进一步,仍然有挂断。我是gettin证书问题,所以在谷歌工作之后,我通过添加以下代码找到了解决方法:

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

现在我收到System.Net.WebException,其值为“删除服务器返回错误:(401)未经授权。”例外Status是ProtocolError,但我还没有进一步。我确信所提供的用户名/密码有效。

1 个答案:

答案 0 :(得分:1)

您需要做的就是将NetworkCredential对象设置为您创建的HttpWebRequest对象的Credentials属性。例如:

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

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

myWebRequest.PreAuthenticate = true;