代码之家  ›  专栏  ›  技术社区  ›  Shiv Deepak

Google Chrome的奇怪用户代理

  •  30
  • Shiv Deepak  · 技术社区  · 15 年前

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

    我的Ubuntu笔记本电脑上安装了Google Chrome 7.0.517.41测试版。 现在,afaik my user agent应该接近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 回复  |  直到 12 年前
        1
  •  46
  •   Piskvor left the building Rohit Kumar    15 年前

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

    • Mozilla——20世纪90年代早期最古老的文物
    • x11-使用的图形界面
    • Linux i686-操作系统和处理器类型
    • 英语-您的地区(英语、美国)
    • AppleWebKit/534.7-实际渲染引擎
    • (khtml,像gecko)-浏览器嗅探的另一个产物:“gecko”是FF渲染引擎,khtml是另一个浏览器。
    • Chrome/7.0.517.41-实际浏览器版本
    • Safari/537——另一个反对脚本嗅探“Safari”的人工制品(使用相同的引擎)

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

        2
  •  7
  •   Community Mohan Dere    9 年前

    基本上,mozilla代表“mozilla兼容”,而“khtml,like gecko”则描述渲染引擎。

    从本质上讲,Chrome的用户代理字符串表示“我与Mozilla兼容,我的渲染引擎就像壁虎一样”,以此向开发人员描述自己。

    大多数(如果不是所有的)浏览器都将自己标识为Mozilla兼容的一种遗留物,而不考虑与Mozilla基金会的关联。是的,甚至是Internet Explorer。

    有关字符串的详细信息,请访问: Mozilla's developer center.

    另外,如果您是基于用户代理字符串开发的,不要这样做。您会发现自己处于一个受伤的世界:浏览器升级以实现功能,而您的用户代理嗅探可能仍然会排除这些功能,用户代理字符串可能会被欺骗,好的老歌剧喜欢将自己报告为Internet explo t。旧版本中的RER。

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

        3
  •  2
  •   gblazex    15 年前

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

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

        4
  •  1
  •   mdrg    15 年前

    如前所述,用户代理字符串是这样的。

    你没有明确地说出来,但是如果你打算使用useragent字符串来检测用户的浏览器,请使用一些好的代码来完成这项工作(也就是说,不要着急自己编写代码,这样做是不对的)。

    这是一个不错的,我以前用过几次: Browser detect .

        5
  •  0
  •   Abhishek Goel    12 年前

    在尝试了我最终使用的一切之后: http://www.useragentstring.com/

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

    希望它能帮上忙。!!!