客户端信息识别模块,用于自动识别用户使用的客户端环境。包括:
- 硬件设备。
- 操作系统。
- 浏览器。
- 浏览器渲染引擎。
识别返回的“detector 对象”信息结构如下:
detector = {
device: {
name: "iphone",
version: -1,
fullVersion: "-1",
[iphone]: -1
},
os: {
name: "ios",
version: 6.1,
fullVersion: "6.1",
[ios]: 6.1
},
browser: {
name: "chrome":
version: 26.0,
fullVersion: "26.0.1410.50",
mode: 26.0,
fullMode: "26.0.1410.50",
compatible: false,
[chrome]: 26.0
},
engine: {
name: "webkit",
version: 536.26,
fullVersion: "536.26",
mode: 523.26,
fullMode: "523.26",
compatible: false,
[webkit]: 536.26
}
}
备注:上面的 [iphone]
, [ios]
, [chrome]
, [webkit]
是动态的,根据实际识别
到的信息不同而有所不同。
注:
- 这个版本遵循 CommonJS 规范,同时兼容基于 Node 环境和 Web 浏览器环境运行。
- 有些场景只需要简单识别特定的信息,可以参考 识别特定浏览器最佳实践 而无需使用 detector。
via npm:
全局安装 (-g
) 时,可以在终端使用 detector
命令。
npm install detector [-g]
在浏览器场景下,一般常见使用示例如下:
// 引入 “detector 对象”
const detector = require('detector');
// 判断浏览器名
detector.browser.name === "chrome" // true
// 判断浏览器名方法 2.
!!detector.browser.ie // false
// 判断老旧浏览器
if(detector.browser.ie && detector.browser.version < 8){
alert("你的浏览器太老了。");
}
// 判断 Trident 4(IE8) 以下版本浏览器引擎
if(detector.engine.trident && detector.engine.mode < 4){
// hack code.
}
// 收集客户端详细信息
detector.browser.name + "/" + detector.browser.fullVersion;
const detector = require('detector');
// 变量 `d` 是一个 “detector 对象”
const d = detector.parse(userAgent);
d.browser.name === "chrome";
设备名称。
设备版本号。
设备完整版本号。
直接判断设备名。
可以识别的设备名称为:
pc
: Windows PC.mac
: Macintosh PC.iphone
: iPhone.ipad
: iPad.ipod
: iPod.android
: Android.blackberry
: 黑莓 (Blackberry) 手机。wp
: Windows Phone.mi
: 小米。meizu
: 魅族。nexus
: Nexus.nokia
: Nokia.samsung
: 三星手机。aliyun
: 阿里云手机。huawei
: 华为手机。lenovo
: 联想手机。zte
: 中兴手机。vivo
: 步步高手机。htc
: HTC。oppo
: OPPO 手机。konka
: 康佳手机。sonyericsson
: 索尼爱立信手机。coolpad
: 酷派手机。lg
: LG 手机。
noain
: 诺亚信huawei-honor
: 华为荣耀lephone
: 乐 Phoneasus
: 华硕alcatel
一加
蓝米
E 派
hike
qmi
友信达
: 友信达优米
嘉源
intki
星语
欧奇
海派
广信
: 广信nibiru
: nibiru神州
青橙
海信
金立
eton
bohp
小杨树
语信
nubia
爱讯达
寰宇通
mofut
infocus
大唐
邦华
天迈
大显
博瑞
lingwin
iusai
波导
德赛
蓝魔
美图
opsson
benwee
hosin
smartisan
: 锤子, Smartisan.ephone
佰事讯
newman
konka
haier
moto
tcl
天语
doov
天时达
操作系统名。
操作系统版本号。
操作系统完整版本号。
直接判断操作系统。
可以识别的操作系统包括:
windows
: Windows.macosx
: Macintosh.ios
: iOS.android
: Android.chromeos
: Chrome OS.linux
: Linux.wp
: Windows Phone.windowsce
: Windows CE, 包括 Windows Mobile, Smartphone, PPC.symbian
: Symbian OS.blackberry
: Blackberry 操作系统。yunos
: 阿里云系统。
meego
: Meego.smartisan
: 锤子,Smartisan.
浏览器名。
浏览器真实版本。兼容模式下浏览器声明自己是某老旧浏览器,但这个属性返回的是 其真正的版本号。
适用于收集统计分析客户端信息。
例如:
IE9 兼容模式声明自己是 IE7,但是 detector.browser.version
返回 9.0
浏览器完整的真实版本号。
浏览器模式。即浏览器当时使用的模式,IE 兼容模式时,version 和 mode 值不同。
浏览器模式的完整版本号。
直接判断浏览器。
可以识别的浏览器为:
ie
: Microsoft Internet Explorer.chrome
: Google Chrome.firefox
: Mozilla Firefox.safari
: Apple Safari.opera
: Opera.360
: 包括奇虎 360 安全浏览器和 360 极速浏览器。maxthon
: 傲游浏览器 (Maxthon)。sogou
: 搜狗浏览器 (Sogou)。theworld
: 世界之窗浏览器 (TheWorld)。green
: GreenBrowser.qq
: QQ 浏览器。tt
: TencentTraveler.liebao
: 猎豹浏览器。tao
: 淘宝浏览器。coolnovo
: 枫树浏览器。saayaa
: 闪游浏览器。uc
: UC 浏览器。mi
: 小米浏览器。baidu
: 百度浏览器。nokia
: 诺基亚浏览器。blackberry
: 黑莓默认浏览器,版本号与系统版本相同。webview
: iOS 系统的提供的 WebView。yandex
: Yandex YaBrowser.micromessenger
微信ali-ap
: 支付宝手机客户端。ali-ap-pd
: 支付宝平板客户端。ali-am
: 支付宝商户客户端。ali-tb
: 淘宝手机客户端。ali-tb-pd
: 淘宝平板客户端。ali-tm
: 天猫手机客户端。ali-tm-pd
: 天猫平板客户端。
googlebot
: Googlebot 网络爬虫。baiduspider
: Baiduspider ,百度无线、网页搜索baiduspider-image
: 百度图片搜索baiduspider-video
: 百度视频搜索baiduspider-news
: 百度新闻搜索baiduspider-favo
: 百度收藏搜索baiduspider-cpro
: 百度联盟baiduspider-ads
: 百度商务搜索baiduboxapp
: 百度手机搜索客户端bingbot
: Bingbot 网络爬虫。msnbot
: MSNBotnuhkbot
: Nuhkbotalexabot
: Alexabot.curl
: curl.slurpbot
: Yahoo! Slurp
浏览器是否处于兼容模式。
渲染引擎名(又称排版引擎、浏览器内核)。
渲染引擎版本号。
渲染引擎完整版本号。
渲染引擎模式,即 IE 浏览器的文档模式。
渲染引擎模式完整版本号。
直接判断渲染引擎。
可以识别的渲染引擎为:
trident
: Microsoft Trident.blink
: Google Blink.webkit
: Apple Webkit.gecko
: Mozilla Gecko.presto
: Opera Presto.androidwebkit
: Android Webkit.coolpadwebkit
: Coolpad Webkit.u2
: UC 浏览器渲染引擎 v2u3
: UC 浏览器渲染引擎 v3
根据 userAgent 字符串识别客户端信息的接口。
服务端程序可以使用这个接口识别客户端信息,由于服务端程序的特殊性,可以补充 更完善的检测规则。
对于不能识别的信息,统一如下:
- 所有不能识别的名称均归类为
na
,即 Not Available. - 所有不能识别的版本号归类为
-1
。