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 开始,geckotrailfirefoxversion 相同。

注意: 如果您必须嗅探浏览器引擎而不是使用功能检测,则推荐嗅探基于 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 的设备

js
/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 拥有。

另请参阅