如何在Web浏览器(如IE)中打开URL并传递凭据

我想打开一个需要基本身份validation的页面。 我想将基本身份validation标头与URL一起传递给浏览器。

我怎样才能做到这一点?

通过标题你可以:

string user = "uuuuuuu"; string pass = "ppppppp"; string authHdr = "Authorization: Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(user + ":" + pass)) + "\r\n"; webBrowserCtl.Navigate("http://example.com", null, null, authHdr); 

鉴于这需要在每个请求的基础上完成,基本身份validation的一个更简单的选择就是;

 webBrowserCtl.Navigate("http://uuuuuuu:ppppppp@example.com", null, null, authHdr); 

您可以尝试使用旧的“URL”格式,但这样做是不安全的:

 http(s)://username:password@server/resource.ext 

这暴露了凭证, IE已禁用它 ,但它仍然可以在其他浏览器中使用。 使用此格式时,浏览器可以使用凭据,并根据Web服务器的响应方式决定发送基本身份validation标头。

尝试使用像Watin 这样的东西在这里你可以找到关于Watin好博客文章。

代码如下:

 public void SearchForWatiNOnGoogle() { using (var browser = new IE("http://www.google.com")) { browser.TextField(Find.ByName("q")).TypeText("WatiN"); browser.Button(Find.ByName("btnG")).Click(); } } 

首先检查此代码:

 Dim result As String Using wClnt As New Net.WebClient wClnt.Credentials = New System.Net.NetworkCredential("username", "password") Using strR As New IO.StreamReader(wClnt.OpenRead("http://ADDRESS_To_READ")) result = strR.ReadToEnd End Using End Using 

如果它不是你想要的地方,请查看这篇文章,它可能会有所帮助:

如何使用WebClient登录网站?

更新

这样您就不会打开任何浏览器 。 只需要你想要的地址并通过凭证。

.Net中的WebBrowser控件使用Internet Explorer作为浏览器,因此如果您不介意使用IE,那么这就是我编写的代码。 h5url是您要在窗口中打开的URL。 我的程序甚至没有显示浏览器控件,这是在登录网页的情况下生成Internet Explorer的实例。

  using (WebBrowser WebBrowser1 = new WebBrowser()) { String auth = System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(_User + ":" + _Password)); string headers = "Authorization: Basic " + auth + "\r\n"; WebBrowser1.Navigate(h5URL, "_blank", null, headers); } 

这将打开一个新的浏览器,其中包含您需要进行身份验