?
Ce document utilise Manuel du site Web PHP chinois Libérer
本文檔描述了 Firefox 4 及更高版本中使用的用戶代理字符串以及基于 Gecko 2.0 和更高版本的應(yīng)用程序。有關(guān) Gecko 2.0 中字符串更改的詳細信息,請參閱 Firefox 4的最終用戶代理字符串(博客文章)。關(guān)于用戶代理嗅探和這個 Hacks博客文章,另請參閱此文檔。
Firefox 本身的 UA 字符串被分解為四個組件:
Mozilla / 5.0(platform ; rv:geckoversion)Gecko / geckotrail Firefox / firefoxversion
Mozilla / 5.0 是一款表示瀏覽器兼容 Mozilla 的通用標(biāo)記,并且?guī)缀踹m用于今天的所有瀏覽器。
平臺描述瀏覽器運行的本地平臺(例如Windows,Mac,Linux 或 Android)以及它是否是手機。Firefox OS 手機只是說“手機”; 網(wǎng)絡(luò)就是平臺。請注意,平臺可以由多個“;”分隔的令牌組成。請參閱下面的進一步細節(jié)和示例。
rv:geckoversion 表示 Gecko 的發(fā)布版本(例如“17.0”)。在最近的瀏覽器中,geckoversion 與 firefoxversion 相同。
Gecko / geckotrail 表明瀏覽器基于 Gecko。
在桌面上,geckotrail 是固定字符串“20100101”
Firefox / firefoxversion 表示瀏覽器是 Firefox,并提供版本(例如“ 17.0”)。
從手機上的 Firefox 10開始,geckotrail 和 firefoxversion 一樣
對于基于 Gecko 的瀏覽器(如果您必須嗅探瀏覽器引擎而不是使用功能檢測),推薦使用 “ Gecko ” 和 “ rv: ”字符串,因為其他瀏覽器包含 “ like Gecko “ 令牌。
對于其他基于 Gecko 的產(chǎn)品,字符串可以采用兩種形式之一,其中令牌具有相同的含義,但下面提到的除外:
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail appname/appversion
Mozilla / 5.0(platform ; rv:geckoversion)Gecko / geckotrail Firefox / firefoxversion appname / appversion
appname / appversion 指示應(yīng)用程序名稱和版本。例如,這可以是 “ Camino / 2.1.1 ”或“ SeaMonkey / 2.7.1 ”。
Firefox / firefoxversion 是一個可選的兼容性令牌,一些基于 Gecko 的瀏覽器可能會選擇合并,以實現(xiàn)與期望Firefox的網(wǎng)站的最大兼容性。firefoxversion 通常會代表與給定的 Gecko 版本相對應(yīng)的等效 Firefox 版本。一些基于 Gecko 的瀏覽器可能不會使用此令牌; 出于這個原因,嗅探器應(yīng)該尋找壁虎 - 而不是 Firefox!此標(biāo)記是否顯示由 “general.useragent.compatMode.firefox” 布爾值前綴控制。
需要 Gecko 11.0(Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)
UA 字符串的平臺部分指示 Firefox 是否在手機尺寸或平板電腦設(shè)備上運行。當(dāng) Firefox 在具有手機外形的設(shè)備上運行時,會出現(xiàn) Mobile; 令牌在 UA 字符串的平臺部分。當(dāng) Firefox 在平板電腦設(shè)備上運行時,有一款平板電腦; 代替UA字符串的平臺部分中的令牌。例如:
Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0
版本號不相關(guān)。避免基于這些推斷材料。
將內(nèi)容定位到設(shè)備外形的首選方式是使用 CSS Media Queries。但是,如果您使用 UA 嗅探到目標(biāo)內(nèi)容到設(shè)備的外形尺寸,請認準摩比(包括Opera移動,它采用“牧高笛”)手機的外形和你沒有承擔(dān)的 “Android” 和設(shè)備之間的任何關(guān)聯(lián)構(gòu)成因素。這樣,如果/當(dāng) Firefox 在其他手機/平板電腦操作系統(tǒng)上發(fā)布或 Android 用于筆記本電腦時,您的代碼將可以正常工作。此外,請使用觸摸檢測來尋找觸摸設(shè)備,而不是尋找“手機”或“平板電腦”,因為可能有觸摸設(shè)備不是平板電腦。
Firefox OS 設(shè)備在沒有任何操作系統(tǒng)指示的情況下自行識別; 例如: “Mozilla / 5.0(Mobile; rv:15.0)Gecko / 15.0 Firefox / 15.0”。網(wǎng)絡(luò)是平臺。
Windows 用戶代理具有以下變體,其中 xy 是 Windows NT 版本(例如 Windows NT 6.1)。
Windows version | Gecko user agent string |
---|---|
Windows NT on x86 | Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
Windows NT, Win64 on x64 | Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Windows NT, WOW64 | Mozilla/5.0 (Windows NT x.y; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0 |
這里,xy 是 Mac OS X 的版本(例如,Mac OS X 10.6)。
Mac OS X version | Gecko user agent string |
---|---|
Mac OS X on Intel x86 or x86_64 | Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
Mac OS X on PowerPC | Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0 |
Linux 是一個更多元化的平臺。下面給出幾個常見的例子。
Linux version | Gecko user agent string |
---|---|
Linux desktop, i686 | Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 |
Linux desktop, x86_64 | Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Linux desktop, i686 running on x86_64 | Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 |
Nokia N900 Linux mobile, on the Fennec browser | Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0 |
Form factor | Gecko user agent string |
---|---|
Phone | Mozilla/5.0 (Android; Mobile; rv:40.0) Gecko/40.0 Firefox/40.0 |
Tablet | Mozilla/5.0 (Android; Tablet; rv:40.0) Gecko/40.0 Firefox/40.0 |
從版本41開始,適用于 Android 的 Firefox 將包含 Android 版本作為平臺令牌的一部分。為了提高互操作性,如果瀏覽器運行在低于4的版本上,它將報告4.4。Android 版本4及以上將準確報告版本。請注意,相同的 Gecko 具有相同的功能,可以運送到所有版本的 Android。
Form factor | Gecko user agent string |
---|---|
Phone | Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0 |
Tablet | Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0 |
Form factor | Gecko user agent string |
---|---|
Phone | Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 |
Tablet | Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0 |
TV | Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0 |
Device-specific | Mozilla/5.0 (Mobile; nnnn; rv:26.0) Gecko/26.0 Firefox/26.0 |
盡管 Mozilla 非常消極,但一些手機制造商不幸在其設(shè)備的 UA 字符串中包含代表其設(shè)備 ID 的令牌。如果是這種情況,則 Firefox OS UA 字符串將看起來像上表中的設(shè)備特定字符串,其中 nnnn ; 是設(shè)備的制造商代碼(請參閱指南)。其中一些我們注意到的形式是 “ NexusOne ”,“ ZTEOpen ”或“ Open C; ”(注意放置空間也是不鼓勵的)。我們提供此信息以協(xié)助您的 UA 檢測邏輯,但 Mozilla 不鼓勵檢測 UA 字符串中的設(shè)備 ID。
這是一個 JavaScript 正則表達式,它將檢測所有移動設(shè)備,包括設(shè)備 ID 在其 UA 字符串中的設(shè)備:
/mobi/i
這使其不區(qū)分i
大小寫,mobi
匹配所有移動瀏覽器。
雖然 Firefox OS 的版本號未包含在 UA 字符串中,但可以根據(jù) UA 字符串中存在的 Gecko 版本號推斷版本信息。
Firefox OS version number | Gecko version number |
---|---|
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 存儲庫名稱很容易找到對應(yīng)關(guān)系:從mozilla-b2g
Firefox 開始的版本庫是 Firefox OS 的版本庫,并且 Firefox OS和Gecko 版本都以它們的名字命名。
Firefox OS 具有四位數(shù)版本號:XXXY 前兩位數(shù)字由 Mozilla 產(chǎn)品團隊擁有,并表示具有新功能(例如 v1.1,1.2等)的版本。第三位數(shù)字隨著常規(guī)版本標(biāo)簽(大約每6周)增加一次安全更新,第四位數(shù)字由 OEM 擁有。
適用于 iOS 的 Firefox 使用默認 Mobile Safari UA 字符串,并具有附加的 FxiOS / <版本>標(biāo)記,這與 Chrome for iOS標(biāo)識自身的方式類似。
Form factor | Firefox for iOS user agent string |
---|---|
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 (iPad; 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 |
Web Runtime 使用與桌面版 Firefox 相同的用戶代理字符串。
這些是來自不同平臺上其他基于 Gecko 的瀏覽器的一些示例UA字符串。請注意,其中很多尚未在 Gecko 2.0 上發(fā)布!
Browser | Gecko user agent string |
---|---|
Firefox for Maemo (Nokia N900) | Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1 |
Camino on Mac | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1 |
SeaMonkey on Windows | Mozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
SeaMonkey on Mac | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
SeaMonkey on Linux | Mozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1 |
在 Firefox 4 和 Gecko 2.0 之前,擴展可以通過general.useragent.extra.identifier
首選項添加用戶代理部分,(參見過時的用戶代理字符串參考)。但是自從 bug 581008 以來,這是不可能的。
從前,特定插件,插件或擴展程序添加了用戶代理部件以通知其安裝的站點。推薦的做法是,如果它是絕對必要的(記住它會減慢每個請求的速度)是設(shè)置一個自定義 HTTP 頭。