【问题标题】:What UserAgent is reported by the WebBrowser control?WebBrowser 控件报告了什么 UserAgent?
【发布时间】:2010-12-05 08:14:22
【问题描述】:

只是想知道 VB.NET 在访问网页时读取的浏览器类型。例如,在我的网站上,它显示了访问我网站的所有不同浏览器的细分。

【问题讨论】:

  • 这是在你做 Web 请求的时候吗?

标签: .net vb.net winforms webbrowser-control user-agent


【解决方案1】:

您没有为您的问题提供太多背景信息,但我假设您谈论的是使用 .NET Framework 中内置的 WebBrowser control 时发送的 User Agent string

由于该控件仅使用 Internet Explorer 呈现页面,因此您会看到一个用户代理字符串,该字符串与您在同一台计算机上使用 IE 访问该页面时所看到的非常相似。 IE 字符串通常将自身报告为Mozilla/4.0 compatible,但也给出了特定版本的 MSIE 并列出了当前版本的 Windows。

例如,在 .NET Framework 4.0 版本的 64 位版本的 Windows Server 2008 R2 下运行时,每当我从 WebBrowser 控件浏览页面时,我都会被识别为:

Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1)

相比之下,同一台机器上的 Internet Explorer 将其显示为用户代理字符串:

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

唯一的区别是 .NET WebBrowser 控件将自己报告为 Internet Explorer 版本 7.0 (MSIE 7.0),而不是计算机上安装的版本 8.0。这是因为出于兼容性原因,该控件使用 IE 7 渲染引擎,而不是 IE 8 中的渲染引擎。如果需要,您可以通过编辑注册表值来change this

要在 IE8 标准模式下运行 WebBrowser 控件,请在注册表中使用以下新值:

[(HKEY_CURRENT_USER 或 HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "MyApplication.exe" = dword 8000 (Hex: 0x1F40)

要在 IE7 标准模式下运行,请使用以下注册表值:

[(HKEY_CURRENT_USER 或 HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "MyApplication.exe" = dword 7000 (Hex: 0x1B58)

【讨论】:

  • 这太棒了!马上帮了我。我想知道除了编辑注册表之外是否还有任何其他方式
  • 此链接:ttp://blog.notfaqs.com/2013/05/net-get-user-agent-string-of-webbrowser.html 帮助我在运行时获取详细信息。导航器对象的有意义的属性似乎是 userAgent、appCodeName、appName、appVersion 和平台。
  • @wpfwannabe,您可以使用X-UA-Compatible,这将使浏览器使用正确的文档模式来呈现页面。不幸的是,X-UA-Compatible 本身不会更改用户代理字符串,我们必须使用 hack 来使用 JavaScript 在客户端替换代理字符串。但不需要更改注册表项。
猜你喜欢
  • 2011-12-20
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 2013-12-22
相关资源
最近更新 更多