ua-spy
v2.0.0
Published
parse user agent string to human readable object like os, device, browser, etc
Downloads
3,252
Maintainers
Readme
ua-spy
A parser for user agent to simple js object
Features
- ✅ default plenty rules, include APP, OS, DEVICE, SDK
- ✅ support custom rules
How to use
Install
npm i ua-spy -S
Example
const { detectAll } = require('ua-spy')
const parse = detectAll()
const all = parse('Mozilla/5.0 (Linux; Android 5.1.1; vivo X6S A Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/044207 Mobile Safari/537.36 MicroMessenger/6.7.3.1340(0x26070332) NetType/4G Language/zh_CN Process/tools')
console.log('result is', all)
/*
{
"os": {
"name": "Android",
"version": "5.1.1"
},
"app": {
"name": "na",
"version": "-"
},
"browser": {
"name": "Chrome",
"version": "57"
},
"device": {
"name": "vivo",
"version": "X6S"
},
"sdk": {
"name": "na",
"version": "-"
}
}
*/
const patchParser = detectAll({
osPatches: [
['MYOS', /\bMYOS ([\d.]+)/],
],
appPatches: [
['TAOBAO', /\bTB\/([\d.]+)/]
],
browserPatches: [
['UC', /\bMYUC ([\d._]+)/]
],
devicePatches: [
['YEJIDEVICE', /\bYEJIDEVICE ?([\d.]+)/]
],
sdkPatches: [
// The first match is name, the second is version
['any', /\bTestName\(([\w_-]+)\/([\d.]+)/],
],
})
const MY_UA = 'MYOS 3.3.3 Mozilla/5.0 YEJIDEVICE 1.1.1 (iPhone; CPU iPhone OS 11_4 like Mac OS X) TB/1.1.1 MYUC 2.0 AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 TestName(tname_1-1/99.9)'
console.log('result is', patchParser(MY_UA))
/*
{
"os": {
"name": "MYOS",
"version": "3.3.3"
},
"app": {
"name": "TAOBAO",
"version": "1.1.1"
},
"browser": {
"name": "UC",
"version": "2.0"
},
"device": {
"name": "YEJIDEVICE",
"version": "1.1.1"
},
"sdk": {
"name": "tname_1-1",
"version": "99.9"
}
}
*/
License
MIT