谷歌浏览器的奇怪用户代理

时间:2010-10-26 13:39:50

标签: javascript user-agent

我正在使用一些JavaScript,并在我的谷歌浏览器中找到了一个奇怪的用户代理。

我的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

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

5 个答案:

答案 0 :(得分:46)

UA字符串讲述了(in)兼容性尝试的漫长而悲惨的历史。 See e.g. this for a brief history of the UA。它还应该清楚地表明,UA嗅探是无用的,因为每个现代浏览器都假装许多其他浏览器。这也是你在这里看到的情况:

  • Mozilla--最古老的人工制品,可追溯到20世纪90年代初期。
  • X11 - 使用的图形界面
  • Linux i686 - 操作系统和处理器类型
  • en_US - 您的区域设置(英语,美国)
  • AppleWebKit / 534.7 - 实际渲染引擎
  • (KHTML,与Gecko一样) - 浏览器嗅探的另一个神器:“Gecko”是FF渲染引擎,KHTML是另一个浏览器
  • Chrome / 7.0.517.41 - 实际的浏览器版本
  • Safari / 537 - 另一个反对脚本嗅探“Safari”(使用相同引擎)的工件

简而言之:一些破碎的网站认为“只允许使用Mozilla / Firefox / Webkit /其他人”这是一个明智的政策;反过来,浏览器开始撒谎,以解决这些人为障碍。 UA字符串的结果是:臃肿软件,充满了无用的垃圾。

答案 1 :(得分:7)

基本上,Mozilla代表“Mozilla兼容”,而“像Gecko一样的KHTML”代表渲染引擎。

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

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

有关字符串的更多信息,请参阅:Mozilla's developer center.

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

用户代理字符串就像那样。

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

这是一个很好的,我以前用了几次:Browser detect

答案 4 :(得分:0)

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

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

希望它有所帮助.. !!!