Firefox 用户代理字符串参考
本文档介绍了 Firefox 4 及更高版本和基于 Gecko 2.0 及更高版本的应用程序中使用的用户代理字符串。有关 Gecko 2.0 中字符串变化的细目,请参阅 Firefox 4 的最终用户代理字符串博文。另请参阅本文档中的用户代理嗅探和这篇 Hacks 博文。
一般形式
Firefox 的用户代理字符串可被拆分为以下四个部分:
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
Mozilla/5.0
是表示浏览器与 Mozilla 兼容的通用标记,目前几乎所有浏览器都使用该标记。platform
描述浏览器运行的本地平台(如 Windows、Mac、Linux 或 Android),以及是否是手机。Firefox OS 手机显示“Mobile
”;web 就是它的平台。请注意,platform
可以由多个“;”分隔的标记组成。详情和示例请参阅下文。rv:geckoversion
表示 Gecko 的发行版本(如“17.0
”)。Gecko/geckotrail
表示浏览器基于 Gecko。- 在桌面上,
geckotrail
是固定字符串“20100101
”。 Firefox/firefoxversion
表示浏览器是 Firefox,并提供版本(如“17.0
”)。- 从移动版 Firefox 10 开始,
geckotrail
与firefoxversion
相同。
备注:
嗅探基于 Gecko 的浏览器(如果你必须嗅探浏览器引擎而不是使用特性检测)的推荐方法是检测“Gecko
”和“rv:
”字符串是否存在,因为某些其他浏览器包含"like Gecko
"标记。
对于其他基于 Gecko 的产品,UA 字符串会符合以下两个规则中的一个,除了下面的描述外,其他字段与上面描述的意义相同。
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 的浏览器可能不会使用此标记,因此,在检测的时候,应当使用 Gecko 而非 Firefox。
在 Firefox 4 和 Gecko 2.0 之前,扩展和插件可以添加用户代理部分,但自从 Firefox bug 581008 以来就不可能了。
手机和平板电脑指示器
UA 字符串的 platform
部分表示 Firefox 是在手机还是平板设备上运行。当 Firefox 在手机设备上运行时,UA 字符串的 platform
部分包含一个 Mobile;
标记。当 Firefox 在平板设备上运行时,UA 字符串的 platform
部分会出现 Tablet;
标记。例如:
Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0 Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0
备注: 版本号无关。请避免据此推断材料。
将内容定位到设备外形尺寸的首选方法是使用 CSS 媒体查询。但是,如果你使用 UA 嗅探将内容定位到设备外形,请在手机外形中查找 Mobi(包括使用 "Mobi "的 Opera Mobile),而不要假设“Android”与设备外形之间存在任何关联。这样,如果 Firefox 浏览器采用其他手机/平板电脑操作系统,或者笔记本电脑采用 Android 系统,你的代码也能正常工作。此外,请使用触摸检测来查找触摸设备,而不是查找“Mobi”或“Tablet”,因为可能存在不是平板电脑的触摸设备。
备注: Firefox OS 设备在标识自己时不标注任何操作系统,例如“Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0”。web 就是它的平台。
Windows
Windows 用户代理有以下变化,其中 x.y 是 Windows NT 版本(例如 Windows NT 6.1)。
Linux
Linux 是一个更加多样化的平台。你的 Linux 发行版可能包含一个可改变你的用户代理的扩展。下面是几个常见的例子。
Linux 版本 | Gecko 用户代理字符串 |
---|---|
在 i686 CPU 上运行的 Linux 桌面版 | Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 |
在 x86_64 CPU 上运行的 Linux 桌面版 | Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Android(版本 40 及以下)
设备类型 | Gecko 用户代理字符串 |
---|---|
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 |
Android(版本 41 及以上)
从版本 41 开始,Android 版 Firefox 浏览器将把 Android 版本作为 platform 标记的一部分。为提高互操作性,如果浏览器运行的版本低于 4,它将报告 4.4。Android 4 及以上版本将准确报告版本。请注意,所有版本的 Android 系统都使用具有相同功能的 Gecko。
设备类型 | Gecko 用户代理字符串 |
---|---|
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 |
Android 版 Focus
从版本 1 开始,Focus 由 Android WebView 支持,并使用以下用户代理字符串格式:
Mozilla/5.0 (Linux; <Android Version> <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Version/4.0 Focus/<focusversion> Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>
WebView 上的平板电脑版本与手机版本基本相同,但不包含 Mobile
标记。
从第 6 版开始,用户可以选择使用基于 GeckoView 的安卓版 Focus,它有一个隐藏偏好:使用 GeckoView UA 字符串来宣传 Gecko 兼容性。
Focus 版本(渲染引擎) | 用户代理字符串 |
---|---|
1.0 (WebView Mobile) | Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Mobile Safari/537.36 |
1.0 (WebView Tablet) | Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Safari/537.36 |
6.0 (GeckoView) | Mozilla/5.0 (Android 7.0; Mobile; rv:62.0) Gecko/62.0 Firefox/62.0 |
Android 版 Klar
自版本 4.1 起,Android 版 Klar 使用与 Android 版 Focus 相同的 UA 字符串。在版本 4.1 之前,它发送的是 Klar/<version> product/version 标记。
Klar 版本(渲染引擎) | 用户代理字符串 |
---|---|
1.0 (WebView) | Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Klar/1.0 Chrome/58.0.3029.83 Mobile Safari/537.36 |
4.1+ (WebView) | Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/4.1 Chrome/62.0.3029.83 Mobile Safari/537.36 |
6.0+ (GeckoView) | Mozilla/5.0 (Android 7.0; Mobile; rv:62.0) Gecko/62.0 Firefox/62.0 |
iOS 版 Focus
iOS 版 Focus 7 使用的用户代理字符串格式如下:
Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/7.0.4 Mobile/16B91 Safari/605.1.15
注意:该用户代理是从 iPhone XR 模拟器上获取的,在不同设备上可能有所不同。
Fire TV 版 Firefox
Fire TV 版 Firefox 3(也可能是更早版本)使用的用户代理字符串格式如下:
Mozilla/5.0 (Linux; <Android version>) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/<firefoxversion> Chrome/<Chrome Rev> Safari/<WebKit Rev>
Firefox TV 版本 | 用户代理字符串 |
---|---|
v3.0 | Mozilla/5.0 (Linux; Android 7.1.2) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/3.0 Chrome/59.0.3017.125 Safari/537.36 |
Echo Show 版 Firefox
从版本 1.1 起,Echo Show 版 Firefox 使用的用户代理字符串格式如下:
Mozilla/5.0 (Linux; <Android version>) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/<firefoxversion> Chrome/<Chrome Rev> Safari/<WebKit Rev>
Echo Show 版 Firefox 版本 | 用户代理字符串 |
---|---|
v1.1 | Mozilla/5.0 (Linux; Android 5.1.1) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.1 Chrome/59.0.3017.125 Safari/537.36 |
Firefox OS
设备类型 | Gecko 用户代理字符串 |
---|---|
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 |
设备特定 | 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 正则表达式,包含那些 UA 字符串中包含设备 id 的设备:
/mobi/i;
其中 i
为大小写敏感的标记,而 mobi
则将匹配所有的移动设备。
Firefox OS 版本号
由于 Firefox OS 的版本号未被包含于 UA 字符串中,我们可以通过 UA 字符串中的 Gecko 版本号来推断其版本信息。
Firefox OS 版本号 | Gecko 版本号 |
---|---|
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 OS,在其名字中包含了 Firefox OS 与 Gecko 的版本号。
Firefox OS 的版本号由 4 位数字组成:X.X.X.Y
。前两位数字由 Mozilla 产品团队决定,表明是包含新特性的版本(如:v1.1, 1.2 等)。第三位数字随安全更新而自增(约 6 周左右),第四位数字由 OEM 维护。