Firefox 使用者代理字串參考

本文件描述了 Firefox 4 及更高版本以及基於 Gecko 2.0 及更高版本的應用程式中使用的使用者代理字串。有關 Gecko 2.0 中字串變化的詳細資訊,請參閱Firefox 4 的終端使用者代理字串(部落格文章)。另請參閱有關使用者代理嗅探的文件以及這篇Hacks 部落格文章

通用格式

Firefox 自身的使用者代理字串分為四個部分

Mozilla/5.0 (platform; rv:gecko-version) Gecko/gecko-trail Firefox/firefox-version

  • Mozilla/5.0 是一個通用令牌,表示瀏覽器與 Mozilla 相容,並且在當今幾乎所有瀏覽器中都很常見。

  • platform 描述了瀏覽器執行的本機平臺(例如,Windows、Mac、Linux 或 Android),以及它是否是手機。Firefox OS 手機顯示 Mobile;Web 是平臺。請注意,platform 可以由多個以 ; 分隔的令牌組成。有關更多詳細資訊和示例,請參見下文。

  • rv:gecko-version 表示 Gecko 的釋出版本(例如 17.0)。

  • Gecko/gecko-trail 表示瀏覽器基於 Gecko。

  • 在桌面裝置上,gecko-trail 是固定字串 20100101

  • Firefox/firefox-version 表示瀏覽器是 Firefox,並提供版本(例如 17.0)。

  • 從移動裝置上的 Firefox 10 開始,gecko-trailfirefox-version 相同。

注意:嗅探基於 Gecko 的瀏覽器的推薦方法(如果您必須嗅探瀏覽器引擎而不是使用特性檢測)是透過存在 Geckorv: 字串,因為一些其他瀏覽器包含 like Gecko 令牌。

對於其他基於 Gecko 的產品,字串可以採用以下兩種形式之一,其中令牌的含義相同,除了下面提到的那些

Mozilla/5.0 (platform; rv:gecko-version) Gecko/gecko-trail app-name/app-version Mozilla/5.0 (platform; rv:gecko-version) Gecko/gecko-trail Firefox/firefox-version app-name/app-version

  • app-name/app-version 表示應用程式名稱和版本。例如,這可以是 Camino/2.1.1SeaMonkey/2.7.1
  • Firefox/firefox-version 是一個可選的相容性令牌,一些基於 Gecko 的瀏覽器可能會選擇包含它,以實現與期望 Firefox 的網站的最大相容性。firefox-version 通常表示與給定 Gecko 版本對應的 Firefox 等效版本。一些基於 Gecko 的瀏覽器可能不會選擇使用此令牌;因此,嗅探器應該尋找 Gecko——而不是 Firefox!

移動裝置和平板裝置指示符

使用者代理字串的 platform 部分指示 Firefox 是否在手機大小或平板裝置上執行。當 Firefox 在具有手機外形的裝置上執行時,使用者代理字串的 platform 部分會有一個 Mobile; 令牌。當 Firefox 在平板裝置上執行時,使用者代理字串的 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 媒體查詢。但是,如果您使用使用者代理嗅探來將內容定位到裝置外形,請尋找 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)。

Windows 版本 Gecko 使用者代理字串
x86 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

注意:在 Windows 11 上,aarch64 CPU 被報告為 x86_64,在 Windows 10 上被報告為 x86(因為它不支援 x64 模擬)。請參閱Bugzilla #1763310

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

注意:在 Firefox 127.0 及更高版本中,32 位 x86 現在將在 Firefox 的使用者代理字串、navigator.platformnavigator.oscpu 中報告為 x86_64(請參閱Firefox 127.0 釋出說明)。

適用於 Android 的 Firefox

適用於 Android 的 Firefox 在平臺令牌中包含 Android 版本。為了提高互操作性,如果瀏覽器在版本低於 4 的系統上執行,它將報告 4.4。Android 4 及更高版本會準確報告版本。請注意,所有 Android 版本都附帶相同功能相同的 Gecko。

外形 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/<focus version> Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>

WebView 上的平板電腦版本與移動版映象,但不包含 Mobile 令牌。

從版本 6 開始,使用者可以選擇使用基於 GeckoView 的 Focus for Android,並帶有隱藏的首選項:它使用 GeckoView 使用者代理字串來宣傳 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

適用於 iOS 的 Firefox 使用預設的 Mobile Safari 使用者代理字串,在 iPod 和 iPhone 上附加了一個 FxiOS/<version> 令牌,類似於適用於 iOS 的 Chrome 如何識別自己

外形 適用於 iOS 的 Firefox 使用者代理字串
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

適用於 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/<firefox-version> 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/<firefox-version> 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 使用者代理字串
手機 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 強烈不鼓勵,但一些手機制造商不幸地在其裝置的使用者代理字串中包含一個表示其裝置 ID 的令牌。如果出現這種情況,Firefox OS 使用者代理字串將類似於上表中裝置專用的字串,其中 nnnn; 是製造商的裝置程式碼(請參閱指南)。我們注意到其中一些形式為“NexusOne;”、“ZTEOpen;”或“Open C;”(請注意,也不鼓勵使用空格)。我們提供此資訊是為了幫助您的使用者代理檢測邏輯,但 Mozilla 不鼓勵在使用者代理字串中檢測裝置 ID。

以下是一個 JavaScript 正則表示式,可以檢測所有移動裝置,包括使用者代理字串中包含裝置 ID 的裝置

js
/mobi/i;

i 使其不區分大小寫,mobi 匹配所有移動瀏覽器。

Firefox OS 版本號

雖然 Firefox OS 的版本號未包含在使用者代理字串中,但可以透過使用者代理字串中存在的 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 擁有。

另見