我正在使用一个使用WebBrowser控件的VB.NET程序来浏览网页。我需要导航的网站突然变得对IE不友好了。因此,我正在考虑尝试让站点看到WebBrowser控件不是IE,而是Mozilla Firefox浏览器。我该怎么做呢?我可以更改控件发送的HTTPrequest标头吗?或者类似的东西?谢谢!
-编辑
嗨,xxbbcc!谢谢你的回答。HttpWebRequest大概是我剩下的唯一选择。我过去经常使用它,但我怀疑它是否能在我需要的网站上工作。
问题是-网站使用了大量的脚本来构建网页,而必须点击的按钮实际上是一个调用脚本的链接,然后页面被进一步构建。最后的HTML代码就是我需要的。
现在的问题比我想象的还要复杂。在请求头中指定什么user-agent绝对无关紧要(多亏了jfmags,我通过Fiddler发现了这一点)。似乎重要的是,在站点将浏览器重定向到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是否能做到这一点。
发布于 2012-02-28 09:13:33
您可以更改请求头部以将浏览器控件伪装为Firefox,但您将获得的响应将是针对Firefox的,而不是针对IE的,因此WebBrowser控件可能无法正确呈现它。
实际上,WebBrowser控件就是IE。
编辑
在您的评论中,您只需要页面的HTML来模拟按钮在该页面上的点击。如果是这种情况,您可以尝试使用HttpWebRequest/HttpWebResponse对象向服务器发送/接收HTTP请求。您可以使用它们来发送任何标头,因此您可以通过发送正确的标头轻松地模拟任何浏览器。您可以使用Fiddler首先导航到站点并将请求保存在Firefox中,然后使用这些请求中的信息来构建HttpWebRequest对象。
一旦您有了HTML,您就可以解析它并随心所欲地做任何事情。如果您需要单击触发回发到服务器的按钮,则可以解析HTML响应中的相关数据,然后构建POST请求。HttpWebRequest可以在同步和异步模式下工作,因此您可以使用几行代码下载页面,也可以控制整个下载过程(这比较复杂)。
我知道这不是你最初想要的,但如果你实际上不需要显示页面内容,这对你来说可能更好。
https://stackoverflow.com/questions/9474872
复制相似问题