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

Shi*_*pak 33 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
Run Code Online (Sandbox Code Playgroud)

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

Pis*_*3.0 52

UA字符串讲述了(in)兼容性尝试的漫长而悲惨的历史.有关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字符串的结果是:英国媒体报道,充满了无用的垃圾.


ajm*_*ajm 8

基本上,Mozilla代表"Mozilla兼容",而"KHTML,像Gecko"则代表渲染引擎.

从本质上讲,Chrome的用户代理字符串是"我与Mozilla兼容,我的渲染引擎就像Gecko",这是向开发人员描述自己的一种方式.

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

有关字符串的更多信息,请访问:Mozilla的开发人员中心.

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

相反,使用功能检测来确定您尝试使用的功能是否存在于给定浏览器,然后使用或不使用.