如何让WebBrowser控件假装它是Firefox浏览器?

时间:2012-02-28 01:02:02

标签: .net vb.net webbrowser-control

我使用的是一个VB.NET程序,它使用WebBrowser控件来导航Web。我需要导航到的网站突然变得不适合IE浏览器。因此,我正在考虑尝试让网站查看WebBrowser控件不是IE,而是Mozilla Firefox浏览器。 我怎样才能做到这一点? 我可以更改控件发送的HTTPrequest标头吗?或类似的东西? 谢谢!

-------------编辑--------------

嗨,xxbbcc!谢谢你的大答案。 HttpWebRequest是我离开的唯一选择。我过去常常使用它,但我怀疑它是否适用于我需要的网站。

问题是 - 该站点使用大量脚本来构建网页,而必须单击的按钮实际上是一个唤起脚本的链接,然后页面进一步构建。最终的HTML代码就是我所需要的。

现在问题比我想象的要复杂得多。在请求标头中指定了什么用户代理并不重要(我发现它与Fiddler,感谢jfmags)。似乎重要的是,在网站将浏览器重定向到HTTPS地址后,Firefox会继续发送HTTP / 1.1请求,而IE则开始发送HTTP / 1.0请求,这就是它可能失败的方式。这是由网站所有者设计的。我在网上发现了关于此问题的讨论http://answers.microsoft.com/en-us/ie/forum/ie8-windows_other/how-to-force-ie-to-use-http11-over-ssl-through/360eca2d-e290-4078-ad37-7665bec706c4,但似乎没有结论。我曾经使用Mozilla ActiveX控件,但现在已经过时了,因为该项目已经停止。

我所说的网站是臭名昭着的site

我知道,我是海盗,很糟糕。通过下载一部电影,我可能会给一些庞大且极其富有的公司造成数百万美元的损失。但是在我居住的地方,购买带有原始声音的电影是不可能的,它们都会被配音瘫痪。那么,我还有什么选择呢?我喜欢电影。

我将尝试查看HttpWebRequest是否可以将其关闭。

3 个答案:

答案 0 :(得分:1)

您可以阅读GeckoFX。它是一个类似于WebBrowser的控件,但它运行在Gecko引擎上(同样的引擎Firefox运行)。

http://code.google.com/p/geckofx/

答案 1 :(得分:0)

你做不到。 Web浏览器控件 Internet Explorer。

答案 2 :(得分:0)

您可以更改请求标头以将浏览器控件设置为Firefox,但您获得的响应将针对Firefox,而不是针对IE,因此WebBrowser控件可能无法正确呈现。

实际上,WebBrowser控件是IE。

修改

在您的评论中说,您只需要页面的HTML来模拟该页面上的按钮点击。如果是这种情况,您可以尝试使用HttpWebRequest / HttpWebResponse对象向服务器发送/接收HTTP请求。您可以使用它们发送任何标头,以便通过发送正确的标头轻松模拟任何浏览器。您可以使用Fiddler首先导航到该站点并将请求保存在Firefox中,然后使用这些请求中的信息来构建您的HttpWebRequest对象。

一旦掌握了HTML,您就可以解析它并随意做。如果需要单击触发回发到服务器的按钮,则可以从HTML响应中解析相关数据,然后构建POST请求。 HttpWebRequest适用于同步和异步模式,因此您可以使用几行代码下载页面,也可以控制整个下载过程(这更复杂)。

我知道这不是您最初询问的内容,但如果您实际上不需要显示页面内容,这可能会对您有所帮助。