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

本文关键字:URL Web 浏览器 IE 例如 | 更新日期: 2023-09-27 17:56:41

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

我该怎么做?

如何在 Web 浏览器(例如 IE)中打开 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);

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

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

您可以尝试旧的"in URL"格式,该格式允许这样做,但它不安全:

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

这将公开凭据,IE 已禁用它,但它可能仍在其他浏览器中工作。使用此格式时,凭据可供浏览器使用,并且它会根据 Web 服务器的响应方式决定发送基本身份验证标头。

尝试使用类似 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

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

如何使用网络客户端登录网站?

更新

这样,您就不会打开任何浏览器。只需请求您想要的地址并传递凭据。

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

这将打开一个新浏览器,其中包含身份验证(基本或其他)所需的任何标头。