mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-11-15 22:52:16 +03:00
Compare commits
55 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91f3185eb2 | ||
|
|
9bcfbe2460 | ||
|
|
eeaf198197 | ||
|
|
59edeef380 | ||
|
|
f92d409909 | ||
|
|
5af24a6cf7 | ||
|
|
d810feb844 | ||
|
|
32d326b35b | ||
|
|
786d502b01 | ||
|
|
5b8adfef7b | ||
|
|
2e06a34062 | ||
|
|
bf9ac43328 | ||
|
|
3f8b5ba9cf | ||
|
|
1747707be6 | ||
|
|
d41404551f | ||
|
|
ba067bd351 | ||
|
|
a486f28732 | ||
|
|
3218051f07 | ||
|
|
551ad88474 | ||
|
|
097f736c4d | ||
|
|
73c25771dc | ||
|
|
f8e5a1fb4f | ||
|
|
c9d1ab9561 | ||
|
|
f815ca6e9c | ||
|
|
0cbeb7a829 | ||
|
|
bf4fb916ca | ||
|
|
68447d883a | ||
|
|
0b0c7ff617 | ||
|
|
5b2e80bdfd | ||
|
|
ba0f25c19d | ||
|
|
4d3048aaaa | ||
|
|
97e4a89685 | ||
|
|
1a521b867f | ||
|
|
5d4ca2b4c2 | ||
|
|
cf093222e5 | ||
|
|
2033eb4aba | ||
|
|
df7551c9b6 | ||
|
|
94f2d604d1 | ||
|
|
e5942dc505 | ||
|
|
4ef9841592 | ||
|
|
528e7aea1c | ||
|
|
5e33df3b6b | ||
|
|
a8a4e71345 | ||
|
|
1f6a7e2860 | ||
|
|
db5567d614 | ||
|
|
2f7017b4d5 | ||
|
|
8ffdf232f4 | ||
|
|
98096f1454 | ||
|
|
5fd47ee00d | ||
|
|
6fde0d92d6 | ||
|
|
534ba7dd7c | ||
|
|
0b423078c8 | ||
|
|
779b5dc1e5 | ||
|
|
62cc99d7cf | ||
|
|
825edbbf91 |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ua-parser-js",
|
"name": "ua-parser-js",
|
||||||
"version": "0.7.33",
|
"version": "1.0.36",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Faisal Salman <f@faisalman.com>"
|
"Faisal Salman <f@faisalman.com>"
|
||||||
],
|
],
|
||||||
|
|||||||
73
changelog.md
73
changelog.md
@@ -1,3 +1,74 @@
|
|||||||
# UAParser.js Changelog
|
# UAParser.js Changelog
|
||||||
|
|
||||||
## Version 0.8.0
|
# Version 0.7 / 1.0
|
||||||
|
|
||||||
|
Version 1.0.x is basically the equivalent of version 0.7.x. See [#536](https://github.com/faisalman/ua-parser-js/issues/536) for the reason behind this confusion.
|
||||||
|
|
||||||
|
## Version 0.7.36 / 1.0.36
|
||||||
|
- Add new browser: Snapchat
|
||||||
|
- Add new devices: Infinix, Tecno
|
||||||
|
- Improve device detection: Amazon Fire TV, Xiaomi POCO
|
||||||
|
- Improve OS detection: iOS
|
||||||
|
|
||||||
|
## Version 0.7.35 / 1.0.35
|
||||||
|
- Fix result from user-supplied user-agent being altered
|
||||||
|
- Add new browser: Heytap, TikTok
|
||||||
|
- Add new engine: LibWeb
|
||||||
|
- Add new OS: SerenityOS
|
||||||
|
- Improve browser detection: Yandex
|
||||||
|
- Improve device detection: iPhone, Amazon Echo
|
||||||
|
- Improve OS detection: iOS
|
||||||
|
|
||||||
|
## Version 0.7.34 / 1.0.34
|
||||||
|
- Fix Sharp Mobile detected as Huawei Tablet
|
||||||
|
- Fix IE8 bug
|
||||||
|
- Add new devices : Kobo e-Reader, Apple Watch, and some new SmartTV devices
|
||||||
|
- Add new OS : watchOS
|
||||||
|
- Improve browser detection : Kakao, Naver, Brave
|
||||||
|
- Improve device detection : Oculus, iPad
|
||||||
|
- Improve OS detection : Chrome OS
|
||||||
|
- Using navigator.userAgentData as fallback for device.type & os.name
|
||||||
|
|
||||||
|
## Version 0.7.33 / 1.0.33
|
||||||
|
|
||||||
|
- Add new browser : Cobalt
|
||||||
|
- Identify Macintosh as an Apple device
|
||||||
|
- Fix ReDoS vulnerability
|
||||||
|
|
||||||
|
## Version 0.7.32 / 1.0.32
|
||||||
|
|
||||||
|
- Add new browser : DuckDuckGo, Huawei Browser, LinkedIn
|
||||||
|
- Add new OS : HarmonyOS
|
||||||
|
- Add some Huawei models
|
||||||
|
- Add Sharp Aquos TV
|
||||||
|
- Improve detection Xiaomi Mi CC9
|
||||||
|
- Fix Sony Xperia 1 III misidentified as Acer tablet
|
||||||
|
- Fix Detect Sony BRAVIA as SmartTV
|
||||||
|
- Fix Detect Xiaomi Mi TV as SmartTV
|
||||||
|
- Fix Detect Galaxy Tab S8 as tablet
|
||||||
|
- Fix WeGame mistakenly identified as WeChat
|
||||||
|
- Fix included commas in Safari / Mobile Safari version
|
||||||
|
- Increase UA_MAX_LENGTH to 350
|
||||||
|
|
||||||
|
## Version 0.7.31 / 1.0.2
|
||||||
|
|
||||||
|
- Fix OPPO Reno A5 incorrect detection
|
||||||
|
- Fix TypeError Bug
|
||||||
|
- Use AST to extract regexes and verify them with safe-regex
|
||||||
|
|
||||||
|
## Version 0.7.30 / 1.0.1
|
||||||
|
|
||||||
|
- Add new browser : Obigo, UP.Browser, Klar
|
||||||
|
- Add new device : Oculus, Roku
|
||||||
|
- Add new OS: Maemo, HP-UX, Android-x86, Deepin, elementary OS, GhostBSD, Linspire, Manjaro, Sabayon
|
||||||
|
- Improve detection for Sony Xperia 1ii, LG Android TV, and some more devices
|
||||||
|
- Improve detection for ARM64 CPU
|
||||||
|
- Improve detection for Windows Mobile, Netscape, Mac on PowerPC
|
||||||
|
- Categorize PDA as mobile
|
||||||
|
- Fix Sharp devices misjudged as Huawei
|
||||||
|
- Fix trailing comma for ES3 compatibility
|
||||||
|
- Some code refactor
|
||||||
|
|
||||||
|
# Version 0.8
|
||||||
|
|
||||||
|
Version 0.8 was created by accident. This version is now deprecated and no longer maintained, please update to version 0.7 / 1.0.
|
||||||
4
dist/ua-parser.min.js
vendored
4
dist/ua-parser.min.js
vendored
File diff suppressed because one or more lines are too long
4
dist/ua-parser.pack.js
vendored
4
dist/ua-parser.pack.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2012-2021 Faisal Salman <<f@faisalman.com>>
|
Copyright (c) 2012-2023 Faisal Salman <<f@faisalman.com>>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Package.describe({
|
Package.describe({
|
||||||
name: 'faisalman:ua-parser-js',
|
name: 'faisalman:ua-parser-js',
|
||||||
version: '0.7.33',
|
version: '1.0.36',
|
||||||
summary: 'Lightweight JavaScript-based user-agent string parser',
|
summary: 'Lightweight JavaScript-based user-agent string parser',
|
||||||
git: 'https://github.com/faisalman/ua-parser-js.git',
|
git: 'https://github.com/faisalman/ua-parser-js.git',
|
||||||
documentation: 'readme.md'
|
documentation: 'readme.md'
|
||||||
|
|||||||
16
package.json
16
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"title": "UAParser.js",
|
"title": "UAParser.js",
|
||||||
"name": "ua-parser-js",
|
"name": "ua-parser-js",
|
||||||
"version": "0.7.33",
|
"version": "1.0.36",
|
||||||
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
|
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
|
||||||
"description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment",
|
"description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@@ -13,7 +13,15 @@
|
|||||||
"device",
|
"device",
|
||||||
"cpu",
|
"cpu",
|
||||||
"jquery-plugin",
|
"jquery-plugin",
|
||||||
"ecosystem:jquery"
|
"ecosystem:jquery",
|
||||||
|
"ua-parser-js",
|
||||||
|
"client-hints",
|
||||||
|
"user-agent-detection",
|
||||||
|
"device-detection",
|
||||||
|
"platform-detection",
|
||||||
|
"mobile-detection",
|
||||||
|
"browser-detection",
|
||||||
|
"architecture-detection"
|
||||||
],
|
],
|
||||||
"homepage": "https://github.com/faisalman/ua-parser-js",
|
"homepage": "https://github.com/faisalman/ua-parser-js",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
@@ -197,6 +205,10 @@
|
|||||||
{
|
{
|
||||||
"type": "paypal",
|
"type": "paypal",
|
||||||
"url": "https://paypal.me/faisalman"
|
"url": "https://paypal.me/faisalman"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/faisalman"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
72
readme.md
72
readme.md
@@ -17,6 +17,26 @@ JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model fro
|
|||||||
* Author : Faisal Salman <<f@faisalman.com>>
|
* Author : Faisal Salman <<f@faisalman.com>>
|
||||||
* Demo : https://faisalman.github.io/ua-parser-js
|
* Demo : https://faisalman.github.io/ua-parser-js
|
||||||
* Source : https://github.com/faisalman/ua-parser-js
|
* Source : https://github.com/faisalman/ua-parser-js
|
||||||
|
* Documentation :
|
||||||
|
* v1 : https://github.com/faisalman/ua-parser-js/tree/1.0.35#documentation
|
||||||
|
* v2 : https://faisalman.github.io/ua-parser-js-docs/v2
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### From Our Sponsors:
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<a href="https://opencollective.com/ua-parser-js">↗ Become a sponsor</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
### UAParser([user-agent][,extensions])
|
### UAParser([user-agent][,extensions])
|
||||||
@@ -80,19 +100,20 @@ The methods are self explanatory, here's a small overview on all the available m
|
|||||||
# Possible 'browser.name':
|
# Possible 'browser.name':
|
||||||
2345Explorer, 360 Browser, Amaya, Android Browser, Arora, Avant, Avast, AVG,
|
2345Explorer, 360 Browser, Amaya, Android Browser, Arora, Avant, Avast, AVG,
|
||||||
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
|
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
|
||||||
Chrome Headless, Chrome WebView, Chrome, Chromium, Comodo Dragon, Dillo,
|
Chrome Headless, Chrome WebView, Chrome, Chromium, Cobalt, Comodo Dragon, Dillo,
|
||||||
Dolphin, Doris, DuckDuckGo, Edge, Electron, Epiphany, Facebook, Falkon, Fennec,
|
Dolphin, Doris, DuckDuckGo, Edge, Electron, Epiphany, Facebook, Falkon, Fennec,
|
||||||
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Huawei Browser,
|
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Heytap,
|
||||||
ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon, Iceweasel, Instagram,
|
Huawei Browser, ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon, Iceweasel,
|
||||||
Iridium, Iron, Jasmine, K-Meleon, Kindle, Klar, Konqueror, LBBROWSER, Line,
|
Instagram, Iridium, Iron, Jasmine, Kakao[Story/Talk], K-Meleon, Kindle, Klar,
|
||||||
LinkedIn, Links, Lunascape, Lynx, MIUI Browser, Maemo Browser, Maemo, Maxthon,
|
Konqueror, LBBROWSER, Line, LinkedIn, Links, Lunascape, Lynx, MIUI Browser,
|
||||||
MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront, NetSurf, Netfront,
|
Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront,
|
||||||
Netscape, NokiaBrowser, Obigo, Oculus Browser, OmniWeb, Opera Coast,
|
NetSurf, Netfront, Netscape, NokiaBrowser, Obigo, Oculus Browser, OmniWeb,
|
||||||
Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, Polaris, Puffin, QQ,
|
Opera Coast, Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, Polaris,
|
||||||
QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari, Sailfish Browser,
|
Puffin, QQ, QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari,
|
||||||
Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim, SlimBrowser, Swiftfox,
|
Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim,
|
||||||
Tesla, Tizen Browser, UCBrowser, UP.Browser, Vivaldi, Waterfox, WeChat, Weibo,
|
SlimBrowser, Snapchat, Swiftfox, Tesla, TikTok, Tizen Browser, UCBrowser,
|
||||||
Yandex, baidu, iCab, w3m, Whale Browser...
|
UP.Browser, Viera, Vivaldi, Waterfox, WeChat, Weibo, Yandex, baidu, iCab, w3m,
|
||||||
|
Whale Browser, ...
|
||||||
|
|
||||||
# 'browser.version' determined dynamically
|
# 'browser.version' determined dynamically
|
||||||
```
|
```
|
||||||
@@ -113,10 +134,11 @@ console, mobile, tablet, smarttv, wearable, embedded
|
|||||||
|
|
||||||
# Possible 'device.vendor':
|
# Possible 'device.vendor':
|
||||||
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
|
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
|
||||||
Essential, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG,
|
Essential, Facebook, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Infinix, Jolla,
|
||||||
Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus, OPPO, Ouya,
|
Kobo, Lenovo, LG, Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia,
|
||||||
Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp, Siemens,
|
OnePlus, OPPO, Ouya, Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung,
|
||||||
Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
|
Sharp, Siemens, Sony[Ericsson], Sprint, Tecno, Tesla, Vivo, Vodafone, Xbox, Xiaomi,
|
||||||
|
Zebra, ZTE, ...
|
||||||
|
|
||||||
# 'device.model' determined dynamically
|
# 'device.model' determined dynamically
|
||||||
```
|
```
|
||||||
@@ -126,8 +148,8 @@ Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Possible 'engine.name'
|
# Possible 'engine.name'
|
||||||
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, Links, Lynx, NetFront,
|
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, LibWeb, Links, Lynx,
|
||||||
NetSurf, Presto, Tasman, Trident, w3m, WebKit
|
NetFront, NetSurf, Presto, Tasman, Trident, w3m, WebKit
|
||||||
|
|
||||||
# 'engine.version' determined dynamically
|
# 'engine.version' determined dynamically
|
||||||
```
|
```
|
||||||
@@ -141,10 +163,11 @@ AIX, Amiga OS, Android[-x86], Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,
|
|||||||
Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS,
|
Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS,
|
||||||
Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HarmonyOS, HP-UX, Hurd, iOS, Joli, KaiOS,
|
Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HarmonyOS, HP-UX, Hurd, iOS, Joli, KaiOS,
|
||||||
Linpus, Linspire,Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix,
|
Linpus, Linspire,Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix,
|
||||||
Mint, Morph OS, NetBSD, Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD, PCLinuxOS,
|
Mint, Morph OS, NetBSD, NetRange, NetTV, Nintendo, OpenBSD, OpenVMS, OS/2, Palm,
|
||||||
Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS, RISC OS, Sabayon,
|
PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS,
|
||||||
Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix,
|
RISC OS, Sabayon, Sailfish, SerenityOS, Series40, Slackware, Solaris, SUSE, Symbian,
|
||||||
VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ...
|
Tizen, Ubuntu, Unix, VectorLinux, Viera, watchOS, WebOS, Windows [Phone/Mobile],
|
||||||
|
Zenwalk, ...
|
||||||
|
|
||||||
# 'os.version' determined dynamically
|
# 'os.version' determined dynamically
|
||||||
```
|
```
|
||||||
@@ -312,9 +335,10 @@ console.log(myParser.setUA(myUA).getBrowser()); // {name: "MyBrowser", version:
|
|||||||
|
|
||||||
# Development
|
# Development
|
||||||
|
|
||||||
## Sponsors
|
## Backers & Sponsors
|
||||||
|
|
||||||
<a href="https://opencollective.com/ua-parser-js"><img src="https://opencollective.com/ua-parser-js/tiers/backers.svg?avatarHeight=64" height="80"/></a> <a href="https://opencollective.com/ua-parser-js"><img src="https://opencollective.com/ua-parser-js/tiers/sponsors.svg?avatarHeight=64" height="80"/></a>
|
<a href="https://opencollective.com/ua-parser-js"><img src="https://opencollective.com/ua-parser-js/organizations.svg?avatarHeight=64"></a>
|
||||||
|
<a href="https://opencollective.com/ua-parser-js"><img src="https://opencollective.com/ua-parser-js/individuals.svg?avatarHeight=64"></a>
|
||||||
|
|
||||||
<a href="https://www.paypal.me/faisalman/"><img src="https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg" height="40"></a>
|
<a href="https://www.paypal.me/faisalman/"><img src="https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg" height="40"></a>
|
||||||
|
|
||||||
|
|||||||
155
src/ua-parser.js
155
src/ua-parser.js
@@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
/* UAParser.js v0.7.33
|
/* UAParser.js v1.0.36
|
||||||
Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
|
Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
|
||||||
MIT License *//*
|
MIT License *//*
|
||||||
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
/////////////
|
/////////////
|
||||||
|
|
||||||
|
|
||||||
var LIBVERSION = '0.7.33',
|
var LIBVERSION = '1.0.36',
|
||||||
EMPTY = '',
|
EMPTY = '',
|
||||||
UNKNOWN = '?',
|
UNKNOWN = '?',
|
||||||
FUNC_TYPE = 'function',
|
FUNC_TYPE = 'function',
|
||||||
@@ -56,9 +56,12 @@
|
|||||||
SAMSUNG = 'Samsung',
|
SAMSUNG = 'Samsung',
|
||||||
SHARP = 'Sharp',
|
SHARP = 'Sharp',
|
||||||
SONY = 'Sony',
|
SONY = 'Sony',
|
||||||
|
VIERA = 'Viera',
|
||||||
XIAOMI = 'Xiaomi',
|
XIAOMI = 'Xiaomi',
|
||||||
ZEBRA = 'Zebra',
|
ZEBRA = 'Zebra',
|
||||||
FACEBOOK = 'Facebook';
|
FACEBOOK = 'Facebook',
|
||||||
|
CHROMIUM_OS = 'Chromium OS',
|
||||||
|
MAC_OS = 'Mac OS';
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
// Helper
|
// Helper
|
||||||
@@ -116,6 +119,7 @@
|
|||||||
// try matching uastring with regexes
|
// try matching uastring with regexes
|
||||||
while (j < regex.length && !matches) {
|
while (j < regex.length && !matches) {
|
||||||
|
|
||||||
|
if (!regex[j]) { break; }
|
||||||
matches = regex[j++].exec(ua);
|
matches = regex[j++].exec(ua);
|
||||||
|
|
||||||
if (!!matches) {
|
if (!!matches) {
|
||||||
@@ -232,8 +236,9 @@
|
|||||||
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
||||||
|
|
||||||
// Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
// Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
||||||
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
|
/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
|
||||||
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
|
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
|
||||||
|
/(heytap|ovi)browser\/([\d\.]+)/i, // Heytap/Ovi
|
||||||
/(weibo)__([\d\.]+)/i // Weibo
|
/(weibo)__([\d\.]+)/i // Weibo
|
||||||
], [NAME, VERSION], [
|
], [NAME, VERSION], [
|
||||||
/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
|
/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
|
||||||
@@ -247,7 +252,7 @@
|
|||||||
], [VERSION, [NAME, 'Konqueror']], [
|
], [VERSION, [NAME, 'Konqueror']], [
|
||||||
/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
|
/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
|
||||||
], [VERSION, [NAME, 'IE']], [
|
], [VERSION, [NAME, 'IE']], [
|
||||||
/yabrowser\/([\w\.]+)/i // Yandex
|
/ya(?:search)?browser\/([\w\.]+)/i // Yandex
|
||||||
], [VERSION, [NAME, 'Yandex']], [
|
], [VERSION, [NAME, 'Yandex']], [
|
||||||
/(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
|
/(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
|
||||||
], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [
|
], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [
|
||||||
@@ -283,12 +288,16 @@
|
|||||||
// WebView
|
// WebView
|
||||||
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
|
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
|
||||||
], [[NAME, FACEBOOK], VERSION], [
|
], [[NAME, FACEBOOK], VERSION], [
|
||||||
|
/(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
|
||||||
|
/(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
|
||||||
/safari (line)\/([\w\.]+)/i, // Line App for iOS
|
/safari (line)\/([\w\.]+)/i, // Line App for iOS
|
||||||
/\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
|
/\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
|
||||||
/(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram
|
/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i // Chromium/Instagram/Snapchat
|
||||||
], [NAME, VERSION], [
|
], [NAME, VERSION], [
|
||||||
/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
|
/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
|
||||||
], [VERSION, [NAME, 'GSA']], [
|
], [VERSION, [NAME, 'GSA']], [
|
||||||
|
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
|
||||||
|
], [VERSION, [NAME, 'TikTok']], [
|
||||||
|
|
||||||
/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
|
/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
|
||||||
], [VERSION, [NAME, CHROME+' Headless']], [
|
], [VERSION, [NAME, CHROME+' Headless']], [
|
||||||
@@ -329,7 +338,8 @@
|
|||||||
// Other
|
// Other
|
||||||
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
|
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
|
||||||
// Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
|
// Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
|
||||||
/(links) \(([\w\.]+)/i // Links
|
/(links) \(([\w\.]+)/i, // Links
|
||||||
|
/panasonic;(viera)/i // Panasonic Viera
|
||||||
], [NAME, VERSION], [
|
], [NAME, VERSION], [
|
||||||
|
|
||||||
/(cobalt)\/([\w\.]+)/i // Cobalt
|
/(cobalt)\/([\w\.]+)/i // Cobalt
|
||||||
@@ -372,19 +382,18 @@
|
|||||||
|
|
||||||
//////////////////////////
|
//////////////////////////
|
||||||
// MOBILES & TABLETS
|
// MOBILES & TABLETS
|
||||||
// Ordered by popularity
|
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
|
|
||||||
// Samsung
|
// Samsung
|
||||||
/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
|
/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
|
||||||
], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
|
], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
|
||||||
/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,
|
/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
|
||||||
/samsung[- ]([-\w]+)/i,
|
/samsung[- ]([-\w]+)/i,
|
||||||
/sec-(sgh\w+)/i
|
/sec-(sgh\w+)/i
|
||||||
], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// Apple
|
// Apple
|
||||||
/\((ip(?:hone|od)[\w ]*);/i // iPod/iPhone
|
/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
|
||||||
], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
|
||||||
/\((ipad);[-\w\),; ]+apple/i, // iPad
|
/\((ipad);[-\w\),; ]+apple/i, // iPad
|
||||||
/applecoremedia\/[\w\.]+ \((ipad)/i,
|
/applecoremedia\/[\w\.]+ \((ipad)/i,
|
||||||
@@ -393,6 +402,10 @@
|
|||||||
/(macintosh);/i
|
/(macintosh);/i
|
||||||
], [MODEL, [VENDOR, APPLE]], [
|
], [MODEL, [VENDOR, APPLE]], [
|
||||||
|
|
||||||
|
// Sharp
|
||||||
|
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
|
||||||
|
], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// Huawei
|
// Huawei
|
||||||
/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
|
/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
|
||||||
], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
|
], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
|
||||||
@@ -401,7 +414,7 @@
|
|||||||
], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// Xiaomi
|
// Xiaomi
|
||||||
/\b(poco[\w ]+)(?: bui|\))/i, // Xiaomi POCO
|
/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i, // Xiaomi POCO
|
||||||
/\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
|
/\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
|
||||||
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
|
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
|
||||||
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
|
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
|
||||||
@@ -470,7 +483,7 @@
|
|||||||
|
|
||||||
// Amazon
|
// Amazon
|
||||||
/(alexa)webm/i,
|
/(alexa)webm/i,
|
||||||
/(kf[a-z]{2}wi)( bui|\))/i, // Kindle Fire without Silk
|
/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, // Kindle Fire without Silk / Echo Show
|
||||||
/(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
|
/(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
|
||||||
], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
|
], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
|
||||||
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
|
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
|
||||||
@@ -496,7 +509,7 @@
|
|||||||
|
|
||||||
// ZTE
|
// ZTE
|
||||||
/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
|
/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
|
||||||
/(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
||||||
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
|
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// Acer
|
// Acer
|
||||||
@@ -508,12 +521,8 @@
|
|||||||
/\bmz-([-\w]{2,})/i
|
/\bmz-([-\w]{2,})/i
|
||||||
], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
// Sharp
|
|
||||||
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
|
|
||||||
], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
|
|
||||||
|
|
||||||
// MIXED
|
// MIXED
|
||||||
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,
|
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
|
||||||
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
||||||
/(hp) ([\w ]+\w)/i, // HP iPAQ
|
/(hp) ([\w ]+\w)/i, // HP iPAQ
|
||||||
/(asus)-?(\w+)/i, // Asus
|
/(asus)-?(\w+)/i, // Asus
|
||||||
@@ -523,6 +532,7 @@
|
|||||||
/(oppo) ?([\w ]+) bui/i // OPPO
|
/(oppo) ?([\w ]+) bui/i // OPPO
|
||||||
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
||||||
|
|
||||||
|
/(kobo)\s(ereader|touch)/i, // Kobo
|
||||||
/(archos) (gamepad2?)/i, // Archos
|
/(archos) (gamepad2?)/i, // Archos
|
||||||
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
|
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
|
||||||
/(kindle)\/([\w\.]+)/i, // Kindle
|
/(kindle)\/([\w\.]+)/i, // Kindle
|
||||||
@@ -592,6 +602,37 @@
|
|||||||
/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
|
/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
|
||||||
], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
|
], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
|
||||||
|
|
||||||
|
///////////////////
|
||||||
|
// SMARTTVS
|
||||||
|
///////////////////
|
||||||
|
|
||||||
|
/smart-tv.+(samsung)/i // Samsung
|
||||||
|
], [VENDOR, [TYPE, SMARTTV]], [
|
||||||
|
/hbbtv.+maple;(\d+)/i
|
||||||
|
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
|
||||||
|
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
|
||||||
|
], [[VENDOR, LG], [TYPE, SMARTTV]], [
|
||||||
|
/(apple) ?tv/i // Apple TV
|
||||||
|
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
|
||||||
|
/crkey/i // Google Chromecast
|
||||||
|
], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
||||||
|
/droid.+aft(\w+)( bui|\))/i // Fire TV
|
||||||
|
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
|
||||||
|
/\(dtv[\);].+(aquos)/i,
|
||||||
|
/(aquos-tv[\w ]+)\)/i // Sharp
|
||||||
|
], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
|
||||||
|
/(bravia[\w ]+)( bui|\))/i // Sony
|
||||||
|
], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
|
||||||
|
/(mitv-\w{5}) bui/i // Xiaomi
|
||||||
|
], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
|
||||||
|
/Hbbtv.*(technisat) (.*);/i // TechniSAT
|
||||||
|
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
|
||||||
|
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
|
||||||
|
/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
|
||||||
|
], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
|
||||||
|
/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
|
||||||
|
], [[TYPE, SMARTTV]], [
|
||||||
|
|
||||||
///////////////////
|
///////////////////
|
||||||
// CONSOLES
|
// CONSOLES
|
||||||
///////////////////
|
///////////////////
|
||||||
@@ -606,46 +647,19 @@
|
|||||||
/\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
|
/\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
|
||||||
], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
|
], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
|
||||||
|
|
||||||
///////////////////
|
|
||||||
// SMARTTVS
|
|
||||||
///////////////////
|
|
||||||
|
|
||||||
/smart-tv.+(samsung)/i // Samsung
|
|
||||||
], [VENDOR, [TYPE, SMARTTV]], [
|
|
||||||
/hbbtv.+maple;(\d+)/i
|
|
||||||
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
|
|
||||||
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
|
|
||||||
], [[VENDOR, LG], [TYPE, SMARTTV]], [
|
|
||||||
/(apple) ?tv/i // Apple TV
|
|
||||||
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
|
|
||||||
/crkey/i // Google Chromecast
|
|
||||||
], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
|
||||||
/droid.+aft(\w)( bui|\))/i // Fire TV
|
|
||||||
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
|
|
||||||
/\(dtv[\);].+(aquos)/i,
|
|
||||||
/(aquos-tv[\w ]+)\)/i // Sharp
|
|
||||||
], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
|
|
||||||
/(bravia[\w ]+)( bui|\))/i // Sony
|
|
||||||
], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
|
|
||||||
/(mitv-\w{5}) bui/i // Xiaomi
|
|
||||||
], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
|
|
||||||
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
|
|
||||||
/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i // HbbTV devices
|
|
||||||
], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
|
|
||||||
/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
|
|
||||||
], [[TYPE, SMARTTV]], [
|
|
||||||
|
|
||||||
///////////////////
|
///////////////////
|
||||||
// WEARABLES
|
// WEARABLES
|
||||||
///////////////////
|
///////////////////
|
||||||
|
|
||||||
/((pebble))app/i // Pebble
|
/((pebble))app/i // Pebble
|
||||||
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
|
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
|
||||||
|
/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
|
||||||
|
], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [
|
||||||
/droid.+; (glass) \d/i // Google Glass
|
/droid.+; (glass) \d/i // Google Glass
|
||||||
], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
|
], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
|
||||||
/droid.+; (wt63?0{2,3})\)/i
|
/droid.+; (wt63?0{2,3})\)/i
|
||||||
], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
|
], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
|
||||||
/(quest( 2)?)/i // Oculus Quest
|
/(quest( 2| pro)?)/i // Oculus Quest
|
||||||
], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
|
], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
|
||||||
|
|
||||||
///////////////////
|
///////////////////
|
||||||
@@ -654,6 +668,8 @@
|
|||||||
|
|
||||||
/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
|
/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
|
||||||
], [VENDOR, [TYPE, EMBEDDED]], [
|
], [VENDOR, [TYPE, EMBEDDED]], [
|
||||||
|
/(aeobc)\b/i // Echo Dot
|
||||||
|
], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
// MIXED (GENERIC)
|
// MIXED (GENERIC)
|
||||||
@@ -683,7 +699,8 @@
|
|||||||
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
|
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
|
||||||
/ekioh(flow)\/([\w\.]+)/i, // Flow
|
/ekioh(flow)\/([\w\.]+)/i, // Flow
|
||||||
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
|
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
|
||||||
/(icab)[\/ ]([23]\.[\d\.]+)/i // iCab
|
/(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
|
||||||
|
/\b(libweb)/i
|
||||||
], [NAME, VERSION], [
|
], [NAME, VERSION], [
|
||||||
|
|
||||||
/rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
|
/rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
|
||||||
@@ -704,11 +721,12 @@
|
|||||||
|
|
||||||
// iOS/macOS
|
// iOS/macOS
|
||||||
/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
|
/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
|
||||||
|
/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
|
||||||
/cfnetwork\/.+darwin/i
|
/cfnetwork\/.+darwin/i
|
||||||
], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
|
], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
|
||||||
/(mac os x) ?([\w\. ]*)/i,
|
/(mac os x) ?([\w\. ]*)/i,
|
||||||
/(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
|
/(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
|
||||||
], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [
|
], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
|
||||||
|
|
||||||
// Mobile OSes
|
// Mobile OSes
|
||||||
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
|
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
|
||||||
@@ -727,12 +745,19 @@
|
|||||||
/web0s;.+rt(tv)/i,
|
/web0s;.+rt(tv)/i,
|
||||||
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
|
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
|
||||||
], [VERSION, [NAME, 'webOS']], [
|
], [VERSION, [NAME, 'webOS']], [
|
||||||
|
/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
|
||||||
|
], [VERSION, [NAME, 'watchOS']], [
|
||||||
|
|
||||||
// Google Chromecast
|
// Google Chromecast
|
||||||
/crkey\/([\d\.]+)/i // Google Chromecast
|
/crkey\/([\d\.]+)/i // Google Chromecast
|
||||||
], [VERSION, [NAME, CHROME+'cast']], [
|
], [VERSION, [NAME, CHROME+'cast']], [
|
||||||
/(cros) [\w]+ ([\w\.]+\w)/i // Chromium OS
|
/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
|
||||||
], [[NAME, 'Chromium OS'], VERSION],[
|
], [[NAME, CHROMIUM_OS], VERSION],[
|
||||||
|
|
||||||
|
// Smart TVs
|
||||||
|
/panasonic;(viera)/i, // Panasonic Viera
|
||||||
|
/(netrange)mmh/i, // Netrange
|
||||||
|
/(nettv)\/(\d+\.[\w\.]+)/i, // NetTV
|
||||||
|
|
||||||
// Console
|
// Console
|
||||||
/(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation
|
/(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation
|
||||||
@@ -753,7 +778,7 @@
|
|||||||
], [[NAME, 'Solaris'], VERSION], [
|
], [[NAME, 'Solaris'], VERSION], [
|
||||||
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
|
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
|
||||||
/(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
|
/(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
|
||||||
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX
|
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
|
||||||
/(unix) ?([\w\.]*)/i // UNIX
|
/(unix) ?([\w\.]*)/i // UNIX
|
||||||
], [NAME, VERSION]
|
], [NAME, VERSION]
|
||||||
]
|
]
|
||||||
@@ -774,15 +799,22 @@
|
|||||||
return new UAParser(ua, extensions).getResult();
|
return new UAParser(ua, extensions).getResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;
|
||||||
|
var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);
|
||||||
|
var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;
|
||||||
var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
|
var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
|
||||||
|
var _isSelfNav = _navigator && _navigator.userAgent == _ua;
|
||||||
|
|
||||||
this.getBrowser = function () {
|
this.getBrowser = function () {
|
||||||
var _browser = {};
|
var _browser = {};
|
||||||
_browser[NAME] = undefined;
|
_browser[NAME] = undefined;
|
||||||
_browser[VERSION] = undefined;
|
_browser[VERSION] = undefined;
|
||||||
rgxMapper.call(_browser, _ua, _rgxmap.browser);
|
rgxMapper.call(_browser, _ua, _rgxmap.browser);
|
||||||
_browser.major = majorize(_browser.version);
|
_browser[MAJOR] = majorize(_browser[VERSION]);
|
||||||
|
// Brave-specific detection
|
||||||
|
if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
|
||||||
|
_browser[NAME] = 'Brave';
|
||||||
|
}
|
||||||
return _browser;
|
return _browser;
|
||||||
};
|
};
|
||||||
this.getCPU = function () {
|
this.getCPU = function () {
|
||||||
@@ -797,6 +829,14 @@
|
|||||||
_device[MODEL] = undefined;
|
_device[MODEL] = undefined;
|
||||||
_device[TYPE] = undefined;
|
_device[TYPE] = undefined;
|
||||||
rgxMapper.call(_device, _ua, _rgxmap.device);
|
rgxMapper.call(_device, _ua, _rgxmap.device);
|
||||||
|
if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
|
||||||
|
_device[TYPE] = MOBILE;
|
||||||
|
}
|
||||||
|
// iPadOS-specific detection: identified as Mac, but has some iOS-only properties
|
||||||
|
if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
|
||||||
|
_device[MODEL] = 'iPad';
|
||||||
|
_device[TYPE] = TABLET;
|
||||||
|
}
|
||||||
return _device;
|
return _device;
|
||||||
};
|
};
|
||||||
this.getEngine = function () {
|
this.getEngine = function () {
|
||||||
@@ -811,6 +851,11 @@
|
|||||||
_os[NAME] = undefined;
|
_os[NAME] = undefined;
|
||||||
_os[VERSION] = undefined;
|
_os[VERSION] = undefined;
|
||||||
rgxMapper.call(_os, _ua, _rgxmap.os);
|
rgxMapper.call(_os, _ua, _rgxmap.os);
|
||||||
|
if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {
|
||||||
|
_os[NAME] = _uach.platform
|
||||||
|
.replace(/chrome os/i, CHROMIUM_OS)
|
||||||
|
.replace(/macos/i, MAC_OS); // backward compatibility
|
||||||
|
}
|
||||||
return _os;
|
return _os;
|
||||||
};
|
};
|
||||||
this.getResult = function () {
|
this.getResult = function () {
|
||||||
|
|||||||
@@ -199,6 +199,46 @@
|
|||||||
"major" : "100"
|
"major" : "100"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Chrome 112.0 on Win10",
|
||||||
|
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Chrome",
|
||||||
|
"version" : "112.0.0.0",
|
||||||
|
"major" : "112"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Chrome 112.0 on macOS",
|
||||||
|
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Chrome",
|
||||||
|
"version" : "112.0.0.0",
|
||||||
|
"major" : "112"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Chrome 111.0 on Linux",
|
||||||
|
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Chrome",
|
||||||
|
"version" : "111.0.0.0",
|
||||||
|
"major" : "111"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Chrome 111.0 on ChromeOS",
|
||||||
|
"ua" : "Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Chrome",
|
||||||
|
"version" : "111.0.0.0",
|
||||||
|
"major" : "111"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Chrome Headless",
|
"desc" : "Chrome Headless",
|
||||||
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome Safari/537.36",
|
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome Safari/537.36",
|
||||||
@@ -1278,6 +1318,16 @@
|
|||||||
"major" : "1"
|
"major" : "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Viera",
|
||||||
|
"ua" : "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "VIERA",
|
||||||
|
"version" : "undefined",
|
||||||
|
"major" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Yandex",
|
"desc" : "Yandex",
|
||||||
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.5 (KHTML, like Gecko) YaBrowser/1.0.1084.5402 Chrome/19.0.1084.5402 Safari/536.5",
|
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.5 (KHTML, like Gecko) YaBrowser/1.0.1084.5402 Chrome/19.0.1084.5402 Safari/536.5",
|
||||||
@@ -1288,6 +1338,66 @@
|
|||||||
"major" : "1"
|
"major" : "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Yandex",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; arm_64; Android 11; M2101K7AG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.125 YaApp_Android/22.70 YaSearchBrowser/22.70 BroPP/1.0 SA/3 Mobile Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Yandex",
|
||||||
|
"version" : "22.70",
|
||||||
|
"major" : "22"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Yandex",
|
||||||
|
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 YaBrowser/23.3.0.2246 Yowser/2.5 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Yandex",
|
||||||
|
"version" : "23.3.0.2246",
|
||||||
|
"major" : "23"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Yandex on Android",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; arm_64; Android 13; SM-G965F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.76 YaBrowser/21.3.4.59 Mobile Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Yandex",
|
||||||
|
"version" : "21.3.4.59",
|
||||||
|
"major" : "21"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Yandex on iPhone",
|
||||||
|
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 16_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 YaBrowser/23.3.3.330 Mobile/15E148 Safari/604.1",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Yandex",
|
||||||
|
"version" : "23.3.3.330",
|
||||||
|
"major" : "23"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Yandex on iPad",
|
||||||
|
"ua" : "Mozilla/5.0 (iPad; CPU OS 16_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 YaBrowser/23.3.3.330 Mobile/15E148 Safari/605.1",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Yandex",
|
||||||
|
"version" : "23.3.3.330",
|
||||||
|
"major" : "23"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Yandex on iPod",
|
||||||
|
"ua" : "Mozilla/5.0 (iPod touch; CPU iPhone 16_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 YaBrowser/23.3.3.330 Mobile/15E148 Safari/605.1",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Yandex",
|
||||||
|
"version" : "23.3.3.330",
|
||||||
|
"major" : "23"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Puffin",
|
"desc" : "Puffin",
|
||||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; Lenovo P2a42 Build/MMB29M; en-us) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Puffin/6.0.8.15804AP",
|
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; Lenovo P2a42 Build/MMB29M; en-us) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Puffin/6.0.8.15804AP",
|
||||||
@@ -1388,6 +1498,16 @@
|
|||||||
"major" : "1"
|
"major" : "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Firefox on iOS",
|
||||||
|
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 16_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/112.0 Mobile/15E148 Safari/605.1.15",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Firefox",
|
||||||
|
"version" : "112.0",
|
||||||
|
"major" : "112"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Firefox iOS using iPad",
|
"desc" : "Firefox iOS using iPad",
|
||||||
"ua" : "Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4",
|
"ua" : "Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4",
|
||||||
@@ -1627,5 +1747,117 @@
|
|||||||
"version": "9.0",
|
"version": "9.0",
|
||||||
"major" : "9"
|
"major" : "9"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "KakaoTalk App Android",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 12; SM-G988N Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.79 Mobile Safari/537.36;KAKAOTALK 2409760",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "KAKAOTALK",
|
||||||
|
"version": "2409760",
|
||||||
|
"major" : "2409760"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "KakaoStory App Android",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 12; SM-G988N Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.79 Mobile Safari/537.36 KAKAOSTORY/6.8.3_21046",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "KAKAOSTORY",
|
||||||
|
"version": "6.8.3_21046",
|
||||||
|
"major" : "6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "KakaoTalk App iOS",
|
||||||
|
"ua" : "Mozilla/5.0 (iPhone; CPU; iPhone OS 15_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 BizWebView KAKAOTALK 9.7.6",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "KAKAOTALK",
|
||||||
|
"version": "9.7.6",
|
||||||
|
"major" : "9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Naver App Android",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 12; SM-G988N Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/90.0.4430.232 Whale/1.0.0.0 Crosswalk/26.90.3.21 Mobile Safari/537.36 NAVER(inapp; search; 1010; 11.11.2)",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "NAVER",
|
||||||
|
"version": "11.11.2",
|
||||||
|
"major" : "11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Naver App iOS",
|
||||||
|
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1 NAVER(inapp; search; 720; 10.25.0; 11PRO)",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "NAVER",
|
||||||
|
"version": "10.25.0",
|
||||||
|
"major" : "10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "TikTok",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 11; 21061119AG Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.131 Mobile Safari/537.36 trill_2022109040 JsSdk/1.0 NetType/MOBILE Channel/googleplay AppName/musical_ly app_version/21.9.4 ByteLocale/ru-RU ByteFullLocale/ru-RU Region/KG BytedanceWebview/d8a21c6",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "TikTok",
|
||||||
|
"version": "21.9.4",
|
||||||
|
"major" : "21"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "TikTok",
|
||||||
|
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 musical_ly_21.1.0 JsSdk/2.0 NetType/4G Channel/App Store ByteLocale/ru Region/RU ByteFullLocale/ru-RU isDarkMode/1 WKWebView/1 BytedanceWebview/d8a21c6",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "TikTok",
|
||||||
|
"version": "21.1.0",
|
||||||
|
"major" : "21"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "TikTok",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 10; STK-LX1 Build/HONORSTK-LX1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/110.0.5481.153 Mobile Safari/537.36 musical_ly_2022803040 JsSdk/1.0 NetType/WIFI Channel/huaweiadsglobal_int AppName/musical_ly app_version/28.3.4 ByteLocale/en ByteFullLocale/en Region/IQ Spark/1.2.7-alpha.8 AppVersion/28.3.4 PIA/1.5.11 BytedanceWebview/d8a21c6",
|
||||||
|
"expect" : {
|
||||||
|
"name" : "TikTok",
|
||||||
|
"version": "28.3.4",
|
||||||
|
"major" : "28"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Chrome Mobile",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 7.1.2; Nexus 5X Build/N2G47W) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Chrome",
|
||||||
|
"version" : "58.0.3029.83",
|
||||||
|
"major" : "58"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Firefox Mobile",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; Android 7.1.2; Nexus 5X Build/N2G47W) AppleWebKit/537.36 (KHTML, like Gecko) FxiOS/7.5b3349 Mobile/14F89 Safari/603.2.4",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Firefox",
|
||||||
|
"version" : "7.5b3349",
|
||||||
|
"major" : "7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Firefox Mobile",
|
||||||
|
"ua" : "Mozilla/5.0 (Android 5.0; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Firefox",
|
||||||
|
"version" : "41.0",
|
||||||
|
"major" : "41"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Snapchat",
|
||||||
|
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Snapchat/12.33.0.36 (like Safari/8614.1.25.0.31, panda)",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Snapchat",
|
||||||
|
"version" : "12.33.0.36",
|
||||||
|
"major" : "12"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -23,6 +23,46 @@
|
|||||||
"architecture" : "amd64"
|
"architecture" : "amd64"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Vivaldi on Windows",
|
||||||
|
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Vivaldi/6.0.2979.18",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"architecture" : "amd64"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Vivaldi on Windows",
|
||||||
|
"ua" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Vivaldi/6.0.2979.18",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"architecture" : "amd64"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Vivaldi on Linux",
|
||||||
|
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Vivaldi/6.0.2979.18",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"architecture" : "amd64"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Vivaldi on Linux",
|
||||||
|
"ua" : "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Vivaldi/6.0.2979.18",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"architecture" : "ia32"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi POCO M2 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; arm_64; Android 11; POCO M2 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 YaBrowser/22.11.7.42.00 SA/3 Mobile Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"architecture" : "arm64"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "win64",
|
"desc" : "win64",
|
||||||
"ua" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; .NET4.0E; .NET4.0C)",
|
"ua" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; .NET4.0E; .NET4.0C)",
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
[{
|
[
|
||||||
|
{
|
||||||
|
"desc": "K",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "K",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
"desc": "ASUS Nexus 7",
|
"desc": "ASUS Nexus 7",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -187,6 +197,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Blackview 4900Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; BV4900Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "BV4900Pro",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Desktop (IE11 with Tablet string)",
|
"desc": "Desktop (IE11 with Tablet string)",
|
||||||
"ua": "Mozilla/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; Tablet PC 2.0; GWX:MANAGED; rv:11.0) like Gecko",
|
"ua": "Mozilla/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; Tablet PC 2.0; GWX:MANAGED; rv:11.0) like Gecko",
|
||||||
@@ -422,31 +441,31 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Mate 20 X",
|
"desc": "Huawei Mate 20 X",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; EVR-L29 Build/HUAWEIEVR-L29; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; EVR-L29 Build/HUAWEIEVR-L29; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
"vendor": "Huawei",
|
"vendor": "Huawei",
|
||||||
"model": "EVR-L29",
|
"model": "EVR-L29",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Mate 20 Pro",
|
"desc": "Huawei Mate 20 Pro",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
"vendor": "Huawei",
|
"vendor": "Huawei",
|
||||||
"model": "LYA-L09",
|
"model": "LYA-L09",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Mate 20 Pro",
|
"desc": "Huawei Mate 20 Pro",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
"vendor": "Huawei",
|
"vendor": "Huawei",
|
||||||
"model": "LYA-AL00",
|
"model": "LYA-AL00",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Mate 20 Pro",
|
"desc": "Huawei Mate 20 Pro",
|
||||||
@@ -456,8 +475,8 @@
|
|||||||
"model": "LYA-AL10",
|
"model": "LYA-AL10",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Mate 20 Pro",
|
"desc": "Huawei Mate 20 Pro",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-L0C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-L0C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -465,8 +484,8 @@
|
|||||||
"model": "LYA-L0C",
|
"model": "LYA-L0C",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Mate 20 Pro",
|
"desc": "Huawei Mate 20 Pro",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -474,8 +493,8 @@
|
|||||||
"model": "LYA-L29",
|
"model": "LYA-L29",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Mate 20 Pro",
|
"desc": "Huawei Mate 20 Pro",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-TL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; LYA-TL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -484,6 +503,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Huawei Mate 50 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; DCO-LX9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Huawei",
|
||||||
|
"model": "DCO-LX9",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei P20 Lite",
|
"desc": "Huawei P20 Lite",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
|
||||||
@@ -494,13 +522,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei P20",
|
"desc": "Huawei P20",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
"vendor": "Huawei",
|
"vendor": "Huawei",
|
||||||
"model": "EML-L29",
|
"model": "EML-L29",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei P20 Pro",
|
"desc": "Huawei P20 Pro",
|
||||||
@@ -573,8 +601,8 @@
|
|||||||
"model": "YAL-L21",
|
"model": "YAL-L21",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Nova 5T",
|
"desc": "Huawei Nova 5T",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; YAL-L61) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; YAL-L61) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -582,8 +610,8 @@
|
|||||||
"model": "YAL-L61",
|
"model": "YAL-L61",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Nova 5T",
|
"desc": "Huawei Nova 5T",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; YAL-L71) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; YAL-L71) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -591,8 +619,8 @@
|
|||||||
"model": "YAL-L71",
|
"model": "YAL-L71",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Nova 5T",
|
"desc": "Huawei Nova 5T",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; YAL-L61D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; YAL-L61D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -600,8 +628,8 @@
|
|||||||
"model": "YAL-L61D",
|
"model": "YAL-L61D",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Nova 5T",
|
"desc": "Huawei Nova 5T",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; YALE-L61A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; YALE-L61A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -609,8 +637,8 @@
|
|||||||
"model": "YALE-L61A",
|
"model": "YALE-L61A",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Nova 5T",
|
"desc": "Huawei Nova 5T",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; YALE-L61D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; YALE-L61D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -618,8 +646,8 @@
|
|||||||
"model": "YALE-L61D",
|
"model": "YALE-L61D",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Huawei Nova 5T",
|
"desc": "Huawei Nova 5T",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; YALE-L71A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; YALE-L71A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -754,6 +782,51 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Infinix Hot 7 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 9; Infinix X625C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Infinix",
|
||||||
|
"model": "X625C",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Infinix Hot 10T",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; Infinix X689C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Infinix",
|
||||||
|
"model": "X689C",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Infinix Hot 11s",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; Infinix X6812 Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/111.0.5563.116 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Infinix",
|
||||||
|
"model": "X6812",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Infinix Smart 5",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; Infinix X657C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Infinix",
|
||||||
|
"model": "X657C",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Infinix Zero 5G",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; Infinix X6815B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Infinix",
|
||||||
|
"model": "X6815B",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Apple Desktop",
|
"desc": "Apple Desktop",
|
||||||
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
|
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
|
||||||
@@ -763,6 +836,15 @@
|
|||||||
"type": "undefined"
|
"type": "undefined"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Apple Watch",
|
||||||
|
"ua": "atc/1.0 watchOS/7.3.3 model/Watch4,2 hwp/t8006 build/18S830 (6; dt:191)",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Apple",
|
||||||
|
"model": "watch",
|
||||||
|
"type": "wearable"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "iPad using UCBrowser",
|
"desc": "iPad using UCBrowser",
|
||||||
"ua": "Mozilla/5.0 (iPad; U; CPU OS 11_2 like Mac OS X; zh-CN; iPad5,3) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/3.0.1.776 U3/ Mobile/10A403 Safari/7543.48.3",
|
"ua": "Mozilla/5.0 (iPad; U; CPU OS 11_2 like Mac OS X; zh-CN; iPad5,3) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/3.0.1.776 U3/ Mobile/10A403 Safari/7543.48.3",
|
||||||
@@ -799,6 +881,42 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "JVC LT-43V55LFA Smart TV",
|
||||||
|
"ua": "Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 OPR/40.0.2207.0 OMI/4.9.0.237.DOM3-OPT.245 Model/Vestel-MB211 VSTVB MB200 HbbTV/1.2.1 (; JVC; MB211; 3.19.4.2; _TV_NT72563_2017 SmartTvA/3.0.0",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "JVC",
|
||||||
|
"model": "MB211",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "JVC LT-43V65LUA Smart TV",
|
||||||
|
"ua": "Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 OPR/40.0.2207.0 OMI/4.9.0.237.DOM3-OPT.245 Model/Vestel-MB130 VSTVB MB100 HbbTV/1.2.1 (; JVC; MB130; 5.7.20.0; _TV_G10_2017;) SmartTvA/3.0.0",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "JVC",
|
||||||
|
"model": "MB130",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Kobo eReader",
|
||||||
|
"ua": "Mozilla/5.0 (Unknown; Linux) AppleWebKit/538.1 (KHTML, like Gecko) Kobo eReader Safari/538.1",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Kobo",
|
||||||
|
"model": "eReader",
|
||||||
|
"type": "tablet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Kobo Touch",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/538.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/538.1 (Kobo Touch 0377/4.20.14622)",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Kobo",
|
||||||
|
"model": "Touch",
|
||||||
|
"type": "tablet"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Lenovo Tab 2",
|
"desc": "Lenovo Tab 2",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 5.0.1; Lenovo TAB 2 A7-30HC Build/LRX21M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 5.0.1; Lenovo TAB 2 A7-30HC Build/LRX21M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Safari/537.36",
|
||||||
@@ -808,7 +926,7 @@
|
|||||||
"type": "tablet"
|
"type": "tablet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "Lenovo Phone",
|
"desc": "Lenovo Phone",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 6.0; Lenovo PB2-650M Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.105 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/311.0.0.44.117;]",
|
"ua": "Mozilla/5.0 (Linux; Android 6.0; Lenovo PB2-650M Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.105 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/311.0.0.44.117;]",
|
||||||
"expect": {
|
"expect": {
|
||||||
@@ -889,6 +1007,24 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "LG K40",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; LM-X420) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.57 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "LG",
|
||||||
|
"model": "LM-X420",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "LG Stylo 4",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; LM-Q710(FGN)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.57 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "LM-Q710(FGN)",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "LG Stylo 5",
|
"desc": "LG Stylo 5",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; LM-Q720) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; LM-Q720) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
|
||||||
@@ -907,6 +1043,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "LG K20",
|
||||||
|
"ua": "Mozilla/5.0 (Android 13; Mobile; LG-M255; rv:111.0) Gecko/111.0 Firefox/111.0",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "LG",
|
||||||
|
"model": "M255",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "LG K500",
|
"desc": "LG K500",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 6.0.1; LG-K500 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 6.0.1; LG-K500 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
|
||||||
@@ -979,6 +1124,15 @@
|
|||||||
"type": "smarttv"
|
"type": "smarttv"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Loewe Smart TV",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 OPR/46.0.2207.0 LOEWE-SL410/5.2.0.0 HbbTV/1.4.1 (; LOEWE; SL410; LOH/5.2.0.0;;) FVC/3.0 (LOEWE; SL410;) CE-HTML/1.0 Config (L:deu,CC:DEU) NETRANGEMMH",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "LOEWE",
|
||||||
|
"model": "SL410",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Meizu M5 Note",
|
"desc": "Meizu M5 Note",
|
||||||
"ua": "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/043024 Safari/537.36 MicroMessenger/6.5.7.1040 NetType/WIFI Language/zh_CN",
|
"ua": "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/043024 Safari/537.36 MicroMessenger/6.5.7.1040 NetType/WIFI Language/zh_CN",
|
||||||
@@ -1016,23 +1170,30 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Meizu M3S",
|
"desc": "Motorola Moto Z3 Play",
|
||||||
"ua" : "Mozilla/5.0 (X11; Linux; Android 5.1; MZ-M3s Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrom/45.0.2454.94 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; Moto Z3 Play) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
"expect" :
|
"expect": {
|
||||||
{
|
"vendor": "Motorola",
|
||||||
"vendor" : "Meizu",
|
"model": "Moto Z3 Play",
|
||||||
"model" : "M3s",
|
"type": "mobile"
|
||||||
"type" : "mobile"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Microsoft Lumia 950",
|
"desc": "Meizu M3S",
|
||||||
"ua" : "Mozilla/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/13.10586",
|
"ua": "Mozilla/5.0 (X11; Linux; Android 5.1; MZ-M3s Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrom/45.0.2454.94 Mobile Safari/537.36",
|
||||||
"expect" :
|
"expect": {
|
||||||
{
|
"vendor": "Meizu",
|
||||||
"vendor" : "Microsoft",
|
"model": "M3s",
|
||||||
"model" : "Lumia 950",
|
"type": "mobile"
|
||||||
"type" : "mobile"
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Microsoft Lumia 950",
|
||||||
|
"ua": "Mozilla/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/13.10586",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Microsoft",
|
||||||
|
"model": "Lumia 950",
|
||||||
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1170,6 +1331,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Nokia 7",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; Nokia 7.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Nokia",
|
||||||
|
"model": "7.2",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Nokia N9",
|
"desc": "Nokia N9",
|
||||||
"ua": "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
|
"ua": "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
|
||||||
@@ -1206,6 +1376,15 @@
|
|||||||
"type": "wearable"
|
"type": "wearable"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Oculus Quest Pro",
|
||||||
|
"ua": "Mozilla/5.0 (X11; Linux x86_64; Quest Pro) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/24.4.0.22.60.426469926 SamsungBrowser/4.0 Chrome/106.0.5249.181 VR Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Facebook",
|
||||||
|
"model": "Quest Pro",
|
||||||
|
"type": "wearable"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "OnePlus One",
|
"desc": "OnePlus One",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 4.4.4; A0001 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 4.4.4; A0001 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36",
|
||||||
@@ -1260,6 +1439,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "OnePlus 7T Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.57 Mobile Safari/537.36 EdgA/110.0.1587.66",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "HD1913",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "OnePlus 8T",
|
"desc": "OnePlus 8T",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 11; KB2005) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 11; KB2005) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36",
|
||||||
@@ -1278,6 +1466,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "OnePlus 10RT",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 13; CPH2413) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "OPPO",
|
||||||
|
"model": "CPH2413",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "OnePlus Nord N100",
|
"desc": "OnePlus Nord N100",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; BE2015 Build/QKQ1.200719.002; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; BE2015 Build/QKQ1.200719.002; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36",
|
||||||
@@ -1440,6 +1637,78 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Realme 3 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; RMX1851) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Realme",
|
||||||
|
"model": "RMX1851",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Realme 9 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 13; RMX3471) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "RMX3471",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Realme GT Master",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 13; RMX3363) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "RMX3363",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Panasonic T31",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 4.2.2; Panasonic T31 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.170 Mobile Safari/537.36 ",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Panasonic",
|
||||||
|
"model": "T31",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Panasonic TX-32CSW514 SmartTV",
|
||||||
|
"ua": "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Panasonic",
|
||||||
|
"model": "VIERA 2015",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Panasonic TX-40FXW724 SmartTV",
|
||||||
|
"ua": "HbbTV/1.4.1 (+DRM;Panasonic;SmartTV2018mid;3.024;4301-0003 0002-0000;SmartTV2018;)",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Panasonic",
|
||||||
|
"model": "SmartTV2018mid",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Panasonic TX-43HXW904 SmartTV",
|
||||||
|
"ua": "HbbTV/1.5.1 (+DRM;Panasonic;SmartTV2020mid;3.326;4301-0003 0008-0000;com.panasonic.SmartTV2020mid;)",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Panasonic",
|
||||||
|
"model": "SmartTV2020mid",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Panasonic DMR-HST130 SAT receiver",
|
||||||
|
"ua": "HbbTV/1.1.1 (+PVR;Panasonic;DIGA WebKit M8658;3.420;;)",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Panasonic",
|
||||||
|
"model": "DIGA WebKit M8658",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Philips SmartTV",
|
"desc": "Philips SmartTV",
|
||||||
"ua": "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60",
|
"ua": "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60",
|
||||||
@@ -1449,6 +1718,33 @@
|
|||||||
"type": "smarttv"
|
"type": "smarttv"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Philips 32PFL6606K/02 SmartTV (2011)",
|
||||||
|
"ua": "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.6.33 Version/10.70",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Philips",
|
||||||
|
"model": "",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Philips 32PFL6606K/02 SmartTV (2013)",
|
||||||
|
"ua": "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.6.33 Version/10.70",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Philips",
|
||||||
|
"model": "",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Philips 32PHS5301/12 SmartTV (2016)",
|
||||||
|
"ua": "Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36 OPR/29.0.1803.0 OMI/4.5.23.37.MOT2.13 HbbTV/1.2.1 (;Philips;32PHS5301/12;;_TV_MT5800;) Firmware/TPM161E_012.002.045.001 en",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Philips",
|
||||||
|
"model": "32PHS5301/12",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Roku",
|
"desc": "Roku",
|
||||||
"ua": "Mozilla/5.0 (Roku) AppleWebKit/537.36 (KHTML, like Gecko) Web/1.1 Safari/537.36",
|
"ua": "Mozilla/5.0 (Roku) AppleWebKit/537.36 (KHTML, like Gecko) Web/1.1 Safari/537.36",
|
||||||
@@ -1503,6 +1799,33 @@
|
|||||||
"type": "tablet"
|
"type": "tablet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Echo Show 5",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 5.1; AEORK Build/LVY48F; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Amazon",
|
||||||
|
"model": "AEORK",
|
||||||
|
"type": "tablet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Echo Show 8",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 7.1; AEOCH) AppleWebKit/537.36 (KHTML, like Gecko) Silk/77.2.21 like Chrome/77.0.3865.92 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Amazon",
|
||||||
|
"model": "AEOCH",
|
||||||
|
"type": "tablet"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Echo Dot",
|
||||||
|
"ua": "Dalvik/2.1.0 (Linux; U; Android 5.1.1; AEOBC Build/LVY48F)",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Amazon",
|
||||||
|
"model": "AEOBC",
|
||||||
|
"type": "embedded"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Samsung Galaxy A21s",
|
"desc": "Samsung Galaxy A21s",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.0 Chrome/75.0.3770.143 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.0 Chrome/75.0.3770.143 Mobile Safari/537.36",
|
||||||
@@ -1530,6 +1853,24 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Samsung Galaxy A50s",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; SM-A507FN) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Samsung",
|
||||||
|
"model": "SM-A507FN",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Samsung Galaxy A52s",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 13; SM-A528B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Samsung",
|
||||||
|
"model": "SM-A528B",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Samsung Galaxy A80",
|
"desc": "Samsung Galaxy A80",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.112 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.112 Mobile Safari/537.36",
|
||||||
@@ -1575,6 +1916,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Samsung Galaxy S20 5G",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; SCG01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Samsung",
|
||||||
|
"model": "SCG01",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Samsung Galaxy Note 10+",
|
"desc": "Samsung Galaxy Note 10+",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; SM-N976V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; SM-N976V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
|
||||||
@@ -1593,6 +1943,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Samsung C8",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 7.1.1; SM-C7108) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Samsung",
|
||||||
|
"model": "SM-C7108",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Samsung Galaxy Note 8",
|
"desc": "Samsung Galaxy Note 8",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 4.2.2; GT-N5100 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 4.2.2; GT-N5100 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36",
|
||||||
@@ -1678,9 +2037,9 @@
|
|||||||
"desc": "Samsung Note 10.1",
|
"desc": "Samsung Note 10.1",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 5.1.1; SM-P605) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 5.1.1; SM-P605) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
|
||||||
"expect": {
|
"expect": {
|
||||||
"vendor": "Samsung",
|
"vendor": "Samsung",
|
||||||
"model": "SM-P605",
|
"model": "SM-P605",
|
||||||
"type": "tablet"
|
"type": "tablet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1728,6 +2087,15 @@
|
|||||||
"type": "smarttv"
|
"type": "smarttv"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Samsung SmartTV HBBTV",
|
||||||
|
"ua": "HbbTV/1.5.1 (+DRM;Samsung;SmartTV2021:UAU7000;T-KSU2EDEUC-1506.0;KantSU2e;urn:samsungtv:familyname:21_KANTSU2E_UHD_BASIC:2021;) Tizen/6.0 (+TVPLUS+SmartHubLink) Chrome/76 LaTivu_1.0.1_2021 RVID/17",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Samsung",
|
||||||
|
"model": "SmartTV2021:UAU7000",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Sharp AQUOS-TVX19B",
|
"desc": "Sharp AQUOS-TVX19B",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 9; AQUOS-TVX19B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 9; AQUOS-TVX19B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Mobile Safari/537.36",
|
||||||
@@ -1755,6 +2123,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Sharp Aquos L2",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 7.0; SH-L02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Sharp",
|
||||||
|
"model": "SH-L02",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Sharp Aquos R2",
|
"desc": "Sharp Aquos R2",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 8.0; SHV42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 8.0; SHV42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36",
|
||||||
@@ -1773,6 +2150,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Sony G8141 (Xperia XZ1)",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 9; SO-01K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Sony",
|
||||||
|
"model": "SO-01K",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Sony G8141 (Xperia XZ Premium)",
|
"desc": "Sony G8141 (Xperia XZ Premium)",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 8.0.0; G8141) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 8.0.0; G8141) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
|
||||||
@@ -1936,25 +2322,50 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Tesla",
|
"desc": "Tecno KC8",
|
||||||
"ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Tesla QtCarBrowser Safari/601.1",
|
"ua": "Mozilla/5.0 (Linux; Android 10; TECNO KC8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
"expect" :
|
"expect": {
|
||||||
{
|
"vendor": "TECNO",
|
||||||
|
"model": "KC8",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Tesla",
|
||||||
|
"ua": "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Tesla QtCarBrowser Safari/601.1",
|
||||||
|
"expect": {
|
||||||
"vendor": "Tesla",
|
"vendor": "Tesla",
|
||||||
"model": "undefined",
|
"model": "undefined",
|
||||||
"type": "embedded"
|
"type": "embedded"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Tesla",
|
"desc": "Tesla",
|
||||||
"ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/79.0.3945.130 Chrome/79.0.3945.130 Safari/537.36 Tesla/2020.16.2.1-e99c70fff409",
|
"ua": "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/79.0.3945.130 Chrome/79.0.3945.130 Safari/537.36 Tesla/2020.16.2.1-e99c70fff409",
|
||||||
"expect" :
|
"expect": {
|
||||||
{
|
|
||||||
"vendor": "Tesla",
|
"vendor": "Tesla",
|
||||||
"model": "undefined",
|
"model": "undefined",
|
||||||
"type": "embedded"
|
"type": "embedded"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "TechniSAT Digit ISIO S SAT receiver",
|
||||||
|
"ua": "Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat Digit ISIO S; de) Presto/2.9.167 Version/11.50",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "TechniSat",
|
||||||
|
"model": "Digit ISIO S",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "TechniSAT MultyVision SmartTV",
|
||||||
|
"ua": "Opera/9.80 (Linux i686; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat MultyVision ISIO; de) Presto/2.9.167 Version/11.50",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "TechniSat",
|
||||||
|
"model": "MultyVision ISIO",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Xiaomi 2013023",
|
"desc": "Xiaomi 2013023",
|
||||||
"ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; en-US; 2013023 Build/HM2013023) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/10.0.1.512 U3/0.8.0 Mobile Safari/533.1",
|
"ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; en-US; 2013023 Build/HM2013023) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/10.0.1.512 U3/0.8.0 Mobile Safari/533.1",
|
||||||
@@ -2117,6 +2528,51 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi POCO X3 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; M2102J20SI) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "M2102J20SI",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi POCO X3 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; M2102J20SG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "M2102J20SG",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi POCO X3 NFC",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; M2007J20CG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "M2007J20CG",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi POCO M2 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; arm_64; Android 11; POCO M2 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 YaBrowser/22.11.7.42.00 SA/3 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "POCO M2 Pro",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi POCO M3",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; M2010J19CI) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "M2010J19CI",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Xiaomi Redmi 4A",
|
"desc": "Xiaomi Redmi 4A",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 6.0; Redmi 4A Build/MMB29M; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 6.0; Redmi 4A Build/MMB29M; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
|
||||||
@@ -2126,6 +2582,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Xiaomi Redmi 10C",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; 220333QAG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "220333QAG",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Xiaomi Redmi K30 5G",
|
"desc": "Xiaomi Redmi K30 5G",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; Redmi K30 5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; Redmi K30 5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
|
||||||
@@ -2162,6 +2627,51 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "XiaoMi Redmi Note 9S",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; Redmi Note 9S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "Redmi Note 9S",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "XiaoMi Redmi Note 10 5G",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; M2103K19C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "M2103K19C",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "XiaoMi Redmi Note 10 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 13; M2101K6P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "M2101K6P",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "XiaoMi Redmi Note 10 Pro",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 12; M2101K6G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "undefined",
|
||||||
|
"model": "M2101K6G",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "XiaoMi Redmi Note 8",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 10; Redmi Note 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Xiaomi",
|
||||||
|
"model": "Redmi Note 8",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "PlayStation 4",
|
"desc": "PlayStation 4",
|
||||||
"ua": "Mozilla/5.0 (PlayStation 4 3.00) AppleWebKit/537.73 (KHTML, like Gecko)",
|
"ua": "Mozilla/5.0 (PlayStation 4 3.00) AppleWebKit/537.73 (KHTML, like Gecko)",
|
||||||
@@ -2261,6 +2771,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Samsung Galaxy J7 Prime",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 8.1.0; SM-G610F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Samsung",
|
||||||
|
"model": "SM-G610F",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Samsung Galaxy S6",
|
"desc": "Samsung Galaxy S6",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-G920I Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-G920I Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
|
||||||
@@ -2860,6 +3379,15 @@
|
|||||||
"type": "smarttv"
|
"type": "smarttv"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Amazon Fire TV",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 9; AFTKA Build/PS7633.3445N; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/108.0.5359.160 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Amazon",
|
||||||
|
"model": "KA",
|
||||||
|
"type": "smarttv"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Android TV",
|
"desc": "Android TV",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 10; 2020/2021 UHD Android TV Build/QTG3.201102.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36",
|
"ua": "Mozilla/5.0 (Linux; Android 10; 2020/2021 UHD Android TV Build/QTG3.201102.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36",
|
||||||
@@ -2927,6 +3455,17 @@
|
|||||||
"desc": "FaceBook Mobile App",
|
"desc": "FaceBook Mobile App",
|
||||||
"ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
|
"ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
|
||||||
"expect": {
|
"expect": {
|
||||||
|
"vendor": "Apple",
|
||||||
|
"model": "iPhone12,1",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "Issue #519",
|
||||||
|
"ua": "ios/iPhone/14.2/SOME_CUSTOM_APP_VERSION",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Apple",
|
||||||
|
"model": "iPhone",
|
||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -3029,6 +3568,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Vivo Y93",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 8.1.0; vivo 1814) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Vivo",
|
||||||
|
"model": "1814",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Vivo Y97",
|
"desc": "Vivo Y97",
|
||||||
"ua": "Mozilla/5.0 (Linux; Android 8.1.0; V1813T Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
|
"ua": "Mozilla/5.0 (Linux; Android 8.1.0; V1813T Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
|
||||||
@@ -3047,6 +3595,15 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "Vivo 1906 (Y11)",
|
||||||
|
"ua": "Mozilla/5.0 (Linux; Android 11; vivo 1906) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",
|
||||||
|
"expect": {
|
||||||
|
"vendor": "Vivo",
|
||||||
|
"model": "1906",
|
||||||
|
"type": "mobile"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc": "Unknown Mobile using Firefox",
|
"desc": "Unknown Mobile using Firefox",
|
||||||
"ua": "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0",
|
"ua": "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0",
|
||||||
@@ -3128,4 +3685,4 @@
|
|||||||
"type": "mobile"
|
"type": "mobile"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -53,6 +53,15 @@
|
|||||||
"version" : "4.5.4"
|
"version" : "4.5.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "LibWeb",
|
||||||
|
"ua" : "Mozilla/4.0 (SerenityOS; x86) LibWeb+LibJS (Not KHTML, nor Gecko) LibWeb",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "LibWeb",
|
||||||
|
"version" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "NetFront",
|
"desc" : "NetFront",
|
||||||
"ua" : "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0",
|
"ua" : "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0",
|
||||||
|
|||||||
@@ -197,6 +197,15 @@
|
|||||||
"version" : "2.3"
|
"version" : "2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Tizen 6.0",
|
||||||
|
"ua" : "HbbTV/1.5.1 (+DRM;Samsung;SmartTV2021:UAU7000;T-KSU2EDEUC-1506.0;KantSU2e;urn:samsungtv:familyname:21_KANTSU2E_UHD_BASIC:2021;) Tizen/6.0 (+TVPLUS+SmartHubLink) Chrome/76 LaTivu_1.0.1_2021 RVID/17",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Tizen",
|
||||||
|
"version" : "6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Android",
|
"desc" : "Android",
|
||||||
"ua" : "Mozilla/5.0 (Linux; U; Android 2.2.2; en-us; VM670 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko)",
|
"ua" : "Mozilla/5.0 (Linux; U; Android 2.2.2; en-us; VM670 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko)",
|
||||||
@@ -656,6 +665,15 @@
|
|||||||
"version" : "1.9.2.22-0.1mdv2010.2"
|
"version" : "1.9.2.22-0.1mdv2010.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Chrome OS",
|
||||||
|
"ua" : "Mozilla/5.0 (X11; CrOS x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.0.0 Safari/537.36",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "Chromium OS",
|
||||||
|
"version" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Chromium OS",
|
"desc" : "Chromium OS",
|
||||||
"ua" : "Mozilla/5.0 (X11; CrOS x86_64 10575.58.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
|
"ua" : "Mozilla/5.0 (X11; CrOS x86_64 10575.58.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
|
||||||
@@ -746,6 +764,51 @@
|
|||||||
"version" : "undefined"
|
"version" : "undefined"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc": "iOS with FaceBook Mobile App",
|
||||||
|
"ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
|
||||||
|
"expect":
|
||||||
|
{
|
||||||
|
"name" : "iOS",
|
||||||
|
"version" : "13.6.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc": "iOS with Slack App",
|
||||||
|
"ua": "com.tinyspeck.chatlyio/23.04.10 (iPhone; iOS 16.4.1; Scale/3.00)",
|
||||||
|
"expect":
|
||||||
|
{
|
||||||
|
"name" : "iOS",
|
||||||
|
"version" : "16.4.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "watchOS",
|
||||||
|
"ua" : "server-bag [Watch OS,8.4,19S546,Watch3,4]",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "watchOS",
|
||||||
|
"version" : "8.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "watchOS",
|
||||||
|
"ua" : "atc/1.0 watchOS/7.4.1 model/Watch3,3 hwp/t8004 build/18T201 (6; dt:155)",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "watchOS",
|
||||||
|
"version" : "7.4.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "watchOS",
|
||||||
|
"ua" : "Watch4,3/5.3.8 (16U680)",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "watchOS",
|
||||||
|
"version" : "5.3.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "Mac OS on PowerPC",
|
"desc" : "Mac OS on PowerPC",
|
||||||
"ua" : "Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)",
|
"ua" : "Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)",
|
||||||
@@ -1043,6 +1106,33 @@
|
|||||||
"version" : "undefined"
|
"version" : "undefined"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Panasonic Viera",
|
||||||
|
"ua" : "HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.014;a001-003 4000-0000;)",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "VIERA",
|
||||||
|
"version" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "Netrange Smart TV",
|
||||||
|
"ua" : "Mozilla/5.0 (Linux; U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 OPR/46.0.2207.0 LOEWE-SL410/5.2.0.0 HbbTV/1.4.1 (; LOEWE; SL410; LOH/5.2.0.0;;) FVC/3.0 (LOEWE; SL410;) CE-HTML/1.0 Config (L:deu,CC:DEU) NETRANGEMMH",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "NETRANGE",
|
||||||
|
"version" : "undefined"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "NetTV 3.2.1",
|
||||||
|
"ua" : "Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.1; en) Presto/2.6.33 Version/10.70",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "NETTV",
|
||||||
|
"version" : "3.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"desc" : "HP-UX",
|
"desc" : "HP-UX",
|
||||||
"ua" : "Mozilla/5.0 (X11; U; HP-UX 9000/785; es-ES; rv:1.0.1) Gecko/20020827 Netscape/7.0",
|
"ua" : "Mozilla/5.0 (X11; U; HP-UX 9000/785; es-ES; rv:1.0.1) Gecko/20020827 Netscape/7.0",
|
||||||
@@ -1123,5 +1213,14 @@
|
|||||||
"name" : "Linspire",
|
"name" : "Linspire",
|
||||||
"version" : "1.5.0.4"
|
"version" : "1.5.0.4"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "SerenityOS",
|
||||||
|
"ua" : "Mozilla/4.0 (SerenityOS; x86) LibWeb+LibJS (Not KHTML, nor Gecko) LibWeb",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "SerenityOS",
|
||||||
|
"version" : "undefined"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user