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