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 擁有。

另請參閱