侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

UA Detect

2024-05-11 星期六 / 0 评论 / 0 点赞 / 75 阅读 / 11766 字

开始之前在以前很长一段时间里, 为了做前端的浏览器兼容而去利用 UA 判定浏览器类型(特别是IE)是很常见的但如今都提倡利用 Features Detection 来处理兼容的问题, UA 判定的工作

开始之前

在以前很长一段时间里, 为了做前端的浏览器兼容而去利用 UA 判定浏览器类型(特别是IE)是很常见的
但如今都提倡利用 Features Detection 来处理兼容的问题, UA 判定的工作越来越少了
角度转换一下, 现在不是为了做特性的兼容, 而是为了业务的兼容, 这类业务的兼容尤为多
我们需要给用户一个 APP 下载的二维码, 而不单独列出各平台的下载链接
二维码只有一个, 跳到一个介绍页, 下载跳转按钮只有一个
需要对 Android 和 iOS 平台做区分
由于 QQ 和 微信 内的 WebView 有下载限制, 所以这里也需要做特殊处理

各类参考

NavigatorID.userAgent - Web API 接口| MDN
浏览器野史 UserAgent列传(上)
浏览器野史 UserAgent列传(下)
MYIP.MS
其他人的收集1
其他人的收集2

收集到的信息

多数的信息都是自己收集的, 设备没那么多, 所以不太全, 顾及了常用的
少部分是引用自上面的参考, 如 360SE 和 360EE, 360被公司封锁了
自己也懒得去安装那么多浏览器测试

// Ubuntu 16.04 Chrome Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36// Ubuntu 16.04 Firefox Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0// Mac OS X SafariMozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4// Mac OS X ChromeMozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36// Mac OS X FirefoxMozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0// Windows 10 ChromeMozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36// Windows 10 FirefoxMozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 // Windows 10 EdgeMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586// Windows 10 IE11Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko// 下面是模拟出来的结果// Windows 10 IE10Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) // Windows 10 IE9Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) // Windows 10 IE8Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0) // Windows 10 IE7Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) // Windows 10 IE6Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) // Windows 8.1 ChromeMozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36// Windows 8.1 IE11Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko // Windows 8.1 LBBROWSERMozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.154 Safari/537.36 LBBROWSER// Windows 8.1 LBBROWSER IEMozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; LBBROWSER; rv:11.0) like Gecko // Windows 8.1 360SE - ChromeMozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML like Gecko) Chrome/31.0.1650.63 Safari/537.36 QIHU 360SE// Windows 8.1 360SE - IEMozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.3; Trident/7.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; WebMoney Advisor; 360SE)// Windows 7 ChromeMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36// Windows 7 IE11Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko // Windows 7 UC - IEMozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0; UBrowser/5.6.12860.10) like Gecko// Windows 7 UC - ChromeMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.12860.10 Safari/537.36// Windows 7 360EEMozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11 QIHU 360EE// 以下是移动端的// Nexus5X QQ Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MTC19T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/50.0.2661.86 Mobile Safari/537.36 V1_AND_SQ_6.3.0_348_YYB_D QQ/6.3.0.2730 NetType/WIFI WebP/0.4.1 Pixel/1080// Nexus5X WXMozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MTC19T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036519 Safari/537.36 MicroMessenger/6.3.16.64_r75b3df2.780 NetType/WIFI Language/zh_CN// Nexus5X ChromeMozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MTC19T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36// iPhone 6s QQMozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 QQ/6.3.5.437 V1_IPH_SQ_6.3.5_1_APP_A Pixel/750 Core/UIWebView NetType/WIFI Mem/38// iPhone 6s WXMozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.3.16 NetType/WIFI Language/zh_CN// iPhone 6s SafariMozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13F69 Safari/601.1// iPhone 6s UCMozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/13F69 UCBrowser/10.9.15.793 Mobile// iPhone 6 QQMozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E233 QQ/6.3.5.437 V1_IPH_SQ_6.3.5_1_APP_A Pixel/750 Core/UIWebView NetType/WIFI Mem/160// iPhone 6 WXMozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E233 MicroMessenger/6.3.16 NetType/WIFI Language/zh_CN// iPhone 6 SafariMozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E233 Safari/601.1// iPhone 6 QQ BrowserMozilla/5.0 (iPhone 6; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/6.0 MQQBrowser/6.7 Mobile/13E233 Safari/8536.25 MttCustomUA/2// MI 4 QQMozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI 4LTE Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025489 Mobile Safari/533.1 V1_AND_SQ_6.3.3_358_YYB_D PA QQ/6.3.3.2755 NetType/WIFI WebP/0.3.0 Pixel/1080// MI 4 WXMozilla/5.0 (Linux; Android 4.4.4; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036215 Safari/537.36 MicroMessenger/6.3.18.800 NetType/WIFI Language/zh_CN// MI 4 ChromeMozilla/5.0 (Linux; Android 4.4.4; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.95 Mobile Safari/537.36// MI 4 UCMozilla/5.0 (Linux; Android 4.4.4; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 UCBrowser/10.0.0.538// MI 4 QQ browserMozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/6.4 Mobile Safari/537.36// 以下是模拟的// Ubuntu 16.04 Chrome - iPhone4Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1// Ubuntu 16.04 Chrome - iPhone5Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1// Ubuntu 16.04 Chrome - iPhone6Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1// Ubuntu 16.04 Chrome - iPhone6 plusMozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1// Ubuntu 16.04 Chrome - iPadMozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1// Ubuntu 16.04 Chrome - iPad MiniMozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1// Ubuntu 16.04 Chrome - Nexus6P ???Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36// Ubuntu 16.04 Chrome - Nexus6Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36// Ubuntu 16.04 Chrome - Nexus5X ???Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36// Ubuntu 16.04 Chrome - Nexus5Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36// Ubuntu 16.04 Chrome - Nexus7Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36// Ubuntu 16.04 Chrome - Nexus10Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36// Ubuntu 16.04 Chrome - Galaxy S5Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36// Ubuntu 16.04 Chrome - Galaxy S3Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30// Ubuntu 16.04 Chrome - Galaxy Note3Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30// Ubuntu 16.04 Chrome - Microsoft Lumia 950Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263// Ubuntu 16.04 Chrome - Microsoft Lumia 550Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263

分析结果

如果只是要简单地处理下, 并不在乎大小, 那么到 github 上找找就好, 比如这个:
hgoebl/mobile-detect.js
faisalman/ua-parser-js
这些库里常常会收集了很多 UA 的特性, 功能可以说很完善, 但也常常跟不上设备更新的速度

而很多时候, 我们并不需要那么大而全的工具, 偏向于自己简单地处理下

###总结一些关键字Windows NT
Windows NT 10.0 : Windows 10
Windows NT 6.3 : Windows 8.1Windows NT 6.2 : Windows 8
Windows NT 6.1 : Windows 7
Windows NT 6.0 : Windows Vista
Windows NT 5.2 : Windows 2003
Windows NT 5.1 : Windows XP
Windows NT 5.0 : Windows 2000

userAgent = appCodeName/appVersion number (Platform; Security; OS-or-CPU; Localization; rv: revision-version-number) product/productSub Application-Name Application-Name-version

Security
N: 表示无安全加密
I: 表示弱安全加密
U: 表示强安全加密

###判断 Android最明显的是利用关键字: "Android"
可是看细致了会发现 Windows Phone 的 UA 也会加入 "Android" 关键字
所以得过滤掉 Windows Phone

const ua = navigator.userAgent.toLowerCase();//let isAndroid = /android/i.test(ua)

###判断 iOS

广告 广告

评论区