{"id":13717239,"url":"https://github.com/hotoo/detector","last_synced_at":"2025-04-05T08:05:19.228Z","repository":{"id":7659337,"uuid":"9020719","full_name":"hotoo/detector","owner":"hotoo","description":":dog: 客户端环境识别模块。(UserAgent detector)","archived":false,"fork":false,"pushed_at":"2021-04-11T15:17:32.000Z","size":901,"stargazers_count":880,"open_issues_count":7,"forks_count":163,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-03-28T20:59:32.570Z","etag":null,"topics":["detector","javascript"],"latest_commit_sha":null,"homepage":"https://hotoo.github.io/detector/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hotoo.png","metadata":{"files":{"readme":"README-zh_CN.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-03-26T02:03:57.000Z","updated_at":"2025-02-24T14:40:21.000Z","dependencies_parsed_at":"2022-09-11T10:12:16.079Z","dependency_job_id":null,"html_url":"https://github.com/hotoo/detector","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotoo%2Fdetector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotoo%2Fdetector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotoo%2Fdetector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hotoo%2Fdetector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hotoo","download_url":"https://codeload.github.com/hotoo/detector/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305933,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["detector","javascript"],"created_at":"2024-08-03T00:01:19.700Z","updated_at":"2025-04-05T08:05:19.205Z","avatar_url":"https://github.com/hotoo.png","language":"JavaScript","readme":"# detector\n\n---\n\n[![NPM version](https://badge.fury.io/js/detector.png)](http://badge.fury.io/js/detector)\n[![Build Status](https://secure.travis-ci.org/hotoo/detector.png?branch=master)](https://travis-ci.org/hotoo/detector)\n[![Coverage Status](https://coveralls.io/repos/hotoo/detector/badge.png?branch=master)](https://coveralls.io/r/hotoo/detector)\n\n\n\n客户端信息识别模块，用于自动识别用户使用的客户端环境。包括：\n\n1. 硬件设备。\n2. 操作系统。\n3. 浏览器。\n4. 浏览器渲染引擎。\n\n识别返回的“detector 对象”信息结构如下：\n\n```javascript\ndetector = {\n    device: {\n        name: \"iphone\",\n        version: -1,\n        fullVersion: \"-1\",\n        [iphone]: -1\n    },\n    os: {\n        name: \"ios\",\n        version: 6.1,\n        fullVersion: \"6.1\",\n        [ios]: 6.1\n    },\n    browser: {\n        name: \"chrome\":\n        version: 26.0,\n        fullVersion: \"26.0.1410.50\",\n        mode: 26.0,\n        fullMode: \"26.0.1410.50\",\n        compatible: false,\n        [chrome]: 26.0\n    },\n    engine: {\n        name: \"webkit\",\n        version: 536.26,\n        fullVersion: \"536.26\",\n        mode: 523.26,\n        fullMode: \"523.26\",\n        compatible: false,\n        [webkit]: 536.26\n    }\n}\n```\n\n备注：上面的 `[iphone]`, `[ios]`, `[chrome]`, `[webkit]` 是动态的，根据实际识别\n到的信息不同而有所不同。\n\n注：\n\n* 这个版本遵循 CommonJS 规范，同时兼容基于 Node 环境和 Web 浏览器环境运行。\n* 有些场景只需要简单识别特定的信息，可以参考\n  [识别特定浏览器最佳实践](https://github.com/hotoo/detector/issues/18)\n  而无需使用 detector。\n\n## 安装\n\nvia npm:\n\n全局安装 (`-g`) 时，可以在终端使用 `detector` 命令。\n\n```\nnpm install detector [-g]\n```\n\n## 使用说明\n\n### Web 端使用\n\n在浏览器场景下，一般常见使用示例如下：\n\n```js\n// 引入 “detector 对象”\nconst detector = require('detector');\n\n// 判断浏览器名\ndetector.browser.name === \"chrome\" // true\n\n// 判断浏览器名方法 2.\n!!detector.browser.ie // false\n\n// 判断老旧浏览器\nif(detector.browser.ie \u0026\u0026 detector.browser.version \u003c 8){\n    alert(\"你的浏览器太老了。\");\n}\n\n// 判断 Trident 4(IE8) 以下版本浏览器引擎\nif(detector.engine.trident \u0026\u0026 detector.engine.mode \u003c 4){\n    // hack code.\n}\n\n// 收集客户端详细信息\ndetector.browser.name + \"/\" + detector.browser.fullVersion;\n```\n\n### Node.js 端使用\n\n```js\nconst detector = require('detector');\n\n// 变量 `d` 是一个 “detector 对象”\nconst d = detector.parse(userAgent);\nd.browser.name === \"chrome\";\n```\n\n## API\n\n### {String} detector.device.name\n\n设备名称。\n\n### {Number} detector.device.version\n\n设备版本号。\n\n### {String} detector.device.fullVersion\n\n设备完整版本号。\n\n### {Number} detector.device[device_name]\n\n直接判断设备名。\n\n可以识别的设备名称为：\n\n* `pc`: Windows PC.\n* `mac`: Macintosh PC.\n* `iphone`: iPhone.\n* `ipad`: iPad.\n* `ipod`: iPod.\n* `android`: Android.\n* `blackberry`: 黑莓 (Blackberry) 手机。\n* `wp`: Windows Phone.\n* `mi`: 小米。\n* `meizu`: 魅族。\n* `nexus`: Nexus.\n* `nokia`: Nokia.\n* `samsung`: 三星手机。\n* `aliyun`: 阿里云手机。\n* `huawei`: 华为手机。\n* `lenovo`: 联想手机。\n* `zte`: 中兴手机。\n* `vivo`: 步步高手机。\n* `htc`: HTC。\n* `oppo`: OPPO 手机。\n* `konka`: 康佳手机。\n* `sonyericsson`: 索尼爱立信手机。\n* `coolpad`: 酷派手机。\n* `lg`: LG 手机。\n\n##### NODE ONLY\n\n* `noain`: [诺亚信](http://www.noain.com.cn/)\n* `huawei-honor`: [华为荣耀](http://www.honor.cn/)\n* `lephone`: [乐 Phone](http://www.lephonemall.com/)\n* `asus`: [华硕](https://www.asus.com.cn/Phones/)\n* `alcatel`\n* `一加`\n* `蓝米`\n* `E 派`\n* `hike`\n* `qmi`\n* ~~`友信达`: [友信达](http://www.iunistar.com/)~~\n* `优米`\n* `嘉源`\n* `intki`\n* `星语`\n* `欧奇`\n* `海派`\n* `广信`: [广信](http://www.szkingsun.com/)\n* ~~`nibiru`: [nibiru](http://www.nbru.cn/)~~\n* `神州`\n* `青橙`\n* `海信`\n* `金立`\n* `eton`\n* `bohp`\n* `小杨树`\n* `语信`\n* `nubia`\n* `爱讯达`\n* `寰宇通`\n* `mofut`\n* `infocus`\n* `大唐`\n* `邦华`\n* `天迈`\n* `大显`\n* `博瑞`\n* `lingwin`\n* `iusai`\n* `波导`\n* `德赛`\n* `蓝魔`\n* `美图`\n* `opsson`\n* `benwee`\n* `hosin`\n* `smartisan`: [锤子](http://www.smartisan.com/), Smartisan.\n* `ephone`\n* `佰事讯`\n* `newman`\n* `konka`\n* `haier`\n* `moto`\n* `tcl`\n* `天语`\n* `doov`\n* `天时达`\n\n\n----\n\n### {String} detector.os.name\n\n操作系统名。\n\n### {Number} detector.os.version\n\n操作系统版本号。\n\n### {String} detector.os.fullVersion\n\n操作系统完整版本号。\n\n### {Number} detector.os[os_name]\n\n直接判断操作系统。\n\n可以识别的操作系统包括：\n\n* `windows`: Windows.\n* `macosx`: Macintosh.\n* `ios`: iOS.\n* `android`: Android.\n* `chromeos`: Chrome OS.\n* `linux`: Linux.\n* `wp`: Windows Phone.\n* `windowsce`: Windows CE, 包括 Windows Mobile, Smartphone, PPC.\n* `symbian`: Symbian OS.\n* `blackberry`: Blackberry 操作系统。\n* `yunos`: 阿里云系统。\n\n##### NODE ONLY\n\n* `meego`: Meego.\n* `smartisan`: 锤子，Smartisan.\n\n\n----\n\n### {String} detector.browser.name\n\n浏览器名。\n\n### {Number} detector.browser.version\n\n浏览器真实版本。兼容模式下浏览器声明自己是某老旧浏览器，但这个属性返回的是\n其真正的版本号。\n\n适用于收集统计分析客户端信息。\n\n例如：\n\nIE9 兼容模式声明自己是 IE7，但是 `detector.browser.version` 返回 `9.0`\n\n### {String} detector.browser.fullVersion\n\n浏览器完整的真实版本号。\n\n### {Number} detector.browser.mode\n\n浏览器模式。即浏览器当时使用的模式，IE 兼容模式时，version 和 mode 值不同。\n\n### {String} detector.browser.fullMode\n\n浏览器模式的完整版本号。\n\n### {Number} detector.browser[browser_name]\n\n直接判断浏览器。\n\n可以识别的浏览器为：\n\n* `ie`: Microsoft Internet Explorer.\n* `chrome`: Google Chrome.\n* `firefox`: Mozilla Firefox.\n* `safari`: Apple Safari.\n* `opera`: Opera.\n* `360`: 包括奇虎 360 安全浏览器和 360 极速浏览器。\n* `maxthon`: 傲游浏览器 (Maxthon)。\n* `sogou`: 搜狗浏览器 (Sogou)。\n* `theworld`: 世界之窗浏览器 (TheWorld)。\n* `green`: GreenBrowser.\n* `qq`: QQ 浏览器。\n* `tt`: TencentTraveler.\n* `liebao`: 猎豹浏览器。\n* `tao`: 淘宝浏览器。\n* `coolnovo`: 枫树浏览器。\n* `saayaa`: 闪游浏览器。\n* `uc`: UC 浏览器。\n* `mi`: 小米浏览器。\n* `baidu`: 百度浏览器。\n* `nokia`: 诺基亚浏览器。\n* `blackberry`: 黑莓默认浏览器，版本号与系统版本相同。\n* `webview`: iOS 系统的提供的 WebView。\n* `yandex`: Yandex YaBrowser.\n* `micromessenger` 微信\n* `ali-ap`: 支付宝手机客户端。\n* `ali-ap-pd`: 支付宝平板客户端。\n* `ali-am`: 支付宝商户客户端。\n* `ali-tb`: 淘宝手机客户端。\n* `ali-tb-pd`: 淘宝平板客户端。\n* `ali-tm`: 天猫手机客户端。\n* `ali-tm-pd`: 天猫平板客户端。\n\n##### NODE ONLY\n\n* `googlebot`: [Googlebot](wiki/googlebot.md) 网络爬虫。\n* `baiduspider`: [Baiduspider](wiki/baiduspider.md) ，百度无线、网页搜索\n* `baiduspider-image`: 百度图片搜索\n* `baiduspider-video`: 百度视频搜索\n* `baiduspider-news`: 百度新闻搜索\n* `baiduspider-favo`: 百度收藏搜索\n* `baiduspider-cpro`: 百度联盟\n* `baiduspider-ads`: 百度商务搜索\n* `baiduboxapp`: 百度手机搜索客户端\n* `bingbot`: [Bingbot](wiki/bingbot.md) 网络爬虫。\n* `msnbot`: [MSNBot](wiki/msnbot.md)\n* `nuhkbot`: [Nuhkbot](wiki/nuhkbot.md)\n* `alexabot`: [Alexabot](wiki/alexabot.md).\n* `curl`: curl.\n* ~~`slurpbot`: Yahoo! [Slurp](wiki/slurpbot.md)~~\n\n\n### {Boolean} detector.browser.compatible\n\n浏览器是否处于兼容模式。\n\n\n----\n\n### {String} detector.engine.name\n\n渲染引擎名（又称排版引擎、浏览器内核）。\n\n### {Number} detector.engine.version\n\n渲染引擎版本号。\n\n### {String} detector.engine.fullVersion\n\n渲染引擎完整版本号。\n\n### {Number} detector.engine.mode\n\n渲染引擎模式，即 IE 浏览器的文档模式。\n\n### {String} detector.engine.fullMode\n\n渲染引擎模式完整版本号。\n\n\n### {Number} detector.engine[engine_name]\n\n直接判断渲染引擎。\n\n可以识别的渲染引擎为：\n\n* `trident`: Microsoft Trident.\n* `blink`: Google Blink.\n* `webkit`: Apple Webkit.\n* `gecko`: Mozilla Gecko.\n* `presto`: Opera Presto.\n* `androidwebkit`: Android Webkit.\n* `coolpadwebkit`: Coolpad Webkit.\n* `u2`: UC 浏览器渲染引擎 v2\n* `u3`: UC 浏览器渲染引擎 v3\n\n### {detector} detector.parse(String ua)\n\n根据 userAgent 字符串识别客户端信息的接口。\n\n服务端程序可以使用这个接口识别客户端信息，由于服务端程序的特殊性，可以补充\n更完善的检测规则。\n\n\n----\n\n对于不能识别的信息，统一如下：\n\n* 所有不能识别的名称均归类为 `na`，即 Not Available.\n* 所有不能识别的版本号归类为 `-1`。\n","funding_links":[],"categories":["JavaScript","9. UA 识别"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhotoo%2Fdetector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhotoo%2Fdetector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhotoo%2Fdetector/lists"}