fex-team / ua-device Goto Github PK
View Code? Open in Web Editor NEWuserAgent解析库
Home Page: http://fex-team.github.io/ua-device/
License: BSD 3-Clause "New" or "Revised" License
userAgent解析库
Home Page: http://fex-team.github.io/ua-device/
License: BSD 3-Clause "New" or "Revised" License
js 里面可以用 echo??
Input:
Mozilla/5.0 (Linux; Android 5.1.1; Redmi 3 Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043305 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/WIFI Language/zh_CN
Output:
{
"options": {
"useFeatures": false,
"detectCamouflage": true
},
"browser": {
"stock": false,
"hidden": false,
"channel": "",
"name": "QQ Browser",
"version": {
"original": "6.2",
"alias": null
}
},
"engine": {
"name": "Webkit",
"version": {
"original": "537.36",
"alias": null
}
},
"os": {
"name": "Android",
"version": {
"original": "5.1.1",
"alias": null
}
},
"device": {
"type": "mobile",
"identified": false,
"model": "Redmi 3"
},
"camouflage": false,
"features": []
}
这行执行不到:
Line 122 in 04c62bb
是不是你前面这一行:
https://github.com/fex-team/ua-device/blob/master/lib/ua-device.js#L10
判断条件里少了 xiaomi
ios上的qq浏览器把设备类型识别成desktop,os识别成MAC OS X
检测结果里面,浏览器有一项是 Google Browser
, 版本是 4.0。
想问一下这个 Google Browser 是怎么划分的,表示的浏览器是什么?因为这个结果和 https://github.com/hotoo/detector 的检测结果相差很大。之前用 detector 的结果是分散的很多其他各个版本的浏览器,现在都变成了 Google Browser 4.0
魅蓝在微信中识别不了,识别成小米了
当引用es6语法时 报错 match 没定义过 在useragent-base.js 里 2741行加 var match;就好了
都用的是6.3.15版本的微信,UA如下
Result for: Mozilla/5.0 (Linux; U; Android 5.1.1; zh-cn; SM-N920T Build/LMY47X) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025489 Mobile Safari/533.1 MicroMessenger/6.3.15.49_r8aff805.760 NetType/WIFI Language/zh_CN(本机UA)
Result for: Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; OPPO R7s Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025489 Mobile Safari/533.1 MicroMessenger/6.3.15.49_r8aff805.760 NetType/WIFI Language/zh_CN(本机UA)
另一台华为的也认为是QQ浏览器,iPhone6S下倒是能认出是微信浏览器。
能否统一微信在两种平台上的浏览器判断?
看到这样一个UA:
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89 QQ/7.1.1.440 V1_IPH_SQ_7.1.1_1_APP_A Pixel/750 Core/UIWebView NetType/WIFI QBWebViewType/1
识别成Safari了
Stop maintenance?
windows server 2016 被识别为 windows 10
如 Mozilla/5.0 (Linux; Android 6.0.1; Redmi Note 4X Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043305 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/WIFI Language/zh_CN
试试这个UA string:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299
得到的结果是Chrome...
请作者修正之
相关逻辑:
Line 680 in 04c62bb
When use in a typescript project, this lib:
@types/ua-device
package.Please help add some d.ts file info into the lib.
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36 LBBROWSER
识别为
{u'browser': {u'channel': u'Nightly',
u'hidden': False,
u'name': u'Chrome',
u'stock': False,
u'version': {u'alias': None, u'original': u'42.0.2311.154'}},
u'camouflage': False,
u'device': {u'identified': False, u'type': u'desktop'},
u'engine': {u'name': u'Webkit',
u'version': {u'alias': None, u'original': u'537.36'}},
u'features': [],
u'options': {u'detectCamouflage': True, u'useFeatures': False},
u'os': {u'name': u'Windows',
u'version': {u'alias': u'8', u'original': u'6.2'}}}
Dalvik/1.6.0 (Linux; U; Android 4.4.4; Coolpad Y1 Build/KTU84P)
手机品牌应为Coolpad,ua-device识别结果为Vivo
点击报错如下:
图片
不错的框架,不知能否加入手机分辨率识别具体品牌系列型号功能,那样就更完美了
能不能有个完整的文档,展示下返回的字段,以及对部分字段的解释,比如browser的stock,hidden,channel。
这样使用者比较方便。免得还要去查看代码。
ua解析出来很多的baiduboxapp,看代码中写的是‘百度框’,请问百度框是什么?是百度搜索框吗?如果是的话,为什么单独列出来呢?还望解答。
user_agent:Dalvik/2.1.0 (Linux; U; Android 7.1.1; ONEPLUS A3000 Build/NMF26F)
http://fex-team.github.io/ua-device/js/ua-device.js +26 此处正则命中
我看在锤子手机的判别里只有SM705|SM701|YQ601|YQ603这四个型号,是不是不太够?
RT,毕竟做日志数据分析的大多数用python来写的
自带浏览器,识别准确
Mozilla/5.0 (Linux; Android 5.1; MZ-m2 note Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.94 Mobile Safari/537.36
在微信中,识别成小米
Mozilla/5.0 (Linux; U; Android 5.1; zh-cn; m2 note Build/LMY47D) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025489 Mobile Safari/533.1 MicroMessenger/6.3.15.49_r8aff805.760 NetType/WIFI Language/zh_CN
输入:
var input = 'Mozilla/5.0 (Linux; Android 5.1; Coolpad 8722V Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/35.0.1916.138 Mobile Safari/537.36 T7/7.4 baiduboxapp/8.1 (Baidu; P1 5.1)';
输出:
{
"options": {
"useFeatures": false,
"detectCamouflage": true
},
"browser": {
"stock": false,
"hidden": false,
"channel": "Nightly",
"name": "百度框",
"version": {
"original": "35.0.1916.138"
}
},
"engine": {
"name": "Webkit",
"version": {
"original": "537.36",
"alias": null
}
},
"os": {
"name": "Android",
"version": {
"alias": "5.1",
"original": "5.1"
}
},
"device": {
"type": "mobile",
"identified": false,
"model": "8722",
"manufacturer": "Coolpad"
},
"camouflage": false,
"features": []
}
是否可以输出手百8.1
版本号呢
iOS上Chrome的UA为: Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) CriOS/67.0.3396.87 Mobile/15F79 Safari/604.1
被识别为Safari了,我看测试用例里面也有,应该也被识别错了。代码ua-device.js的615行mobile的识别到iphone或者ipad就统一为Safari有点欠妥。
类似这样的 ua:
Mozilla/5.0 (iPhone 6sp; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 MQQBrowser/7.3 Mobile/14E304 Safari/8536.25 MttCustomUA/2 QBWebViewType/1
Mozilla/5.0 (iPhone 6sp; CPU iPhone OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 MQQBrowser/7.4 Mobile/13G36 Safari/8536.25 MttCustomUA/2 QBWebViewType/1 WKType/1
被识别成 Mac OS 了, 但感觉应该是 iPhone。
iOS版Opera的UA如下:
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) OPiOS/11.0.1.107866 Version/7.0 Mobile/14E304 Safari/9537.53
应该是可以根据OPiOS识别的,但是该库识别不了。
提供UA如下
Pro 6 Plus
Mozilla/5.0 (Linux; Android 6.0.1; PRO 6 Plus Build/MMB29T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043305 Safari/537.36 MicroMessenger/6.5.7.1041 NetType/4G Language/zh_CN
M5
Mozilla/5.0 (Linux; Android 5.1; M5 Build/LMY47D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043408 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/WIFI Language/zh_CN
M5 Note
Mozilla/5.0 (Linux; Android 6.0; M5 Note Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043305 Safari/537.36 MicroMessenger/6.5.10.1080 NetType/4G Language/zh_CN
M3X
Mozilla/5.0 (Linux; Android 6.0.1; M3X Build/MMB29U; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043305 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/4G Language/zh_CN
我本机的 UA:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 OPR/36.0.2130.32
OPR/36.0.3130.32
可以用的吧。
刚刚测试
Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3
浏览器应该是 chrome 而不是 safari
/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/ua-device/lib/useragent-base.js:5630
if (this.os.name !== 'iOS' && /AppleWebKit/([0-9]+.[0-9]+)/i.exec(ua)[1] !== /Safari/([0-9]+.[0-9]+)/i.exec(ua)[1]) {
^
TypeError: Cannot read property '1' of null
at Object.module.exports.Detected.detect (/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/ua-device/lib/useragent-base.js:5630:91)
at Object.module.exports.Detected.initialize (/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/ua-device/lib/useragent-base.js:2556:18)
at Object.module.exports.Detected (/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/ua-device/lib/useragent-base.js:2533:25)
at new module.exports (/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/ua-device/lib/ua-device.js:3:18)
at /Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/test/uatest.js:35:16
at /Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/line-reader/lib/line_reader.js:277:11
at getLine (/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/line-reader/lib/line_reader.js:166:7)
at Object.nextLine (/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/line-reader/lib/line_reader.js:183:7)
at Immediate.readNext (/Users/qitmac000475/Documents/myWorkspace/qreport_mapping/qreport_mapping/node_modules/line-reader/lib/line_reader.js:269:14)
at runCallback (timers.js:570:20)
版本库只包含了源码,依赖cmd加载,是否可以提供打包后可独立使用的文件。
魅蓝note被识别成小米m1
原因:魅族魅蓝note UA :Mozilla/5.0 (Linux; U; Android 5.1; zh-cn;m1 note
Build/LMY47D) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/8.8 TBS/88888888 Mobile Safari/533.1 MicroMessenger/6.3.15.49_r8aff805.760 NetType/WIFI Language/zh_CN(本机UA)
应该是匹配到了m1
被识别成了小米m1
ua-device里面的if else也太吓人了吧
从nginx日志随机挑了一条解析,结果是微信4.0(这里微信版本也应该是6.3.15.49),如果内核是QQ浏览器,那么浏览器信息应该是QQ浏览器5.4,后面的device.model=M3-5这个解析结果也比较奇怪?
Mozilla/5.0 (Linux; U; Android 5.0.1; zh-cn; M355 Build/LRX22C) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025489 Mobile Safari/533.1 MicroMessenger/6.3.15.49_r8aff805.760 NetType/WIFI Language/zh_CN
{ options: { useFeatures: false, detectCamouflage: true },
browser:
{ stock: true,
hidden: true,
channel: '',
name: '微信',
version: { original: '4.0' } },
engine: { name: 'Webkit', version: { original: '533.1', alias: null } },
os:
{ name: 'Android',
version: { alias: '5.0.1', original: '5.0.1' } },
device: { type: 'mobile', identified: false, model: 'M3-5' },
camouflage: false,
features: [] }
华为荣耀8x设备制造商无法识别;UA如下:
Mozilla/5.0 (Linux; U; Android 8.1.0zh-cn; JSN-AL00a Build/HONORJSN-AL00a) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.1 Mobile Safari/537.36
看了下当前只支持将设备的品牌和产品查询出来,但具体是iphone几并没有;
有时需对移动端进行适配和填坑,若有可能的话请完善;
useragent包太大了.......
有办法对需要打包的东西做选择吗?
比如我只需要判断pc还是移动端,并不需要更具体的东西
似乎不行,为什么不加上这个功能呢
华为和小米同测,用微信浏览器打开均显示为iphone
请问这个库如何在客户端使用 ? 还是只能用nodejs来部署
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.