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

时间:2011-05-18 09:53:56

标签: c# .net .net-4.0

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

我该怎么做?

5 个答案:

答案 0 :(得分:14)

通过标题你可以:

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);

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

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

答案 1 :(得分:6)

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

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

这会公开凭据和IE has disabled it,但它仍然可以在其他浏览器中使用。使用此格式时,浏览器可以使用凭据,并根据Web服务器的响应方式决定发送基本身份验证标头。

答案 2 :(得分:2)

尝试使用Watin之类的内容 Here您可以找到关于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();
  }
}

答案 3 :(得分:0)

首先检查此代码:

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

如果不是您要找的地方,请查看此帖子,这可能会有所帮助:

How do I log into a site with WebClient?

<强>更新

这样你没有打开任何浏览器。只需要你想要的地址并通过凭证。

答案 4 :(得分:0)

.Net中的WebBrowser控件使用Internet Explorer作为浏览器,所以如果你不介意使用IE,这就是我写的代码。 h5url 是您要在窗口中打开的网址。我的程序甚至没有显示浏览器控件,这是在登录网页的情况下生成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);

            }

这将打开一个新的浏览器,其中包含您需要进行身份验证的任何标头,无论是基本还是其他。