# ua-format-js **Repository Path**: jeeinn/ua-format-js ## Basic Information - **Project Name**: ua-format-js - **Description**: UAFormat.js - Another lightweight JavaScript-based user-agent string parser library to detect browser, layout engine, operating system, and device type/model/vendor, entirely from user-agent string. Supports browser & node.js environment. - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-12 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ua-format-js 重复造轮子,一个userAgent解析器UAFormat.js(参考UAParser.js) Another wheel,an userAgent parser UAFormat.js (refer to the UAParser.js) [![996.icu](https://img.shields.io/badge/link-996.icu-red.svg)](https://996.icu) [![LICENSE](https://img.shields.io/badge/license-Anti%20996-blue.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE) 致力于更符合中国特色的浏览器`userAgent`字符串识别与探测!欢迎添砖加瓦 * 作者 : jeeinn * 源代码 : [https://github.com/jeeinn/ua-format-js](https://github.com/jeeinn/ua-format-js) * 许可 : MIT * 声明:本项目仅作为研究ua识别学习,如有侵权请Email。 * 演示地址 : [http://faisalman.github.io/ua-parser-js](http://faisalman.github.io/ua-parser-js)(暂时厚颜无耻的使用UAParser.js的) ## 方法 1. `setUA()` 2. `getUA()` 3. `getOS()` 4. `getBrowser()` 5. `getDevice()` 6. `getEngine()` 7. `getResult()` 8. ~~getCPU()~~ ## 注解 调用`getOS()`、`getBrowser()`、`getEngine()` 返回 `{ name:'', version:'' }` 调用`getDevice()` 返回 `{ type:'', model:'', vendor:'' }` * 'device.type'可能值,支持自定义: `desktop、mobile、tablet、smarttv、wearable、embedded、console` * 'device.vendor'可能值,支持自定义: `Meizu、Samsung、Lenovo、Acer、Alcatel、Amazon、HP、 HTC、Huawei、Jolla、LG、Microsoft、Motorola、Nexian、 Apple、Nintendo、Nokia、Nvidia、Ouya、Palm、Panasonic、 Archos、Asus、BenQ、BlackBerry、Dell、GeeksPhone、Google、 Polytron、RIM、Sharp、Siemens、Sony-Ericsson、Sprint、Xbox、 ZTE` * 'device.model' 动态解析,支持自定义 ## 规则 在`src/ua-format.js`的`uaRules`对象中添加相应的解析规则 如`getOS`方法中的`os`的相应信息,在`osRules`中添加如下一个规则对象 ``` { patterns:[/microsoft\s(windows)\s(vista|xp)/i], // Windows (iTunes) defaults:[[NAME,'Windows'],[VERSION]] } ``` * patterns是正则表达式数组(允许多个) * defaults是默认值数组(二维表示自定义值,自定义值优先使用) ## 例子 * HTML引入示例 ```html ``` * node使用 ``` npm install ua-format-js --save ``` js文件示例 ``` var formater = require('ua-format-js').UAFormat(); var uaString = 'Mozilla/5.0 (Linux; U; Android 6.0.1; zh-cn; ONE A2001 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/6.0 Mobile Safari/537.36'; formater.setUA(uaString); console.log(formater.getResult()); // result // { // ua: 'Mozilla/5.0(Linux;U;Android6.0.1;zh-cn;ONEA2001Build/MMB29M)AppleWebKit/537.36(KHTML,likeGecko)Version/4.0Chrome/37.0.0.0MQQBrowser/6.0MobileSafari/537.36', // os: { // name: 'Android', // version: '6.0.1' // }, // browser: { // name: 'QQBrowser', // version: '6.0' // }, // device: { // model: 'ONEA2001', // vendor: 'OnePlus', // type: 'mobile' // }, // engine: { // name: 'WebKit', // version: '537.36' // } // } ``` ## 更新 * v0.0.3 -2018/9/17 1. 添加一些常见浏览器qq、2345、line、MiPlus... 2. 修改几处变量命名 3. 归类正则减少初始化Object 4. 开发模式依赖插件因安全问题升级 * v0.0.2 -2017/3/10 1. 修复一个bug 2. 兼容nodejs使用 3. 增加小米、红米、魅族、努比亚、vivo、oppo、1+、乐视、金立手机识别 4. 增加百度浏览器baiduboxapp识别 5. 调整部分注释 6. 该版本以后,如果只增加正则识别则只更新版本号尾数如0.0.xx,功能性增加则中间位数依次迭代 * v0.0.1 - 2017/3/8 1. 实现同原理的`UAParser.js` 2. 复制`UAParser.js`的所有正则内容 3. 无结果时默认为`unknown` ## To Do 1. 持续增加国内常见手机端ua 2. 增加 desktop 设备识别 3. 精简不常用ua 4. 增加自己的演示地址 ## 鸣谢 * `UAParser.js` [https://github.com/faisalman/ua-parser-js](https://github.com/faisalman/ua-parser-js) * 所有`UAParser.js`、本项目的贡献者 * 所有给star的开发者、使用者 ## 打赏 ![请我喝杯咖啡](https://raw.githubusercontent.com/jeeinn/pics/master/alipay-wepay.png)