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