使用 Google Chrome 的奇怪用户代理

Posted

技术标签:

【中文标题】使用 Google Chrome 的奇怪用户代理【英文标题】:Strange User Agent With Google Chrome 【发布时间】:2011-04-30 18:26:21 【问题描述】:

我正在使用一些 javascript,并在我的 Google Chrome 中发现了一个奇怪的用户代理。

我的 Ubuntu 笔记本电脑上安装了 Google Chrome 7.0.517.41 测试版。 现在 AFAIK 我的用户代理应该接近 Chrome/7.0.517.41

但它正在向我展示:

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.7 (Khtml, like Gecko) Chrome/7.0.517.41 Safari/534.7

为什么会发生这种情况..我已经禁用了所有已安装的扩展程序,但它仍然是一样的..

【问题讨论】:

Chrome 一直使用的用户代理。确实,您提到的字符串实际上就在其中。 这背后的可能原因是什么.. 正如我所见,谷歌浏览器与壁虎和 Mozilla 没有关系,但在其用户代理字符串中仍然有这些字符串。 和歌剧出了什么问题.. :o 我在任何地方都没有看到任何提到 Opera,似乎对我来说工作正常 - 所以它没有出现任何问题;) 【参考方案1】:

如上所述,用户代理字符串就是这样。

你没有明确说过,但是如果你打算使用 useragent 字符串来检测用户的浏览器,请使用一些好的代码来做到这一点(即不要自己着急编码,你不会做对了)。

这是我以前用过几次的好方法:Browser detect。

【讨论】:

另外,不要检测浏览器,检测功能(除非您真正对浏览器是什么感兴趣,以保持统计数据)。 User-Agent 令人毛骨悚然的恐怖是人们试图通过检测浏览器版本来检测功能功能的直接结果(换句话说,“是的,检查单词 'Mozilla' 看看我们是否可以使用功能 X”-> 每个人现在在他们的 UA 中使用“Mozilla”这个词)【参考方案2】:

基本上,Mozilla 代表“Mozilla compatible”,而“KHTML,like Gecko”则代表渲染引擎。

本质上,Chrome 的用户代理字符串是在向开发人员描述自己的一种方式,即“我与 Mozilla 兼容,我的渲染引擎就像 Gecko”。

大多数(如果不是每个)浏览器都会将自己标识为与 Mozilla 兼容的一种遗留物,无论与 Mozilla 基金会的隶属关系如何。是的,甚至是 Internet Explorer。

有关一般字符串的更多信息,请访问:Mozilla's developer center.

另外,如果您基于用户代理字符串进行开发,请不要这样做。您只会发现自己处于一个受伤害的世界:浏览器升级以实现功能,而您的用户代理嗅探可能仍将它们排除在外,用户代理字符串可能被欺骗,并且老旧的 Opera 喜欢在旧版本中将自己报告为 Internet Explorer。

相反,请使用feature detection 确定您尝试使用的功能是否存在于给定浏览器中,然后使用或不使用。

【讨论】:

【参考方案3】:

浏览器对自己“撒谎”是有历史原因的。造成这种情况的主要原因是用户代理嗅探。 Opera 是唯一将自己标识为 Opera 的浏览器,所有其他浏览器都使用 Mozilla/5.0 或更旧的 Mozilla/4.0。

您唯一应该知道的是:用户代理字符串不可信,建议使用特征检测。

【讨论】:

【参考方案4】:

UA 字符串讲述了(不)兼容性尝试的漫长而悲惨的历史。 See e.g. this for a brief history of the UA。还应该明确的是,UA 嗅探是无用的,因为每个现代浏览器都伪装成许多其他浏览器。您在此处看到的情况也是如此:

Mozilla - 最古老的人工制品,可追溯到 1990 年代初期 X11 - 使用的图形界面 Linux i686 - 操作系统和处理器类型 en_US - 您的语言环境(英语、美国) AppleWebKit/534.7 - 实际的渲染引擎 (KHTML, like Gecko) - 浏览器嗅探的另一个神器:“Gecko”是FF渲染引擎,KHTML是一个古老的渲染引擎,WebKit的前身(被Konqueror浏览器使用,然后被Apple分叉形成WebKit) Chrome/7.0.517.41 - 实际浏览器版本 Safari/537 - 又一个针对脚本嗅探“Safari”的工件(使用相同的引擎)

简而言之:一些被破坏的网站认为“只允许使用 Mozilla/Firefox/Webkit/whatever 的人”是一个明智的政策;反过来,浏览器开始谎报其起源以绕过这些人为障碍。结果是 UA 字符串:膨胀软件,充满了无用的垃圾。

【讨论】:

一点修正:KHTML是一个渲染引擎,WebKit的前身(被Konqueror浏览器使用)【参考方案5】:

在尝试了所有我最终使用的东西之后:http://www.useragentstring.com/

您可以使用上述网站获取格式化的用户代理和操作系统。 他们有您可以直接使用的 api... 希望对你有帮助..!!!

【讨论】:

以上是关于使用 Google Chrome 的奇怪用户代理的主要内容,如果未能解决你的问题,请参考以下文章

在 Selenium 中更改 Google Chrome 用户代理的方法?

java Selenium设置Chrome代理

如何给google Chrome浏览器设置代理

chrome怎么开启代理服务器

怎样设置google chrome浏览器的代理服务器

怎样设置google chrome浏览器的代理服务器