ua-spy

parse user agent string to human readable object like os, device, browser, etc

  • ua-spy

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
ua-spy
102.0.0a year ago4 years agoMinified + gzip package size for ua-spy in KB

Readme

ua-spy
!NPM versionnpm-imagenpm-url !Build statustravis-imagetravis-url !Test coveragecodecov-imagecodecov-url !Licenselicense-imagelicense-url
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