Firefox 用户代理字符串参考
本文档描述了 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 兼容,如今几乎所有浏览器都使用它。platform
描述了浏览器运行的本机平台(例如 Windows、Mac、Linux 或 Android),以及它是否是手机。Firefox OS 手机显示“Mobile
”;网络是平台。请注意,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 的产品,字符串可以采用以下两种形式之一,其中标记具有相同的含义,除了下面提到的标记之外。
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!
移动和平板设备指示器
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”。网络是平台。
Windows
Windows 用户代理具有以下变体,其中x.y 是 Windows NT 版本(例如 Windows NT 6.1)。
Windows 版本 | Gecko 用户代理字符串 |
---|---|
x86 或 aarch64 CPU 上的 Windows NT | Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
x64 CPU 上的 Windows NT | Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0 |
MacOS
这里,x.y 是 macOS 的版本(例如 macOS 10.15)。从 Firefox 87 开始,Firefox 将报告的 macOS 版本号限制为 10.15,因此 macOS 11.0 Big Sur 及更高版本将在用户代理字符串中报告为“10.15”。基于 ARM 的 Mac 将在用户代理字符串中报告为“Intel”。
Mac OS X 版本 | Gecko 用户代理字符串 |
---|---|
x86、x86_64 或 aarch64 上的 Mac OS X | Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
PowerPC 上的 Mac OS X | Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
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 的 Firefox
Firefox for Android 包含 Android 版本作为platform 标记的一部分。为了提高互操作性,如果浏览器运行在低于 4 的版本上,它将报告 4.4。Android 版本 4 及更高版本会准确报告版本。请注意,相同的 Gecko(具有相同的功能)被发布到所有版本的 Android。
外形 | Gecko 用户代理字符串 |
---|---|
手机 | 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 |
适用于 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 for Android,并使用隐藏的偏好设置:它使用 GeckoView UA 字符串来宣传 Gecko 兼容性。
Focus 版本(渲染引擎) | 用户代理字符串 |
---|---|
1.0(WebView 手机) | 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 平板电脑) | 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 |
Klar 用户代理与 Focus 相同。
适用于 iOS 的 Firefox
Firefox for iOS 使用默认的 Mobile Safari UA 字符串,在 iPod 和 iPhone 上添加了FxiOS/<version> 标记,类似于 Chrome for iOS 的自我识别方式。
外形 | Firefox for iOS 用户代理字符串 |
---|---|
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 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15 |
在 iPad 上,用户代理字符串与 Safari 类似。有关在 iOS 上未包含 FxiOS
的各种问题,请参阅 mozilla-mobile/firefox-ios#6620。
适用于 iOS 的 Focus
Focus for iOS 版本 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
Firefox for Fire TV 版本 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 开始,Firefox for Echo Show 使用以下格式的用户代理字符串
Mozilla/5.0 (Linux; <Android version>) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/<firefoxversion> Chrome/<Chrome Rev> Safari/<WebKit Rev>
Firefox for Echo Show 版本 | 用户代理字符串 |
---|---|
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 用户代理字符串 |
---|---|
手机 | Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 |
平板电脑 | Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0 |
电视 | 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 具有四位数的版本号:X.X.X.Y
。前两位数字由 Mozilla 产品团队拥有,表示具有新功能的版本(例如:v1.1、1.2 等)。第三位数字在常规版本标签(大约每 6 周)中递增,用于安全更新,第四位数字由 OEM 拥有。