©
本文档使用 PHP中文网手册 发布
本文档描述了 Firefox 4 及更高版本中使用的用户代理字符串以及基于 Gecko 2.0 和更高版本的应用程序。有关 Gecko 2.0 中字符串更改的详细信息,请参阅 Firefox 4的最终用户代理字符串(博客文章)。关于用户代理嗅探和这个 Hacks博客文章,另请参阅此文档。
Firefox 本身的 UA 字符串被分解为四个组件:
Mozilla / 5.0(platform ; rv:geckoversion)Gecko / geckotrail Firefox / firefoxversion
Mozilla / 5.0 是一款表示浏览器兼容 Mozilla 的通用标记,并且几乎适用于今天的所有浏览器。
平台描述浏览器运行的本地平台(例如Windows,Mac,Linux 或 Android)以及它是否是手机。Firefox OS 手机只是说“手机”; 网络就是平台。请注意,平台可以由多个“;”分隔的令牌组成。请参阅下面的进一步细节和示例。
rv:geckoversion 表示 Gecko 的发布版本(例如“17.0”)。在最近的浏览器中,geckoversion 与 firefoxversion 相同。
Gecko / geckotrail 表明浏览器基于 Gecko。
在桌面上,geckotrail 是固定字符串“20100101”
Firefox / firefoxversion 表示浏览器是 Firefox,并提供版本(例如“ 17.0”)。
从手机上的 Firefox 10开始,geckotrail 和 firefoxversion 一样
对于基于 Gecko 的浏览器(如果您必须嗅探浏览器引擎而不是使用功能检测),推荐使用 “ Gecko ” 和 “ rv: ”字符串,因为其他浏览器包含 “ like Gecko “ 令牌。
对于其他基于 Gecko 的产品,字符串可以采用两种形式之一,其中令牌具有相同的含义,但下面提到的除外:
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail appname/appversion
Mozilla / 5.0(platform ; rv:geckoversion)Gecko / geckotrail Firefox / firefoxversion appname / appversion
appname / appversion 指示应用程序名称和版本。例如,这可以是 “ Camino / 2.1.1 ”或“ SeaMonkey / 2.7.1 ”。
Firefox / firefoxversion 是一个可选的兼容性令牌,一些基于 Gecko 的浏览器可能会选择合并,以实现与期望Firefox的网站的最大兼容性。firefoxversion 通常会代表与给定的 Gecko 版本相对应的等效 Firefox 版本。一些基于 Gecko 的浏览器可能不会使用此令牌; 出于这个原因,嗅探器应该寻找壁虎 - 而不是 Firefox!此标记是否显示由 “general.useragent.compatMode.firefox” 布尔值前缀控制。
需要 Gecko 11.0(Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)
UA 字符串的平台部分指示 Firefox 是否在手机尺寸或平板电脑设备上运行。当 Firefox 在具有手机外形的设备上运行时,会出现 Mobile; 令牌在 UA 字符串的平台部分。当 Firefox 在平板电脑设备上运行时,有一款平板电脑; 代替UA字符串的平台部分中的令牌。例如:
Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0
版本号不相关。避免基于这些推断材料。
将内容定位到设备外形的首选方式是使用 CSS Media Queries。但是,如果您使用 UA 嗅探到目标内容到设备的外形尺寸,请认准摩比(包括Opera移动,它采用“牧高笛”)手机的外形和你没有承担的 “Android” 和设备之间的任何关联构成因素。这样,如果/当 Firefox 在其他手机/平板电脑操作系统上发布或 Android 用于笔记本电脑时,您的代码将可以正常工作。此外,请使用触摸检测来寻找触摸设备,而不是寻找“手机”或“平板电脑”,因为可能有触摸设备不是平板电脑。
Firefox OS 设备在没有任何操作系统指示的情况下自行识别; 例如: “Mozilla / 5.0(Mobile; rv:15.0)Gecko / 15.0 Firefox / 15.0”。网络是平台。
Windows 用户代理具有以下变体,其中 xy 是 Windows NT 版本(例如 Windows NT 6.1)。
Windows version | Gecko user agent string |
---|---|
Windows NT on x86 | Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
Windows NT, Win64 on x64 | Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Windows NT, WOW64 | Mozilla/5.0 (Windows NT x.y; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0 |
这里,xy 是 Mac OS X 的版本(例如,Mac OS X 10.6)。
Mac OS X version | Gecko user agent string |
---|---|
Mac OS X on Intel x86 or x86_64 | Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
Mac OS X on PowerPC | Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
Linux 是一个更多元化的平台。下面给出几个常见的例子。
Linux version | Gecko user agent string |
---|---|
Linux desktop, i686 | Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 |
Linux desktop, x86_64 | Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Linux desktop, i686 running on x86_64 | Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Nokia N900 Linux mobile, on the Fennec browser | Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0 |
Form factor | Gecko user agent string |
---|---|
Phone | Mozilla/5.0 (Android; Mobile; rv:40.0) Gecko/40.0 Firefox/40.0 |
Tablet | Mozilla/5.0 (Android; Tablet; rv:40.0) Gecko/40.0 Firefox/40.0 |
从版本41开始,适用于 Android 的 Firefox 将包含 Android 版本作为平台令牌的一部分。为了提高互操作性,如果浏览器运行在低于4的版本上,它将报告4.4。Android 版本4及以上将准确报告版本。请注意,相同的 Gecko 具有相同的功能,可以运送到所有版本的 Android。
Form factor | Gecko user agent string |
---|---|
Phone | Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0 |
Tablet | Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0 |
Form factor | Gecko user agent string |
---|---|
Phone | Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 |
Tablet | Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0 |
TV | Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0 |
Device-specific | Mozilla/5.0 (Mobile; nnnn; rv:26.0) Gecko/26.0 Firefox/26.0 |
尽管 Mozilla 非常消极,但一些手机制造商不幸在其设备的 UA 字符串中包含代表其设备 ID 的令牌。如果是这种情况,则 Firefox OS UA 字符串将看起来像上表中的设备特定字符串,其中 nnnn ; 是设备的制造商代码(请参阅指南)。其中一些我们注意到的形式是 “ NexusOne ”,“ ZTEOpen ”或“ Open C; ”(注意放置空间也是不鼓励的)。我们提供此信息以协助您的 UA 检测逻辑,但 Mozilla 不鼓励检测 UA 字符串中的设备 ID。
这是一个 JavaScript 正则表达式,它将检测所有移动设备,包括设备 ID 在其 UA 字符串中的设备:
/mobi/i
这使其不区分i
大小写,mobi
匹配所有移动浏览器。
虽然 Firefox OS 的版本号未包含在 UA 字符串中,但可以根据 UA 字符串中存在的 Gecko 版本号推断版本信息。
Firefox OS version number | Gecko version number |
---|---|
1.0.1 | 18.0 |
1.1 | 18.1 |
1.2 | 26.0 |
1.3 | 28.0 |
1.4 | 30.0 |
2.0 | 32.0 |
2.1 | 34.0 |
2.2 | 37 |
2.5 | 44 |
通过查看 Mercurial 存储库名称很容易找到对应关系:从mozilla-b2g
Firefox 开始的版本库是 Firefox OS 的版本库,并且 Firefox OS和Gecko 版本都以它们的名字命名。
Firefox OS 具有四位数版本号:XXXY 前两位数字由 Mozilla 产品团队拥有,并表示具有新功能(例如 v1.1,1.2等)的版本。第三位数字随着常规版本标签(大约每6周)增加一次安全更新,第四位数字由 OEM 拥有。
适用于 iOS 的 Firefox 使用默认 Mobile Safari UA 字符串,并具有附加的 FxiOS / <版本>标记,这与 Chrome for iOS标识自身的方式类似。
Form factor | Firefox for iOS user agent string |
---|---|
iPod | Mozilla/5.0 (iPod touch; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4 |
iPhone | Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4 |
iPad | Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4 |
Web Runtime 使用与桌面版 Firefox 相同的用户代理字符串。
这些是来自不同平台上其他基于 Gecko 的浏览器的一些示例UA字符串。请注意,其中很多尚未在 Gecko 2.0 上发布!
Browser | Gecko user agent string |
---|---|
Firefox for Maemo (Nokia N900) | Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1 |
Camino on Mac | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1 |
SeaMonkey on Windows | Mozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
SeaMonkey on Mac | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
SeaMonkey on Linux | Mozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
在 Firefox 4 和 Gecko 2.0 之前,扩展可以通过general.useragent.extra.identifier
首选项添加用户代理部分,(参见过时的用户代理字符串参考)。但是自从 bug 581008 以来,这是不可能的。
从前,特定插件,插件或扩展程序添加了用户代理部件以通知其安装的站点。推荐的做法是,如果它是绝对必要的(记住它会减慢每个请求的速度)是设置一个自定义 HTTP 头。