瀏覽器的用戶代理字符串


每個瀏覽器都有它自己的用戶代理(user agent)字符串,里面包含了瀏覽器和操作系統等信息。通過使用這個字符串,我們可以處理跨瀏覽器的差異。用戶代理字符串保存在 JavaScript 的 navigator.userAgent 變量中。我們先來看看各個主流瀏覽器在各個平台的用戶代理字符串的例子。

1. IE 和 IE Mobile 瀏覽器

系統平台 瀏覽器 用戶代理字符串
Windows IE 9 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Windows IE 10 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Windows IE 11 Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Windows Phone IE 10 Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)

2. Firefox 和 Firefox Mobile 瀏覽器

系統平台 用戶代理字符串
Windows Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Android Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0

3. Opera 和 Opera Mobile 瀏覽器

在 Opera 12 及之前,使用的是 Presto 渲染引擎,它的 UA 字符串為:

系統平台 用戶代理字符串
Windows Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.12
Android Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/ADR-1301071546) Presto/2.11.355 Version/12.10

而從 Opera 14 開始,它改用 Chrome 的 WebKit/Blink 渲染引擎,UA 字符串改變為:

系統平台 用戶代理字符串
Windows Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0 Safari/537.36 OPR/15.0
Android Mozilla/5.0 (Linux; Android 4.1.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0 Mobile Safari/537.36 OPR/16.0

4. Chrome 和 Chrome Mobile 瀏覽器

系統平台 用戶代理字符串
Windows Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
Android Phone Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19
Android Tablet Mozilla/5.0 (Linux; Android 4.2; Nexus 7 Build/JOP40C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19
Chrome OS Mozilla/5.0 (X11; CrOS armv7l 3428.193.0) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.126 Safari/537.22
iPhone* Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_2 like Mac OS X; en-us) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/10A551 Safari/8536.25
iPad* Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X; zh-cn) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/9B206 Safari/7534.48.3

注意 Chrome for iOS 聲稱它是 CriOS。這是由於它只能使用 iOS 的 UIWebView 提供的網頁渲染和腳本解釋引擎,和 Chrome for Android 差別很大,而更加像 Safari for iOS。

5. Safari 和 Safari Mobile 瀏覽器

系統平台 用戶代理字符串
Windows Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
Macintosh Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10
iPhone Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
iPad Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3
Android* Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; SonyEricssonMT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

這里的 Safari for Android 指的是 Android 自帶的瀏覽器;從用戶代理字符串看,不論 Android 的版本,它都聲稱是 Safari Mobile 4.0。實際上它和 Chrome 一樣也是從 Chromium 中移植出來的。

這里順便整理並記錄各版本 iOS 系統自帶的 Safari Mobile 瀏覽器的版本,如下:

iPhone OS 1.0 iPhone OS 2.0 iPhone OS 3.0 iOS 4.0 iOS 4.3 iOS 5.0 iOS 6.0
Safari 3.0 Safari 3.1 Safari 4.0 Safari 4.0 Safari 5.0 Safari 5.1 Safari 6.0 

6. 國內的各個瀏覽器

國內也有好幾個基於 WebKit 內核的瀏覽器(IE 內核的這里不討論),它們的 user agent 字符串如下面的例子:

瀏覽器 用戶代理字符串
傲游桌面瀏覽器 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.9 (KHTML, like Gecko) Maxthon/3.0 Safari/533.9
傲游移動瀏覽器 Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; MT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Maxthon/4.0.3.3000
搜狗瀏覽器 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.802.30 Safari/535.1 SE 2.X MetaSr 1.0
百度桌面瀏覽器 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.7 (KHTML, like Gecko) Safari/534.7 Chrome/7.0 baidubrowser/1.x 
百度移動瀏覽器 手機 UA:Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; MT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/533.1 baidubrowser/042_1.8.4.2_diordna_458_084/nosscirE-ynoS_01_4.3.2_i51TM/1000464b/174FA38EF54F67DF0EBC472658BA862B%7C101931900307210/1
電腦 UA:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/531.1 (KHTML, like Gecko) FlyFlow/2.4 Version/5.0 Safari/531.1 baidubrowser/042_1.8.4.2_diordna_458_084/nosscirE-ynoS_01_4.3.2_i51TM/1000464b/174FA38EF54F67DF0EBC472658BA862B%7C101931900307210/1
360 極速瀏覽器 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Safari/535.1 Chrome/14.0.835.202 360EE
360 移動瀏覽器 Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; MT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1; 360browser(securitypay,securityinstalled); 360 Aphone Browser (3.2.1)
QQ 桌面瀏覽器 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/12.0.742.53 Safari/534.36 QQBrowser/6.5.9225.201
QQ 移動瀏覽器 中轉瀏覽:MQQBrowser/2.9/Adr (Linux; U; 2.3.4; zh-cn; MT15i Build/4.0.2.A.0.62;480*854)
直接瀏覽:MQQBrowser/2.9/Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; MT15i Build/4.0.2.A.0.62) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
直接瀏覽:Mozilla/5.0 (iPad; U; CPU OS 4_3_5 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) MQQBrowser/3.1 Mobile/8L1 Safari/7534.48.3
UC 瀏覽器 Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; MT15i Build/4.0.2.A.0.62) UC AppleWebKit/530+ (KHTML, like Gecko) Mobile Safari/530

可以看到大部分瀏覽器都兼容 Safari 或 Chrome 的 UA 字符串。但是還是有很多胡亂使用的地方。比如 UC 瀏覽器比較古怪(在 UC 8.2 for Android 2.3 中測試):在 user agent 中竟然不包含自己的版本號。

7. navigator.platform

如果需要檢測用戶使用的操作系統,除了 navigator.userAgent 之外也可以用 navigator.platform。例如:

var platform = (function() {
  var pl = navigator.platform;
  if (pl.indexOf('Win') == 0) {
    return 'windows';
  } else if (pl.indexOf('Mac') == 0) {
    return 'macos';
  } else if (pl.indexOf('Linux') == 0 || pl.indexOf('X11') == 0) {
    return 'linux';
  } else if (pl.indexOf('iPhone') == 0 || pl.indexOf('iPad') == 0) {
    return 'ios';
  } else if (pl.indexOf('Android') == 0) {
    return 'android';
  } else {
    return 'unknown';
  }
})();

但是用 navigator.platform 判斷是否 Android 並不可靠。在一台 Android 2.3 手機上測試,發現只有 Opera Mobile 給出 "Android" 的結果,Android browser 和 Firefox Mobile 都給出 "Linux armv7l"。

參考資料:

[1] HTML DOM userAgent 屬性
[2] User agent - Wikipedia, the free encyclopedia
[3] UserAgentString.com
[4] Chrome for Android User-Agent - Google Chrome Mobile - Google Developers
[5] FAQ - Google Chrome Mobile - Google Developers
[6] User Agent Strings Reference | MDN
[7] Gecko user agent string reference  | MDN
[8] window.navigator.platform - MDN
[9] Don’t forget navigator.platform
[A] History of the user-agent string | NCZOnline
[B] Optimizing Web Content
[C] JavaScript - Browser detect
[D] The perils of iOS user agent strings - Art.sy Engineering
[E] differences between uiwebview and mobile safari - stackoverflow
[F] 手機 QQ 瀏覽器 User-Agent 使用指南
[G] Opera User Agent strings: Opera 15 and beyond
[H] MSDN - User-agent string changes
[I] MSDN Blogs - Internet Explorer 11’s Many User-Agent Strings

[YAML] Updated: 2013-11-18 16:48:00


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM