Detector 前端浏览器 UA 客户端信息识别模块

发布于 2020-03-15 11:24:27 字数 10622 浏览 2427 评论 0

客户端信息识别模块,用于自动识别用户使用的客户端环境。包括:

  1. 硬件设备。
  2. 操作系统。
  3. 浏览器。
  4. 浏览器渲染引擎。

识别返回的 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]

使用说明

Web 端使用

在浏览器场景下,一般常见使用示例如下:

// 引入 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;

Node.js 端使用

const detector = require('detector');

// 变量 `d` 是一个 “detector 对象”
const d = detector.parse(userAgent);
d.browser.name === "chrome";

API

{String} detector.device.name

设备名称。

{Number} detector.device.version

设备版本号。

{String} detector.device.fullVersion

设备完整版本号。

{Number} detector.device[device_name]

直接判断设备名。

可以识别的设备名称为:

  • 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 手机。
NODE ONLY
  • noain: 诺亚信
  • huawei-honor: 华为荣耀
  • lephone: 乐 Phone
  • asus: 华硕
  • 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
  • 天时达

{String} detector.os.name

操作系统名。

{Number} detector.os.version

操作系统版本号。

{String} detector.os.fullVersion

操作系统完整版本号。

{Number} detector.os[os_name]

直接判断操作系统。

可以识别的操作系统包括:

  • 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: 阿里云系统。
NODE ONLY
  • meego: Meego.
  • smartisan: 锤子,Smartisan.

{String} detector.browser.name

浏览器名。

{Number} detector.browser.version

浏览器真实版本。兼容模式下浏览器声明自己是某老旧浏览器,但这个属性返回的是 其真正的版本号。

适用于收集统计分析客户端信息。

例如:

IE9 兼容模式声明自己是 IE7,但是 detector.browser.version 返回 9.0

{String} detector.browser.fullVersion

浏览器完整的真实版本号。

{Number} detector.browser.mode

浏览器模式。即浏览器当时使用的模式,IE 兼容模式时,version 和 mode 值不同。

{String} detector.browser.fullMode

浏览器模式的完整版本号。

{Number} detector.browser[browser_name]

直接判断浏览器。

可以识别的浏览器为:

  • 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: 天猫平板客户端。
NODE ONLY
  • googlebot: Googlebot 网络爬虫。
  • baiduspider: Baiduspider ,百度无线、网页搜索
  • baiduspider-image: 百度图片搜索
  • baiduspider-video: 百度视频搜索
  • baiduspider-news: 百度新闻搜索
  • baiduspider-favo: 百度收藏搜索
  • baiduspider-cpro: 百度联盟
  • baiduspider-ads: 百度商务搜索
  • baiduboxapp: 百度手机搜索客户端
  • bingbot: Bingbot 网络爬虫。
  • msnbot: MSNBot
  • nuhkbot: Nuhkbot
  • alexabot: Alexabot.
  • curl: curl.
  • slurpbot: Yahoo! Slurp

{Boolean} detector.browser.compatible

浏览器是否处于兼容模式。


{String} detector.engine.name

渲染引擎名(又称排版引擎、浏览器内核)。

{Number} detector.engine.version

渲染引擎版本号。

{String} detector.engine.fullVersion

渲染引擎完整版本号。

{Number} detector.engine.mode

渲染引擎模式,即 IE 浏览器的文档模式。

{String} detector.engine.fullMode

渲染引擎模式完整版本号。

{Number} detector.engine[engine_name]

直接判断渲染引擎。

可以识别的渲染引擎为:

  • trident: Microsoft Trident.
  • blink: Google Blink.
  • webkit: Apple Webkit.
  • gecko: Mozilla Gecko.
  • presto: Opera Presto.
  • androidwebkit: Android Webkit.
  • coolpadwebkit: Coolpad Webkit.
  • u2: UC 浏览器渲染引擎 v2
  • u3: UC 浏览器渲染引擎 v3

{detector} detector.parse(String ua)

根据 userAgent 字符串识别客户端信息的接口。

服务端程序可以使用这个接口识别客户端信息,由于服务端程序的特殊性,可以补充 更完善的检测规则。


对于不能识别的信息,统一如下:

  • 所有不能识别的名称均归类为 na,即 Not Available.
  • 所有不能识别的版本号归类为 -1

相关链接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文