我正在使用一些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
为什么会发生这种情况..我已经禁用了所有已安装的扩展程序,但它仍然是相同的。
答案 0 :(得分:46)
UA字符串讲述了(in)兼容性尝试的漫长而悲惨的历史。 See e.g. this for a brief history of the UA。它还应该清楚地表明,UA嗅探是无用的,因为每个现代浏览器都假装许多其他浏览器。这也是你在这里看到的情况:
简而言之:一些破碎的网站认为“只允许使用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你可以直接使用...
希望它有所帮助.. !!!