Compare commits

...

82 Commits

Author SHA1 Message Date
Faisal Salman
f5a421cfa5 Bump v1.0.40 (mirror of v0.7.40) 2024-12-21 14:22:22 +07:00
Faisal Salman
5c811b8006 Bump version 0.7.40 2024-12-21 14:17:00 +07:00
Faisal Salman
88fa66dc04 Backport - Fix #747: Python Request mistakenly identified as Meta Quest
(cherry picked from commit 391b8087fb)
2024-12-21 13:27:26 +07:00
Faisal Salman
1665684d4f Backport - Add new device vendors: Advan, IMO, Smartfren
(cherry picked from commit 84c4613145)
2024-12-21 13:24:28 +07:00
Faisal Salman
a10add1fa1 Backport - Add new device vendors: Cat, Energizer, Micromax
- https://www.catphones.com
- https://www.energizeyourdevice.com
- https://micromaxinfo.com/

(cherry picked from commit 6b8920c700)
2024-12-21 13:21:41 +07:00
Faisal Salman
bb7558f2d7 Backport - Add new browser engine: Servo
(cherry picked from commit 49151e478c)
2024-12-21 13:19:45 +07:00
Faisal Salman
ee77fcbf14 Backport - Added support for honor separated from Huawei (#749)
* Added support for honor separated from Huawei

* Revert "Added support for honor separated from Huawei"

This reverts commit 28bde1c0b4.

* Added changes wrt comments

* Added another change

(cherry picked from commit be2f167f90)
2024-12-21 13:17:45 +07:00
Faisal Salman
92da592908 Backport - Add new browser: LibreWolf
https://librewolf.net/

(cherry picked from commit 2223a2b2d4)
2024-12-21 13:07:26 +07:00
Faisal Salman
dcca2eb0d4 Backport - Improve browser detection: Maxthon
(cherry picked from commit 246c038895)
2024-12-21 13:06:53 +07:00
Faisal Salman
d9c68a775d Backport - Add new browser: 115 Browser
http://pc.115.com/

(cherry picked from commit 2dc1be1a50)
2024-12-21 13:06:23 +07:00
Faisal Salman
e32cf13942 Backport - Improve browser detection: 2345 & 360
(cherry picked from commit 2624a92b39)
2024-12-21 13:05:57 +07:00
Faisal Salman
3095020b29 Backport - Improve browser detection: Comodo Dragon, or simply Dragon
(cherry picked from commit d571859b2e)
2024-12-21 13:04:44 +07:00
Faisal Salman
c8653c283d Backport - Add new browsers: Slimjet & SlimBoat
https://www.slimjet.com/

(cherry picked from commit b7c2f541d9)
2024-12-21 13:03:58 +07:00
Faisal Salman
2842b92551 Backport - Improve browser detection: SRWare Iron
(cherry picked from commit 10b81836f1)
2024-12-21 13:03:22 +07:00
Faisal Salman
66447880ba Backport - Fix #754: Add new Engine: ArkWeb & new OS: OpenHarmony
(cherry picked from commit fe15f115f9)
2024-12-21 13:01:36 +07:00
Faisal Salman
8b1db6bcfd Add GitHub Actions: auto publish to npm 2024-09-11 20:48:46 +07:00
Faisal Salman
ab77baf6de Bump version 1.0.39 (mirror of 0.7.39) 2024-09-11 20:29:17 +07:00
Faisal Salman
2ad60d4d8e Bump version 0.7.39 2024-09-11 20:26:07 +07:00
Faisal Salman
c25e22fa87 Backport - Fix #743 - Improve device detection for Xiaomi
(cherry picked from commit b9f1bf6223)
2024-09-10 20:32:01 +07:00
Faisal Salman
a9315821da Backport - Add new device vendor: itel
(cherry picked from commit 491c2d7477)
2024-09-10 20:31:45 +07:00
Faisal Salman
33eb27d205 Backport - Improve detection: Amazon Echo Show devices
(cherry picked from commit b8d823dd57)
2024-09-10 20:31:14 +07:00
Faisal Salman
a77184ffa9 Backport - Improve detection: recognize Samsung Galaxy Watch devices as wearable
(cherry picked from commit ccc554232b)
2024-09-10 20:30:53 +07:00
Faisal Salman
b6a92c685e Backport - Add new device vendor: TCL
(cherry picked from commit ac3a3c33dc)
2024-09-10 20:29:46 +07:00
Faisal Salman
4303c32d84 Backport - Add new vendor: Nothing
(cherry picked from commit 9065949451)
2024-09-10 20:29:07 +07:00
Faisal Salman
bef7c777a7 Backport - Improve browser detection for Quark (#737)
(cherry picked from commit 15391d2b8d)
2024-09-10 20:28:29 +07:00
Faisal Salman
06e3c8de6a Backport - Add new browser: Helio
(cherry picked from commit 654285cf9c)
2024-09-10 20:27:21 +07:00
Faisal Salman
241eb47f74 Backport - Add new browsers: Wolvic & Pico Browser
(cherry picked from commit f7810dbfcf)
2024-09-10 20:25:52 +07:00
Faisal Salman
ab97f70094 Backport - Improve browser detection for QQBrowser
(cherry picked from commit 1a2ef00509)
2024-09-10 20:24:43 +07:00
Faisal Salman
30f4444e40 Backport - Improve browser detection for Rekonq
(cherry picked from commit 12c2c2e48a)
2024-09-10 20:23:32 +07:00
Faisal Salman
0e470d215a Backport - Improve browser detection for ICEBrowser
(cherry picked from commit 85bf7076d3)
2024-09-10 20:23:00 +07:00
Faisal Salman
4322c49c55 Backport - Remove Viera from list of browsers
(cherry picked from commit 1fa3d02594)
2024-09-10 20:22:07 +07:00
Faisal Salman
44ef80620c Backport - Improve browser detection for Klar
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox#klar_for_android
(cherry picked from commit 4cd867a36e)
2024-09-10 20:20:33 +07:00
Faisal Salman
15019ec272 Backport - Improve browser detection for Sleipnir
(cherry picked from commit 6b6fcc68f5)
2024-09-10 20:19:11 +07:00
Faisal Salman
05434bfcaf Backport - Update test for some missing browsers:
Blazer, Comodo Dragon, Conkeror, Go Browser, Iron, Jasmine, Links, NetSurf, OviBrowser, Quark, Rekonq, w3m

(cherry picked from commit 760e85bbe7)
2024-09-10 20:17:08 +07:00
Faisal Salman
dfa62b6e7a Backport - Add new feature: parse user-agent in CLI using npx ua-parser-js "[INSERT-UA-HERE]" and print the result in JSON format
(cherry picked from commit 150d3c6b4a)
2024-09-10 20:16:00 +07:00
Faisal Salman
693a83de2e Bump version 1.0.38 (mirror of 0.7.38) 2024-05-28 21:11:21 +07:00
Faisal Salman
cede70136b Bump version 0.7.38 2024-05-28 20:55:58 +07:00
Faisal Salman
3bfd164aa5 Fix #700 - Error on getOS() when userAgentData.platform is undefined 2024-05-28 20:44:52 +07:00
Faisal Salman
e7bfc4e28d Backport - Fix #730 - Improve browser detection: DuckDuckGo
(cherry picked from commit e87c794fd9)
2024-05-28 20:35:18 +07:00
Faisal Salman
775de4ea82 Backport - Fix #722 - Add new browser name: Twitter
(cherry picked from commit d0db40c290)
2024-05-28 20:32:21 +07:00
Faisal Salman
fecff02888 Backport - Fix #721 - Improve detection: recognize OPPO Pad as tablet
(cherry picked from commit 8dce4cc514)
2024-05-28 20:31:25 +07:00
Faisal Salman
d3d83fac23 Backport - Fix #708 - Improve detection for Quest 3
(cherry picked from commit b29a9a7ffb)
2024-05-28 20:30:36 +07:00
Faisal Salman
5790c0e6a0 Backport - Fix #697 - Add new browser: Opera GX - https://www.opera.com/gx
(cherry picked from commit 0c49d75074)
2024-05-28 20:29:46 +07:00
Faisal Salman
8087a1b4f0 Bump version 1.0.37 (mirror of 0.7.37) 2023-10-27 19:49:46 +07:00
Faisal Salman
d30ad46992 Bump version 0.7.37 2023-10-27 09:58:43 +07:00
Faisal Salman
5302e2df6a Update changelog 2023-10-27 09:55:33 +07:00
Faisal Salman
f3de7b7cea Backport - Improve browser detection: WeChat (cherry picked from commit 17f0c1e1cd) 2023-10-27 09:42:59 +07:00
Faisal Salman
c41100ebb5 Backport - Improve browser detection: unified name for Baidu (cherry picked from commit 9cc274fb6f) 2023-10-27 09:40:06 +07:00
Faisal Salman
23c5d7765d Backport - Improve browser detection: remove unnecessary extra space in "Avant " (cherry picked from commit f56073bb3e) 2023-10-27 09:39:36 +07:00
Faisal Salman
e3d5f7649d Backport - Improve browser detection: rename "Samsung Browser" to "Samsung Internet" (cherry picked from commit 5c10e2b107)
https://developer.samsung.com/internet/user-agent-string-format.html
2023-10-27 09:39:12 +07:00
Faisal Salman
02af42fcf0 Backport - Fix #682 - Add new browser: Smart Lenovo Browser (cherry picked from commit d565f65280)
https://browser.lenovo.com.cn/
2023-10-27 09:37:13 +07:00
Faisal Salman
57d1ac05f5 Backport - Fix #683 - change MetaSr into Sogou Explorer (+add Sogou Mobile) (cherry picked from commit 69ed6cec77) 2023-10-27 09:35:02 +07:00
Faisal Salman
ea2c82948f Backport - Fix misidentified WebView token as device model - found in #681 (cherry picked from commit b51ae9eb38) 2023-10-27 09:33:37 +07:00
Faisal Salman
3b896d50b7 Backport - Fix #681 - Add new browser: Vivo Browser (cherry picked from commit 125f0d9f16)
https://play.google.com/store/apps/details?id=com.vivo.browser
2023-10-27 09:31:03 +07:00
Faisal Salman
5a724cbde8 Backport - Increase UA_MAX_LENGTH to 500 (cherry picked from commit e614108911) 2023-10-27 09:28:58 +07:00
Faisal Salman
c76139632f Backport - Fix #563 #631 - Add new browser: Alipay (cherry picked from commit 77e0aa1ac6) 2023-10-27 09:25:04 +07:00
Faisal Salman
310cab9c3a Backport - add Klarna Shopping Browser UA parser (#669) (cherry picked from commit 177a496c34)
Co-authored-by: Ilya Daraseliya <ilya.daraseliya@klarna.com>
2023-10-27 09:24:15 +07:00
Faisal Salman
c6dea6361c Backport - Fix #651 - Improve device detection: Xiaomi Redmi (cherry picked from commit aa76da90d9) 2023-10-27 09:22:10 +07:00
Faisal Salman
daab1e76f8 Backport - Add new device vendor: Ulefone (cherry picked from commit 817c5835ef) 2023-10-27 09:21:49 +07:00
Faisal Salman
f78e468020 Backport - Improve device detection: Realme (cherry picked from commit 6ea6936632) 2023-10-27 09:21:00 +07:00
Faisal Salman
056f5e358f Bump version 0.7.36 (mirror of v1.0.36) 2023-09-09 20:10:57 +07:00
Faisal Salman
91f3185eb2 Bump version 1.0.36 2023-09-09 20:06:12 +07:00
Faisal Salman
9bcfbe2460 Backport - Update sponsors section in readme (cherry picked from commit f2e4b242ce) 2023-09-09 19:50:28 +07:00
Faisal Salman
eeaf198197 Backport - Add Snapchat user agent. (cherry picked from commit 153831d2ed) 2023-09-09 19:48:54 +07:00
Faisal Salman
59edeef380 Backport - Fix Amazon Fire TV device detection (cherry picked from commit b20d09655c) 2023-09-09 19:47:23 +07:00
Faisal Salman
f92d409909 Add some tests; Add new devices: Infinix, Tecno; Improve detection: Xiaomi POCO Source: https://www.useragents.me
(cherry picked from commit 15d17e97a1)
2023-09-09 19:46:47 +07:00
Faisal Salman
5af24a6cf7 Fix #643 - Improve iOS detection (cherry picked from commit 29fb85658a) 2023-09-09 19:45:30 +07:00
Faisal Salman
d810feb844 Bump version 1.0.35 (mirror of v0.7.35) 2023-04-02 06:08:37 +07:00
Faisal Salman
32d326b35b Update readme 2023-04-02 06:03:31 +07:00
Faisal Salman
786d502b01 Bump version 0.7.35 2023-03-31 17:56:50 +07:00
Faisal Salman
5b8adfef7b Backport - Prevent altering the result when supplied user-agent is different from current user-agent
Reference:
Commit: b09878934f
2023-03-31 15:55:44 +07:00
Faisal Salman
2e06a34062 Backport - Add new browser: TikTok
(cherry picked from commit 4af26c7a5e)
2023-03-31 15:49:21 +07:00
Faisal Salman
bf9ac43328 Backport - Add new engine: LibWeb + Add new OS: SerenityOS
(cherry picked from commit a6c85d0148)
2023-03-31 15:47:18 +07:00
Faisal Salman
3f8b5ba9cf Backport - Add new browser: Heytap
Reference:
Commit: 172f57ffea
2023-03-31 15:44:13 +07:00
Faisal Salman
1747707be6 Backport - Fix #678 - Improve Yandex detection
(cherry picked from commit 33f02099d1)
2023-03-31 15:40:54 +07:00
Faisal Salman
d41404551f Backport - Fix #519 #521 #616 - Improve iPhone & iOS detection
(cherry picked from commit a1d816ae21)
2023-03-31 15:37:30 +07:00
Faisal Salman
ba067bd351 Backport - Fix #624 - Detect Amazon Echo
(cherry picked from commit df1a1c7bb4)
2023-03-31 15:35:03 +07:00
Faisal Salman
a486f28732 Bump version 1.0.34 (mirror of v0.7.34) 2023-03-05 20:52:38 +07:00
Faisal Salman
3218051f07 Bump version 0.7.34 2023-03-05 20:46:16 +07:00
Faisal Salman
551ad88474 Add new device: Apple Watch, new os: watchOS
(cherry picked from commit 18730452f2)
2023-03-04 22:45:23 +07:00
Faisal Salman
097f736c4d Fix #387 #554 - Detect iPadOS 13
https://stackoverflow.com/questions/9038625/detect-if-device-is-ios
(cherry picked from commit 5ea9f0ec16)
2023-03-04 22:43:28 +07:00
Faisal Salman
73c25771dc Fix #498 - Detect Brave Browser by checking navigator.brave
https://github.com/brave/brave-browser/issues/10165#issuecomment-641128278
(cherry picked from commit 03b0a5afa6)
2023-03-04 22:42:39 +07:00
17 changed files with 2559 additions and 278 deletions

View File

@@ -0,0 +1,23 @@
name: Publish to NPM
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18.x'
registry-url: 'https://registry.npmjs.org'
- run: npm install -g npm
- run: npm ci
- run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@@ -1,6 +1,6 @@
{
"name": "ua-parser-js",
"version": "0.7.33",
"version": "1.0.40",
"authors": [
"Faisal Salman <f@faisalman.com>"
],

View File

@@ -4,24 +4,67 @@
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.30 / 1.0.1
## Version 0.7.40 / 1.0.40
- Add new browser: 115, LibreWolf, Slimboat, Slimjet
- Add new device: Advan, Cat, Energizer, IMO, Micromax, Smartfren
- Add new engine: ArkWeb, Servo
- Add new os: OpenHarmony
- Improve browser detection: 2345, 360, Dragon, Iron, Maxthon
- Recognize Honor as a separate device vendor from Huawei
- Fix Python Request mistakenly identified as Meta Quest
- 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.7.39 / 1.0.39
- Add new feature: executable command using `npx ua-parser-js "[INSERT-UA-HERE]"`
- Add new browser: Helio, Pico Browser, Wolvic
- Add new device vendor: itel, Nothing, TCL
- Improve browser detection: ICEBrowser, Klar, QQBrowser, Quark, Rekonq, Sleipnir
- Improve device detection: Xiaomi Pro, Amazon Echo Show, Samsung Galaxy Watch
- Removed from browser: Viera
## Version 0.7.31 / 1.0.2
## Version 0.7.38 / 1.0.38
- Fix error on getOS() when userAgentData.platform is undefined
- Add new browser: Opera GX, Twitter
- Improve browser detection: DuckDuckGo
- Improve device detection: OPPO Pad, Oculus Quest
- Fix OPPO Reno A5 incorrect detection
- Fix TypeError Bug
- Use AST to extract regexes and verify them with safe-regex
## Version 0.7.37 / 1.0.37
- Fix misidentified WebView token as device model
- Increase UA_MAX_LENGTH to 500
- Add new browser: Alipay, Klarna, Smart Lenovo Browser, Vivo Browser
- Add new device: Ulefone
- Improve device detection: Realme, Xiaomi Redmi
- Rename browser: Avant, Baidu, Samsung Internet, Sogou Explorer, Sogou Mobile, WeChat
## 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
@@ -38,11 +81,24 @@ Version 1.0.x is basically the equivalent of version 0.7.x. See [#536](https://g
- Fix included commas in Safari / Mobile Safari version
- Increase UA_MAX_LENGTH to 350
## Version 0.7.33 / 1.0.33
## Version 0.7.31 / 1.0.2
- Add new browser : Cobalt
- Identify Macintosh as an Apple device
- Fix ReDoS vulnerability
- 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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2012-2021 Faisal Salman <<f@faisalman.com>>
Copyright (c) 2012-2024 Faisal Salman <<f@faisalman.com>>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,6 +1,6 @@
Package.describe({
name: 'faisalman:ua-parser-js',
version: '0.7.33',
version: '1.0.40',
summary: 'Lightweight JavaScript-based user-agent string parser',
git: 'https://github.com/faisalman/ua-parser-js.git',
documentation: 'readme.md'

View File

@@ -1,21 +1,27 @@
{
"title": "UAParser.js",
"name": "ua-parser-js",
"version": "0.7.33",
"version": "1.0.40",
"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",
"keywords": [
"ua-parser-js",
"user-agent",
"parser",
"browser",
"engine",
"os",
"device",
"mobile",
"cpu",
"jquery-plugin",
"ecosystem:jquery"
"platform",
"detect",
"javascript",
"jquery",
"typescript",
"node-js",
"client-hints"
],
"homepage": "https://github.com/faisalman/ua-parser-js",
"homepage": "https://uaparser.dev",
"contributors": [
"Aamir Poonawalla <aamir@urx.com>",
"Admas <mollases@users.noreply.github.com>",
@@ -145,6 +151,7 @@
"dist",
"src"
],
"bin": "./script/cli.js",
"scripts": {
"build": "uglifyjs src/ua-parser.js -o dist/ua-parser.min.js --comments '/^ UA/' && uglifyjs src/ua-parser.js -o dist/ua-parser.pack.js --comments '/^ UA/' --compress --mangle",
"test": "jshint src/ua-parser.js && mocha -R nyan test/test.js",
@@ -187,7 +194,7 @@
"test": "test"
},
"bugs": "https://github.com/faisalman/ua-parser-js/issues",
"demo": "https://faisalman.github.io/ua-parser-js",
"demo": "https://uaparser.dev",
"download": "https://raw.github.com/faisalman/ua-parser-js/master/dist/ua-parser.min.js",
"funding": [
{
@@ -197,6 +204,10 @@
{
"type": "paypal",
"url": "https://paypal.me/faisalman"
},
{
"type": "github",
"url": "https://github.com/sponsors/faisalman"
}
]
}

View File

@@ -15,8 +15,30 @@
JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data with relatively small footprint (~17KB minified, ~6KB gzipped) that can be used either in browser (client-side) or node.js (server-side).
* Author : Faisal Salman <<f@faisalman.com>>
* Demo : https://faisalman.github.io/ua-parser-js
* Demo : https://uaparser.dev
* Source : https://github.com/faisalman/ua-parser-js
* Documentation :
* v1 : https://github.com/faisalman/ua-parser-js/tree/1.0.x#documentation
* v2 : https://docs.uaparser.dev
***
### 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>
<a href="https://uaparser.dev"><img src="https://raw.githubusercontent.com/faisalman/ua-parser-js/gh-pages/images/uap-header.png"></a>
---
# Documentation
### UAParser([user-agent][,extensions])
@@ -78,21 +100,23 @@ The methods are self explanatory, here's a small overview on all the available m
```sh
# Possible 'browser.name':
2345Explorer, 360 Browser, Amaya, Android Browser, Arora, Avant, Avast, AVG,
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
115 Browser, 2345Explorer, 360 Browser, Alipay, Amaya, Android Browser, Arora,
Avant, Avast, AVG, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
Chrome Headless, Chrome WebView, Chrome, Chromium, Cobalt, Comodo Dragon, Dillo,
Dolphin, Doris, DuckDuckGo, Edge, Electron, Epiphany, Facebook, Falkon, Fennec,
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Huawei Browser,
ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon, Iceweasel, Instagram,
Iridium, Iron, Jasmine, Kakao[Story/Talk], K-Meleon, Kindle, Klar, Konqueror,
LBBROWSER, Line, LinkedIn, Links, Lunascape, Lynx, MIUI Browser, Maemo Browser,
Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront,
NetSurf, Netfront, Netscape, NokiaBrowser, Obigo, Oculus Browser, OmniWeb,
Opera Coast, Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, Polaris,
Puffin, QQ, QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari,
Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim,
SlimBrowser, Swiftfox, Tesla, Tizen Browser, UCBrowser, UP.Browser, Viera,
Vivaldi, Waterfox, WeChat, Weibo, Yandex, baidu, iCab, w3m, Whale Browser...
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Helio, Heytap,
Huawei Browser, iCab, ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon,
Iceweasel, Instagram, Iridium, Iron, Jasmine, Kakao[Story/Talk], K-Meleon,
Kindle, Klar, Klarna, Konqueror, LBBROWSER, LibreWolf, Line, LinkedIn, Links,
Lunascape, Lynx, MIUI Browser, Maemo, Maxthon, Midori, Minimo, Mobile Safari,
Mosaic, Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, Obigo,
Oculus Browser, OmniWeb, Opera Coast, Opera [GX/Mini/Mobi/Tablet], PaleMoon,
PhantomJS, Phoenix, Pico Browser, Polaris, Puffin, QQ, QQBrowser, QQBrowserLite,
Quark, QupZilla, RockMelt, Safari, Sailfish Browser, Samsung Internet, SeaMonkey,
Silk, Skyfire, Sleipnir, Slim[Browser/Boat/Jet], Smart Lenovo Browser, Snapchat,
Sogou [Explorer/Mobile], Swiftfox, Tesla, TikTok, Tizen Browser, Twitter,
UCBrowser, UP.Browser, Vivaldi, Vivo Browser, w3m, Waterfox, WeChat, Weibo,
Whale Browser, Wolvic, Yandex, ...
# 'browser.version' determined dynamically
```
@@ -112,11 +136,13 @@ console, mobile, tablet, smarttv, wearable, embedded
##########
# Possible 'device.vendor':
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
Essential, Facebook, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Kobo,
Lenovo, LG, Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus,
OPPO, Ouya, Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp,
Siemens, Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
Acer, Advan, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Cat,
Dell, Energizer, Essential, Facebook, Fairphone, GeeksPhone, Google, HP, HTC,
Huawei, IMO, Infinix, itel, Jolla, Kobo, Lenovo, LG, Meizu, Micromax, Microsoft,
Motorola, Nexian, Nintendo, Nokia, Nothing, Nvidia, OnePlus, OPPO, Ouya, Palm,
Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp, Siemens,
Smartfren, Sony[Ericsson], Sprint, TCL, Tecno, Tesla, Ulefone, Vivo, Vodafone,
Xbox, Xiaomi, Zebra, ZTE, ...
# 'device.model' determined dynamically
```
@@ -126,8 +152,8 @@ Siemens, Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE
```sh
# Possible 'engine.name'
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, Links, Lynx, NetFront,
NetSurf, Presto, Tasman, Trident, w3m, WebKit
Amaya, ArkWeb, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, LibWeb, Links,
Lynx, NetFront, NetSurf, Presto, Servo, Tasman, Trident, w3m, WebKit
# 'engine.version' determined dynamically
```
@@ -141,10 +167,11 @@ AIX, Amiga OS, Android[-x86], Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,
Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS,
Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HarmonyOS, HP-UX, Hurd, iOS, Joli, KaiOS,
Linpus, Linspire,Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix,
Mint, Morph OS, NetBSD, NetRange, NetTV, Nintendo, OpenBSD, OpenVMS, OS/2, Palm,
PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS,
RISC OS, Sabayon, Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen,
Ubuntu, Unix, VectorLinux, Viera, WebOS, Windows [Phone/Mobile], Zenwalk, ...
Mint, Morph OS, NetBSD, NetRange, NetTV, Nintendo, OpenBSD, OpenHarmony, OpenVMS,
OS/2, Palm, PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat,
RIM Tablet OS, RISC OS, Sabayon, Sailfish, SerenityOS, Series40, Slackware,
Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix, VectorLinux, Viera, watchOS, WebOS,
Windows [Phone/Mobile], Zenwalk, ...
# 'os.version' determined dynamically
```
@@ -154,7 +181,8 @@ Ubuntu, Unix, VectorLinux, Viera, WebOS, Windows [Phone/Mobile], Zenwalk, ...
```sh
# Possible 'cpu.architecture'
68k, amd64, arm[64/hf], avr, ia[32/64], irix[64], mips[64], pa-risc, ppc, sparc[64]
68k, amd64, arm[64/hf], avr, ia[32/64], irix[64], mips[64], pa-risc, ppc,
sparc[64]
```
* `getUA()`
@@ -296,6 +324,14 @@ console.log(parseInt($.ua.browser.version.split('.')[0], 10)); // 4
$('body').addClass('ua-browser-' + $.ua.browser.name + ' ua-devicetype-' + $.ua.device.type);
```
## Using npx
UAParser.js can be executed as a command that returns the parsed data in JSON format:
```sh
$ npx ua-parser-js "[INSERT-UA-HERE]"
```
## Using Extension
* `UAParser([uastring,] extensions)`
@@ -312,9 +348,10 @@ console.log(myParser.setUA(myUA).getBrowser()); // {name: "MyBrowser", version:
# 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>
@@ -338,7 +375,7 @@ Made with [contributors-img](https://contrib.rocks).
MIT License
Copyright (c) 2012-2021 Faisal Salman <<f@faisalman.com>>
Copyright (c) 2012-2024 Faisal Salman <<f@faisalman.com>>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

4
script/cli.js Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env node
const UAParser = require('ua-parser-js');
console.log(JSON.stringify(process.argv.slice(2).map(ua => UAParser(ua)), null, 4));

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////////
/* UAParser.js v0.7.33
Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
/* UAParser.js v1.0.40
Copyright © 2012-2024 Faisal Salman <f@faisalman.com>
MIT License *//*
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
Supports browser & node.js environment.
@@ -17,7 +17,7 @@
/////////////
var LIBVERSION = '0.7.33',
var LIBVERSION = '1.0.40',
EMPTY = '',
UNKNOWN = '?',
FUNC_TYPE = 'function',
@@ -37,7 +37,7 @@
SMARTTV = 'smarttv',
WEARABLE = 'wearable',
EMBEDDED = 'embedded',
UA_MAX_LENGTH = 350;
UA_MAX_LENGTH = 500;
var AMAZON = 'Amazon',
APPLE = 'Apple',
@@ -56,10 +56,12 @@
SAMSUNG = 'Samsung',
SHARP = 'Sharp',
SONY = 'Sony',
VIERA = 'Viera',
XIAOMI = 'Xiaomi',
ZEBRA = 'Zebra',
FACEBOOK = 'Facebook';
FACEBOOK = 'Facebook',
CHROMIUM_OS = 'Chromium OS',
MAC_OS = 'Mac OS',
SUFFIX_BROWSER = ' Browser';
///////////
// Helper
@@ -170,7 +172,7 @@
return (i === UNKNOWN) ? undefined : i;
}
}
return str;
return map.hasOwnProperty('*') ? map['*'] : str;
};
///////////////
@@ -222,35 +224,47 @@
], [NAME, VERSION], [
/opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0
], [VERSION, [NAME, OPERA+' Mini']], [
/\bop(?:rg)?x\/([\w\.]+)/i // Opera GX
], [VERSION, [NAME, OPERA+' GX']], [
/\bopr\/([\w\.]+)/i // Opera Webkit
], [VERSION, [NAME, OPERA]], [
// Mixed
/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i // Baidu
], [VERSION, [NAME, 'Baidu']], [
/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i // Maxthon
], [VERSION, [NAME, 'Maxthon']], [
/(kindle)\/([\w\.]+)/i, // Kindle
/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer
/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
// Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
// Trident based
/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser
/(ba?idubrowser)[\/ ]?([\w\.]+)/i, // Baidu Browser
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
// 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(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
// Blink/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|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
/(heytap|ovi|115)browser\/([\d\.]+)/i, // HeyTap/Ovi/115
/(weibo)__([\d\.]+)/i // Weibo
], [NAME, VERSION], [
/quark(?:pc)?\/([-\w\.]+)/i // Quark
], [VERSION, [NAME, 'Quark']], [
/\bddg\/([\w\.]+)/i // DuckDuckGo
], [VERSION, [NAME, 'DuckDuckGo']], [
/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
], [VERSION, [NAME, 'UC'+BROWSER]], [
/microm.+\bqbcore\/([\w\.]+)/i, // WeChat Desktop for Windows Built-in Browser
/\bqbcore\/([\w\.]+).+microm/i
], [VERSION, [NAME, 'WeChat(Win) Desktop']], [
/\bqbcore\/([\w\.]+).+microm/i,
/micromessenger\/([\w\.]+)/i // WeChat
], [VERSION, [NAME, 'WeChat']], [
/konqueror\/([\w\.]+)/i // Konqueror
], [VERSION, [NAME, 'Konqueror']], [
/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
], [VERSION, [NAME, 'IE']], [
/yabrowser\/([\w\.]+)/i // Yandex
/ya(?:search)?browser\/([\w\.]+)/i // Yandex
], [VERSION, [NAME, 'Yandex']], [
/slbrowser\/([\w\.]+)/i // Smart Lenovo Browser
], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [
/(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [
/\bfocus\/([\w\.]+)/i // Firefox Focus
@@ -264,35 +278,48 @@
/coast\/([\w\.]+)/i // Opera Coast
], [VERSION, [NAME, OPERA+' Coast']], [
/miuibrowser\/([\w\.]+)/i // MIUI Browser
], [VERSION, [NAME, 'MIUI '+BROWSER]], [
/fxios\/([-\w\.]+)/i // Firefox for iOS
], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [
/fxios\/([\w\.-]+)/i // Firefox for iOS
], [VERSION, [NAME, FIREFOX]], [
/\bqihu|(qi?ho?o?|360)browser/i // 360
], [[NAME, '360 '+BROWSER]], [
/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser
/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
], [[NAME, /_/g, ' '], VERSION], [
/\bqihoobrowser\/?([\w\.]*)/i // 360
], [VERSION, [NAME, '360']], [
/\b(qq)\/([\w\.]+)/i // QQ
], [[NAME, /(.+)/, '$1Browser'], VERSION], [
/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
/samsungbrowser\/([\w\.]+)/i // Samsung Internet
], [VERSION, [NAME, SAMSUNG + ' Internet']], [
/metasr[\/ ]?([\d\.]+)/i // Sogou Explorer
], [VERSION, [NAME, 'Sogou Explorer']], [
/(sogou)mo\w+\/([\d\.]+)/i // Sogou Mobile
], [[NAME, 'Sogou Mobile'], VERSION], [
/(electron)\/([\w\.]+) safari/i, // Electron-based App
/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/Baidu App/2345 Browser
/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i // QQ/2345
], [NAME, VERSION], [
/(metasr)[\/ ]?([\w\.]+)/i, // SouGouBrowser
/(lbbrowser)/i, // LieBao Browser
/(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq
/\[(linkedin)app\]/i // LinkedIn App for iOS & Android
], [NAME], [
/ome\/([\w\.]+) \w* ?(iron) saf/i, // Iron
/ome\/([\w\.]+).+qihu (360)[es]e/i // 360
], [VERSION, NAME], [
// WebView
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
], [[NAME, FACEBOOK], VERSION], [
/(Klarna)\/([\w\.]+)/i, // Klarna Shopping Browser for iOS & Android
/(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
/(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
/safari (line)\/([\w\.]+)/i, // Line App for iOS
/\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
/(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram
/(alipay)client\/([\w\.]+)/i, // Alipay
/(twitter)(?:and| f.+e\/([\w\.]+))/i, // Twitter
/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i // Chromium/Instagram/Snapchat
], [NAME, VERSION], [
/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
], [VERSION, [NAME, 'GSA']], [
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
], [VERSION, [NAME, 'TikTok']], [
/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
], [VERSION, [NAME, CHROME+' Headless']], [
@@ -319,23 +346,24 @@
// Gecko based
/(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
], [[NAME, 'Netscape'], VERSION], [
/(wolvic|librewolf)\/([\w\.]+)/i // Wolvic/LibreWolf
], [NAME, VERSION], [
/mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
], [VERSION, [NAME, FIREFOX+' Reality']], [
/ekiohf.+(flow)\/([\w\.]+)/i, // Flow
/(swiftfox)/i, // Swiftfox
/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
// IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,
// IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
// Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
/(firefox)\/([\w\.]+)/i, // Other Firefox-based
/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, // Mozilla
// 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
/(links) \(([\w\.]+)/i, // Links
/panasonic;(viera)/i // Panasonic Viera
], [NAME, VERSION], [
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
// Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser
/(links) \(([\w\.]+)/i // Links
], [NAME, [VERSION, /_/g, '.']], [
/(cobalt)\/([\w\.]+)/i // Cobalt
], [NAME, [VERSION, /master.|lts./, ""]]
@@ -382,13 +410,13 @@
// 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
], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
/samsung[- ]([-\w]+)/i,
/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
/samsung[- ]((?!sm-[lr])[-\w]+)/i,
/sec-(sgh\w+)/i
], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
// Apple
/\((ip(?:hone|od)[\w ]*);/i // iPod/iPhone
/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
/\((ipad);[-\w\),; ]+apple/i, // iPad
/applecoremedia\/[\w\.]+ \((ipad)/i,
@@ -401,20 +429,26 @@
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
// Honor
/(?:honor)([-\w ]+)[;\)]/i
], [MODEL, [VENDOR, 'Honor'], [TYPE, MOBILE]], [
// Huawei
/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
/(?:huawei|honor)([-\w ]+)[;\)]/i,
/(?:huawei)([-\w ]+)[;\)]/i,
/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
// 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(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i, // Xiaomi Redmi 'numeric' models
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i // Xiaomi Mi
], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, // Redmi Pad
/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
@@ -422,6 +456,8 @@
/; (\w+) bui.+ oppo/i,
/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [
/\b(opd2\d{3}a?) bui/i
], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [
// Vivo
/vivo (\w+)(?: bui|\))/i,
@@ -429,7 +465,7 @@
], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
// Realme
/\b(rmx[12]\d{3})(?: bui|;|\))/i
/\b(rmx[1-3]\d{3})(?: bui|;|\))/i
], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
// Motorola
@@ -465,7 +501,7 @@
], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
// Sony
/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
/sony tablet [ps]/i,
/\b(?:sony)?sgp\w+(?: bui|\))/i
@@ -478,7 +514,7 @@
// Amazon
/(alexa)webm/i,
/(kf[a-z]{2}wi)( bui|\))/i, // Kindle Fire without Silk
/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i, // Kindle Fire without Silk / Echo Show
/(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
@@ -507,6 +543,14 @@
/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
// TCL
/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i
], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [
// itel
/(itel) ((\w+))/i
], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [
// Acer
/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
@@ -515,10 +559,33 @@
/droid.+; (m[1-5] note) bui/i,
/\bmz-([-\w]{2,})/i
], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
// Ulefone
/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
// Energizer
/; (energy ?\w+)(?: bui|\))/i,
/; energizer ([\w ]+)(?: bui|\))/i
], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [
// Cat
/; cat (b35);/i,
/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [
// Smartfren
/((?:new )?andromax[\w- ]+)(?: bui|\))/i
], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [
// Nothing
/droid.+; (a(?:015|06[35]|142p?))/i
], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
// MIXED
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
/; (imo) ((?!tab)[\w ]+?)(?: bui|\))/i, // IMO
/(hp) ([\w ]+\w)/i, // HP iPAQ
/(asus)-?(\w+)/i, // Asus
/(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
@@ -527,6 +594,7 @@
/(oppo) ?([\w ]+) bui/i // OPPO
], [VENDOR, MODEL, [TYPE, MOBILE]], [
/(imo) (tab \w+)/i, // IMO
/(kobo)\s(ereader|touch)/i, // Kobo
/(archos) (gamepad2?)/i, // Archos
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
@@ -611,7 +679,7 @@
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
/crkey/i // Google Chromecast
], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
/droid.+aft(\w)( bui|\))/i // Fire TV
/droid.+aft(\w+)( bui|\))/i // Fire TV
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
/\(dtv[\);].+(aquos)/i,
/(aquos-tv[\w ]+)\)/i // Sharp
@@ -646,13 +714,26 @@
// WEARABLES
///////////////////
/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i // Samsung Galaxy Watch
], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [
/((pebble))app/i // Pebble
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [
/droid.+; (glass) \d/i // Google Glass
], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
/droid.+; (wt63?0{2,3})\)/i
], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
/(quest( 2| pro)?)/i // Oculus Quest
///////////////////
// XR
///////////////////
/droid.+; (glass) \d/i // Google Glass
], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
/(pico) (4|neo3(?: link|pro)?)/i // Pico
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
/; (quest( \d| pro)?)/i // Oculus Quest
], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
///////////////////
@@ -661,12 +742,14 @@
/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
], [VENDOR, [TYPE, EMBEDDED]], [
/(aeobc)\b/i // Echo Dot
], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [
////////////////////
// MIXED (GENERIC)
///////////////////
/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
], [MODEL, [TYPE, MOBILE]], [
/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors
], [MODEL, [TYPE, TABLET]], [
@@ -683,14 +766,18 @@
/windows.+ edge\/([\w\.]+)/i // EdgeHTML
], [VERSION, [NAME, EDGE+'HTML']], [
/(arkweb)\/([\w\.]+)/i // ArkWeb
], [NAME, VERSION], [
/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
], [VERSION, [NAME, 'Blink']], [
/(presto)\/([\w\.]+)/i, // Presto
/(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|servo)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
/ekioh(flow)\/([\w\.]+)/i, // Flow
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
/(icab)[\/ ]([23]\.[\d\.]+)/i // iCab
/(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
/\b(libweb)/i
], [NAME, VERSION], [
/rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
@@ -702,25 +789,26 @@
// Windows
/microsoft (windows) (vista|xp)/i // Windows (iTunes)
], [NAME, VERSION], [
/(windows) nt 6\.2; (arm)/i, // Windows RT
/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, // Windows Phone
/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i
/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i // Windows Phone
], [NAME, [VERSION, strMapper, windowsVersionMap]], [
/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i
], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [
/windows nt 6\.2; (arm)/i, // Windows RT
/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,
/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [
// iOS/macOS
/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
/cfnetwork\/.+darwin/i
], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
/(mac os x) ?([\w\. ]*)/i,
/(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [
], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
// Mobile OSes
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\/ ]?([\w\.]*)/i,
/(blackberry)\w*\/([\w\.]*)/i, // Blackberry
/(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS
/\((series40);/i // Series 40
@@ -734,12 +822,14 @@
/web0s;.+rt(tv)/i,
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
], [VERSION, [NAME, 'webOS']], [
/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
], [VERSION, [NAME, 'watchOS']], [
// Google Chromecast
/crkey\/([\d\.]+)/i // Google Chromecast
], [VERSION, [NAME, CHROME+'cast']], [
/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
], [[NAME, 'Chromium OS'], VERSION],[
], [[NAME, CHROMIUM_OS], VERSION],[
// Smart TVs
/panasonic;(viera)/i, // Panasonic Viera
@@ -765,7 +855,7 @@
], [[NAME, 'Solaris'], VERSION], [
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
/(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
], [NAME, VERSION]
]
@@ -786,16 +876,22 @@
return new UAParser(ua, extensions).getResult();
}
var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
var _uach = (typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgentData) ? window.navigator.userAgentData : undefined;
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 _isSelfNav = _navigator && _navigator.userAgent == _ua;
this.getBrowser = function () {
var _browser = {};
_browser[NAME] = undefined;
_browser[VERSION] = undefined;
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;
};
this.getCPU = function () {
@@ -810,9 +906,14 @@
_device[MODEL] = undefined;
_device[TYPE] = undefined;
rgxMapper.call(_device, _ua, _rgxmap.device);
if (!_device[TYPE] && _uach && _uach.mobile) {
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;
};
this.getEngine = function () {
@@ -827,8 +928,10 @@
_os[NAME] = undefined;
_os[VERSION] = undefined;
rgxMapper.call(_os, _ua, _rgxmap.os);
if (!_os[NAME] && _uach && _uach.platform != 'Unknown') {
_os[NAME] = _uach.platform.replace(/chrome/i, 'Chromium').replace(/mac/i, 'Mac ');
if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {
_os[NAME] = _uach.platform
.replace(/chrome os/i, CHROMIUM_OS)
.replace(/macos/i, MAC_OS); // backward compatibility
}
return _os;
};

File diff suppressed because it is too large Load Diff

View File

@@ -23,6 +23,46 @@
"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",
"ua" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/6.0; .NET4.0E; .NET4.0C)",

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,13 @@
[
{
"desc" : "ArkWeb",
"ua" : "Mozilla/5.0 (Phone; OpenHarmony 4.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile",
"expect" :
{
"name" : "ArkWeb",
"version" : "4.1.6.1"
}
},
{
"desc" : "Blink",
"ua" : "Mozilla/5.0 (Linux; Android 7.0; SM-G920I Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.4.9 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36",
@@ -53,6 +62,15 @@
"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",
"ua" : "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0",
@@ -71,6 +89,15 @@
"version" : "2.8.149"
}
},
{
"desc" : "Servo",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Servo/1.0 Firefox/111.0",
"expect" :
{
"name" : "Servo",
"version" : "1.0"
}
},
{
"desc" : "Tasman",
"ua" : "Mozilla/4.0 (compatible; MSIE 6.0; PPC Mac OS X 10.4.7; Tasman 1.0)",

View File

@@ -80,6 +80,24 @@
"version" : "10"
}
},
{
"desc" : "WeChat Desktop for Windows Built-in Browser",
"ua" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.901.400 QQBrowser/9.0.2524.400",
"expect" :
{
"name" : "Windows",
"version" : "7"
}
},
{
"desc" : "WeChat Desktop for Windows Built-in Browser major version in 4",
"ua" : "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/81.0.4044.138 safari/537.36 nettype/wifi micromessenger/7.0.20.1781(0x6700143b) windowswechat",
"expect" :
{
"name" : "Windows",
"version" : "7"
}
},
{
"desc" : "Windows RT",
"ua" : "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)",
@@ -764,6 +782,51 @@
"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",
"ua" : "Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)",
@@ -1168,5 +1231,23 @@
"name" : "Linspire",
"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"
}
},
{
"desc" : "OpenHarmony",
"ua" : "Mozilla/5.0 (Phone; OpenHarmony 4.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile",
"expect" :
{
"name" : "OpenHarmony",
"version" : "4.1"
}
}
]

File diff suppressed because one or more lines are too long