.NET webbrowser控件 - 自动进入弹出登录表单

时间:2013-09-04 13:26:33

标签: .net forms proxy webbrowser-control

希望这不会太痛苦......

我正在尝试从webbrowser控件访问一个网站,我尝试了两种方法(实际上,通过Google搜索混合结果更多)有以下问题:

 URL = "http://username:password@thewebsite.com"
 WebBrowser1.Navigate(URL)

1:此方法会弹出窗口安全性,要求我登录公司代理。我想这是因为我使用网站的用户名/密码,而URL导航正试图将其输入代理?

如果我尝试通过这样做来自动/避免代理位:

Dim Headers As String = "Proxy-Authorization: Basic " & Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("USERNAME:PASSWORD"))
WebBrowser1.Navigate(URL, "", Encoding.Unicode.GetBytes(String.Empty), Headers)

我仍然遇到失败,因为无论如何都会弹出代理登录框。

2: 如果我直接访问网站而不编辑网址:

 URL = "http://thewebsite.com"
 WebBrowser1.Navigate(URL)

然后它带我到没有任何代理消息的网站(太棒了!)但网站然后弹出一个我需要填充的登录框。可悲的是,我无法掌握任何元素(自动化),因为它是一个在Web浏览器控件之外弹出的窗体,我似乎无法查询它或弄清楚如何输入它。

有没有人对我接下来要尝试的内容有任何想法?有没有办法从方法2获取登录表单填充自己或至少让我查看该页面的来源?在正确填充之前,我无法点击它。

我似乎无法获得任何可以处理这两种登录表单的工作,它可能是其中之一。 (两种形式看起来像Windows标准登录提示,它们没有内置到网页中)。 感谢

1 个答案:

答案 0 :(得分:1)

您需要实施支持IServiceProvider的自定义浏览器控制网站,并提供IAuthenticate作为服务。只要需要登录凭据,浏览器控件就会回调您的IAuthenticate实施。

以下q / a可能会帮助您入门,尽管代码在C#中:

WEbbrowser control autheticate not working when access file folder [原始拼写保留]。

Implement IDispatch::Invoke to be called by a WebBrowser control

[已编辑] 更具体地说,您需要实施IAuthenticateEx,这样您就可以通过AUTHENTICATEINFO.dwFlags区分代理和网站身份验证。

相关问题