【问题标题】:How can i open a url in web browser (such as IE) and pass credentials如何在 Web 浏览器(例如 IE)中打开 url 并传递凭据
【发布时间】:2011-05-18 09:53:55
【问题描述】:

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

我该怎么做?

【问题讨论】:

  • 我正在尝试。有很多问题没有很好的回应
  • 好的,那么来回答您的问题,您想通过 URL 中的身份验证详细信息吗?
  • afaik,没有办法做到这一点。
  • @Erick Sapir:您无法控制典型浏览器发送的标头。如果您嵌入 Web 浏览器控件,您可能能够访问发送的标头,但这确实意味着您必须分发您的特殊浏览器。我的回答包括在 URL 中嵌入凭据并将其作为标头传递的历史方法。
  • 如果你不介意在默认的 WebBrowser 控件中使用 IE,你可以在下面看到我的答案,传递标题并告诉它在新窗口中打开。

标签: c# .net .net-4.0


【解决方案1】:

通过标题,您可以:

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

【讨论】:

  • 我不想在应用程序的网络浏览器对象中打开它,而是在常规浏览器中打开它
  • 最后我用了你的方式。它甚至看起来好多了。
  • 如何获取服务器端的用户名和密码?我的意思是您正在转换为 Base64 字符串。如何将信息提取回来?
  • 通常通过服务器变量集合,例如$_SERVER['PHP_AUTH_USER'] 在 PHP 中
【解决方案2】:

您可以尝试旧的“in URL”格式,但它不安全:

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

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

【讨论】:

  • Chrome 也禁用了此功能。
【解决方案3】:

尝试使用类似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();
  }
}

【讨论】:

【解决方案4】:

首先检查此代码:

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?

更新

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

【讨论】:

  • 非常感谢您对所有答案投反对票!
  • 这是一个我很少在 SO 上看到的白痴
  • 我认为投反对票是因为他想在浏览器中而不是在他的应用程序中执行此操作。并不是说我认为你的答案不是一个更好的答案。
【解决方案5】:

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

            }

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

【讨论】:

    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2013-01-18
    相关资源
    最近更新 更多