【问题标题】:Change IE user agent更改 IE 用户代理
【发布时间】:2011-01-09 10:49:01
【问题描述】:

我正在使用 WatiN 来自动化 Internet Explorer,到目前为止效果很好。但是,我真的希望能够更改 IE 的用户代理,以便服务器认为它实际上是 Firefox 或其他浏览器。

Firefox 用户代理字符串类似于:

Mozilla/5.0(Windows;U;Windows NT 6.1;en-US;rv:1.9.2.13)Gecko/20101203 Firefox/3.6.13

用下面的代码

RegistryKey ieKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent");
            ieKey.SetValue("", "Mozilla/5.0");
            ieKey.SetValue("Compatible", "Windows");
            ieKey.SetValue("Version", "U");
            ieKey.SetValue("Platform", "Windows NT 5.1; en-US");
            ieKey.DeleteSubKeyTree("Post Platform");

我已经能够从

更改 IE 用户代理字符串

Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;Trident/4.0;AskTbMP3R7/5.9.1.14019)

Mozilla/4.0(Windows;U;Windows NT 6.1;Trident/4.0;en-US;rv:1.9.2.13)

现在,问题是:如何删除 Trident/4.0 部分并在括号后添加“Gecko/20101203 Firefox/3.6.13”部分?

我真的很想在 C# 中以编程方式执行此操作,而不使用任何 IE 插件。

提前致谢。

【问题讨论】:

  • 查看第二个答案的评论:D

标签: c# internet-explorer watin user-agent


【解决方案1】:

没有支持do this in C# without any IE Addons 的方法,除非 WebBrowser 控件在进程内运行,在这种情况下,您可以使用UrlMkSetSessionOption() API。见The User-Agent String: Use and Abuse

如果您愿意使用add-ons,请参阅http://www.enhanceie.com/ietoys/uapick.asp

现在,我不推荐使用 unsupported hack 来执行此操作 - 即,您可以将 COMPATIBLE 字符串替换为 Firefox UA 的其余部分,然后是 @ 987654328@ 和文字IGNORE:。这将导致 HTTP 标头“包装”到新标头中,因此您将发送类似于以下内容的标头:

用户代理:Mozilla/5.0(Windows;U;Windows NT 6.1;en-US;rv:1.9.2.13)Gecko/20101203 Firefox/3.6.13 忽略:MSIE 8.0;视窗 NT 6.1;三叉戟/4.0; AskTbMP3R7/5.9.1.14019)

【讨论】:

  • 谢谢你的回答,我已经做了一些让用户代理看起来像下面这样的事情:Mozilla/5.0 (compatible; MSIE 8.0; X11; U; Linux i686; en-US; rv: 1.9.1a2pre) (Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8 ; Trident/4.0)。您可以清楚地看到 Gecko 之前通常不会出现的支架,但希望这足以满足我的需求。我也会尝试你建议的方法。谢谢!
【解决方案2】:

我无法想象你为什么要这样做。 其他浏览器需要伪装成 IE 的情况并不少见,因为脑残网站仍然坚持阻止其他任何东西,但我从未听说有人想反过来做.至少在过去十年左右不会。

无论如何,正如您已经发现的那样,使用 IE 并不像使用其他浏览器那样容易。

如果您真的想这样做,我的建议是通过代理,并让代理为您发送欺骗用户代理。这应该相对容易用任何语言编写。您可以在浏览器所在的本地计算机上运行代理,这对浏览器用户和网站都是透明的(在本地计算机上,即使 IP 地址也是正确的,这可能是个问题对于远程代理)

不管怎样,一些防病毒/反恶意软件应用实际上已经这样做了,它们可以选择阻止用户代理和推荐数据,以防止网站跟踪它们。据我所知,他们几乎完全使用了这种技术(同样的本地代理也被用来在恶意软件到达浏览器之前过滤掉它)。

【讨论】:

  • 也感谢您的回答。我这样做的原因是我有时会管理我玩的在线游戏的几个帐户 - 游戏检查 IP、用户代理、要检查的 cookie 是由同一玩家管理的帐户。我真的不想被检测到,所以我想我可以在我的应用程序中制作一个用户代理更改器。
  • 我们遇到了一个客户站点没有更新其页面的桌面版本,但移动版本很好的情况。他们暂时不打算更新桌面,所以我们不得不强制浏览器进入虚假的移动模式,以显示更好的网站版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2013-08-17
相关资源
最近更新 更多