Compare commits

...

90 Commits

Author SHA1 Message Date
Faisal Salman
f95aced43b Release as 0.7.27 2021-04-02 18:18:49 +07:00
Faisal Salman
24950f97ae Merge branch 'master' of github.com:faisalman/ua-parser-js into master 2021-04-02 18:15:28 +07:00
Faisal Salman
cb30756f48 Merge pull request #490 from SuperOleg39/fix-set-ua-limit
Add string check to setUA method
2021-04-02 18:15:04 +07:00
o.drapeza
0868e372e0 Add string check to setUA method 2021-04-02 12:52:30 +03:00
Faisal Salman
9d431cfddd Add new device: Fairphone 2021-04-02 10:10:47 +07:00
Faisal Salman
c937400e8e Add new browser: Firefox Reality 2021-04-02 01:00:50 +07:00
Faisal Salman
8bea5c552a Add new Engine & Browser: Flow 2021-04-02 00:15:20 +07:00
Faisal Salman
3843578de9 Small refactor 2021-04-01 23:55:20 +07:00
Faisal Salman
be9a066029 Merge pull request #487 from kueez/kueez-develop
Better tablet detection
2021-03-29 23:53:21 +07:00
sUP
6f2ba7fcd5 Better tablet detection:
- iPad using Facebook browser on some occasions
- More Huawei tablets
- Asus ZenPad Z8s (P00J)
2021-03-29 18:40:41 +03:00
sUP
d72de26ef9 Better tablet detection - Build. 2021-03-29 16:17:18 +03:00
sUP
80fae81eee Better tablet detection:
- Fix lenovo phone / tablet detection
2021-03-29 16:04:00 +03:00
sUP
91fa6dd5cc Better tablet detection:
- Huawei MediaPad M/T
- Galaxy Tab SM-P
- Kindle Fire without Silk
2021-03-29 15:42:44 +03:00
Faisal Salman
a6b0c165c4 Release as 0.7.26 2021-03-27 02:43:24 +07:00
Faisal Salman
999764cf36 Merge branch 'old-edge-fix' into develop 2021-03-27 02:29:18 +07:00
Faisal Salman
0e70fc4044 Add new device.vendor: Realme 2021-03-27 02:21:18 +07:00
Faisal Salman
3b703a6379 Refine device detection with more test cases 2021-03-27 00:45:26 +07:00
Faisal Salman
4f27489ccf Fix regexes that were marked as unsafe by safe-regex module 2021-03-26 21:17:35 +07:00
Faisal Salman
2cfd792d24 Fix #342 - Enforce all regexes to comply with safe-regex as a safeguard against possible ReDoS vulnerability 2021-03-26 19:54:32 +07:00
Faisal Salman
b406b5df2c Merge branch 'refactor-experimental' into develop 2021-03-26 16:38:34 +07:00
Faisal Salman
536b9e8d9d Add new device.vendor: Vivo 2021-03-26 15:54:09 +07:00
Faisal Salman
8d5685771d Refine some detection with more test cases 2021-03-25 23:18:46 +07:00
Faisal Salman
69a568ae49 Casually save some bytes 2021-03-25 15:45:18 +07:00
Faisal Salman
59d947dcab Detect ARMEABI as ARM 2021-03-25 01:56:19 +07:00
Faisal Salman
62cb5a2e54 Add some test cases for Samsung, Huawei, Xiaomi 2021-03-25 01:54:30 +07:00
Faisal Salman
cd61aef07d Add Device: Surface Duo 2021-03-25 00:13:24 +07:00
Faisal Salman
afe62e915d Add new OS: Raspbian 2021-03-25 00:06:12 +07:00
Faisal Salman
ef4eeadcd8 Refine some OS detection 2021-03-25 00:00:30 +07:00
Faisal Salman
3da59cef3d Release as 0.7.25 2021-03-24 15:51:45 +07:00
Faisal Salman
a0b40be04f Simplify Huawei detection 2021-03-24 15:37:20 +07:00
Faisal Salman
73fb12b379 Add Electron 2021-03-24 02:15:50 +07:00
Faisal Salman
94d3550844 Fix #209 Add CHANGELOG 2021-03-24 01:10:51 +07:00
Faisal Salman
14e7dd3f86 Fix #448 Add AT&T & Vodafone devices 2021-03-24 00:44:14 +07:00
Faisal Salman
dff9746527 Fix #279 Remap old Edge versions <= 44 as suggested by @mikemaccana @callaginn 2021-03-24 00:09:49 +07:00
Faisal Salman
effd766e3b Fix #422 Add ARMHF in CPU Arch detection 2021-03-23 23:37:43 +07:00
Faisal Salman
4d94c6b3e3 Add CDN links & insert npm fund 2021-03-23 22:14:23 +07:00
Faisal Salman
daeb118543 Move documentation upwards and..mAkE tHe LoG0 BiG99eR!!1!1! 2021-03-23 20:31:09 +07:00
Faisal Salman
c47f458586 Merge branch 'refactor-experimental' of github.com:faisalman/ua-parser-js into refactor-experimental 2021-03-23 20:12:46 +07:00
Faisal Salman
8c2b84fc31 Enforce maximum limit to user-agent input 2021-03-23 20:10:09 +07:00
Faisal Salman
1667f5f2b2 Update README contents & structures 2021-03-21 03:40:33 +07:00
Faisal Salman
e1905168a8 Fix #438 Add Zebra devices 2021-03-20 07:54:31 +07:00
Faisal Salman
10475761cf Action doesn't work, should be under /.github/workflows folder perhaps 2021-03-19 19:29:28 +07:00
Faisal Salman
db381cad92 Change mocha reporter for CI 2021-03-19 19:21:18 +07:00
Faisal Salman
bb16473fac Fix #427 - Trying GitHub Actions 2021-03-19 19:09:24 +07:00
Faisal Salman
fe5ca1de96 Fix #401 Rearrange the order of regexes to improve hit-rate performance 2021-03-19 14:54:51 +07:00
Faisal Salman
ebccc29d97 Casually save some bytes 2021-03-18 18:42:01 +07:00
Faisal Salman
1a8cd671ab Fix #449 Lenovo Tablet 2021-03-18 02:05:57 +07:00
Faisal Salman
d1ba5f5914 Fix #430 Playstation 5 2021-03-18 00:19:41 +07:00
Faisal Salman
e402a6a55c Latest Xperia lineup 2021-03-17 10:58:50 +07:00
Faisal Salman
e612b44ecd Fix #470 Identify Android TV as SmartTV 2021-03-14 22:47:23 +07:00
Faisal Salman
fc1d3b0719 Fix #475 Nokia version incomplete 2021-03-14 22:22:04 +07:00
Faisal Salman
c626c01a5e Merge branch 'develop' of github.com:faisalman/ua-parser-js into develop 2021-03-14 19:07:48 +07:00
Faisal Salman
d1ea2f0dc4 Fix #433 #434 Huawei devices 2021-03-14 19:07:28 +07:00
Faisal Salman
70a586d4b1 Merge pull request #483 from annez/check-typeof-window
Move to check typeof for window for different envs
2021-03-14 01:08:33 +07:00
Faisal Salman
9da55e9791 Merge branch 'master' of github.com:faisalman/ua-parser-js 2021-03-13 21:10:56 +07:00
Faisal Salman
6c44b3fcc5 Merge branch 'develop' of github.com:faisalman/ua-parser-js into develop 2021-03-13 21:04:46 +07:00
Faisal Salman
b1f34c1620 Merge pull request #477 from crcong/fixWechatDesktop
FIX: Wechat Desktop for Windows compatible with new version
2021-03-13 21:00:59 +07:00
ruicong
1cfe34f517 FIX: new wechat desktop's unsafe regex 2021-03-13 14:26:42 +08:00
Faisal Salman
6c87e069ec Fix #407 ZTE Nubia misidentified as Nextbook Tablet 2021-03-13 11:41:56 +07:00
Faisal Salman
d658ef364b Fix #339 Add Weibo 2021-03-13 09:34:22 +07:00
Faisal Salman
f85dc8cb9a Fix #366 Amazon Alexa Echo Show 2021-03-13 09:22:56 +07:00
Faisal Salman
cdac86782b Add Nintendo Switch 2021-03-13 08:47:06 +07:00
Faisal Salman
46615e70db Fix #454 Improve Samsung detection 2021-03-12 19:20:17 +07:00
Faisal Salman
6aa3ff1374 Fix #450 Sony Xperia Z2 Tablet 2021-03-12 17:40:07 +07:00
Faisal Salman
dce862364b Add funding support links 2021-03-10 00:55:26 +07:00
Faisal Salman
ec5a864abb Fix #367 #425 Detect Instagram in-app browser 2021-03-09 02:32:10 +07:00
Faisal Salman
d78a2e0361 Fix #413 Bug resulting Motorola model O 2021-03-09 02:13:31 +07:00
David Annez
f661da9d47 Move to check typeof for window for different envs 2021-02-26 10:14:32 +00:00
Faisal Salman
9999815ac8 Update version number to 0.7.24 2021-02-12 10:01:25 +07:00
Faisal Salman
809439e20e Fix potential ReDoS vulnerability as reported by Doyensec 2021-02-12 09:53:26 +07:00
Faisal Salman
5b83893476 Merge pull request #479 from joeyparrish/develop
fix: Xbox OS detection
2021-02-10 15:41:56 +07:00
Joey Parrish
9d154cc41b chore: Update build 2021-02-09 12:42:27 -08:00
Joey Parrish
7679003f87 fix: Xbox OS detection
It is better to detect Xbox devices as having the OS "Xbox".
Otherwise, they are detected as "Windows 10", making it difficult to
see the difference between Legacy Edge on Windows and the Xbox
browser.  (Karma (https://github.com/karma-runner/karma) only shows
the browser & OS on the status line.)

With this change, Xbox 360, Xbox One, Xbox X/S, and Xbox Series X/S
are all detected as OS "Xbox" with version "360", "One", etc.
2021-02-09 12:24:17 -08:00
ruicong
cd1bfd87c5 FIX: Wechat Desktop for Windows compatible with new version 2021-01-18 17:11:53 +08:00
Faisal Salman
45bf76a0fe Merge pull request #474 from dust-off/master
Fallback for Mobile
2021-01-08 14:41:15 +07:00
Dustin
f543c5ad72 facebook movile app with no browser info 2021-01-07 09:41:20 -08:00
Faisal Salman
89a72c27a7 Merge pull request #471 from jishidaaaaa/fix-firetv-detection
Fix Detection Rule For Amazon Fire TV
2021-01-05 23:46:45 +07:00
Faisal Salman
314131d003 Merge pull request #472 from GeraldHost/master
Update readme playstation typo
2021-01-05 23:44:08 +07:00
Gerald Host
386ebc29f1 feat: update readme playstation
Update Playstation to PlayStation as "Playstation" is not a known user agent.
2021-01-05 12:59:41 +00:00
Junki-Ishida
b0f14de2a4 Fix Detection Rule For Amazon Fire TV 2021-01-05 21:19:07 +09:00
Faisal Salman
fd8a583020 Merge pull request #469 from bynice/patch-1
Update ua-parser.js
2021-01-02 11:02:15 +07:00
Faisal Salman
cc2da937c6 Merge pull request #368 from Deliaz/master
Add Coc Coc browser detection
2020-12-17 20:07:49 +07:00
Yılmaz
34e2e800c5 Update ua-parser.js
Samsung Tablet SM-P587 must be Tablet device type
2020-12-17 15:39:17 +03:00
Deliaz
26c74ef356 Merge branch 'develop' into master 2020-12-16 19:37:22 +02:00
Faisal Salman
e4b3029668 Merge pull request #466 from yoyo837/patch-1
Update homepage
2020-12-13 12:43:11 +07:00
Amumu
b7d4865afd Update homepage 2020-12-13 10:59:01 +08:00
Faisal Salman
d5ab75a14e Merge branch 'master' of github.com:faisalman/ua-parser-js 2020-12-10 10:47:08 +07:00
Faisal Salman
83d37b4887 Merge pull request #451 from dineshks1/master
Adds travis jobs on ppc64le
2020-12-03 15:32:35 +07:00
dineshks1
da53c35f91 Adds travis jobs on ppc64le 2020-10-28 12:12:40 +00:00
Deliaz
cd3ba72b2f Add Coc Coc browser detection 2019-03-18 13:17:44 +07:00
18 changed files with 2116 additions and 785 deletions

12
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: ua-parser-js
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://www.paypal.me/faisalman/']

17
.github/workflows/run-test.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: ua-parser-js-run-test
on: [push, pull_request]
jobs:
run-test:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, ppc64le]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- name: Run the test
run: |
npm install
npm run test-ci

View File

@@ -1,3 +1,6 @@
arch:
- amd64
- ppc64le
language: node_js
node_js:
- stable
@@ -11,3 +14,5 @@ cache:
- node_modules
sudo: false
script: npm run test-ci

View File

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

3
changelog.md Normal file
View File

@@ -0,0 +1,3 @@
# UAParser.js Changelog
## Version 0.8.0

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-2019 Faisal Salman <<f@faisalman.com>>
Copyright (c) 2012-2021 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.23',
version: '0.7.27',
summary: 'Lightweight JavaScript-based user-agent string parser',
git: 'https://github.com/faisalman/ua-parser-js.git',
documentation: 'readme.md'

View File

@@ -1,7 +1,7 @@
{
"title": "UAParser.js",
"name": "ua-parser-js",
"version": "0.7.23",
"version": "0.7.27",
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
"description": "Lightweight JavaScript-based user-agent string parser",
"keywords": [
@@ -15,7 +15,7 @@
"jquery-plugin",
"ecosystem:jquery"
],
"homepage": "http://github.com/faisalman/ua-parser-js",
"homepage": "https://github.com/faisalman/ua-parser-js",
"contributors": [
"Aamir Poonawalla <aamir@urx.com>",
"Admas <mollases@users.noreply.github.com>",
@@ -99,8 +99,9 @@
],
"main": "src/ua-parser.js",
"scripts": {
"build": "uglifyjs src/ua-parser.js -o dist/ua-parser.min.js --comments '/UAParser\\.js/' && uglifyjs src/ua-parser.js -o dist/ua-parser.pack.js --comments '/UAParser\\.js/' --compress --mangle",
"build": "uglifyjs src/ua-parser.js -o dist/ua-parser.min.js --comments && uglifyjs src/ua-parser.js -o dist/ua-parser.pack.js --comments --compress --mangle",
"test": "jshint src/ua-parser.js && mocha -R nyan test/test.js",
"test-ci": "jshint src/ua-parser.js && mocha -R spec test/test.js",
"verup": "node ./node_modules/verup",
"version": "node ./node_modules/verup 0"
},
@@ -119,6 +120,7 @@
"jshint": "~2.12.0",
"mocha": "~8.2.0",
"requirejs": "^2.3.2",
"safe-regex": "^2.1.1",
"uglify-js": "~3.12.0",
"verup": "^1.3.x"
},
@@ -137,5 +139,15 @@
},
"bugs": "https://github.com/faisalman/ua-parser-js/issues",
"demo": "https://faisalman.github.io/ua-parser-js",
"download": "https://raw.github.com/faisalman/ua-parser-js/master/dist/ua-parser.min.js"
"download": "https://raw.github.com/faisalman/ua-parser-js/master/dist/ua-parser.min.js",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/ua-parser-js"
},
{
"type": "paypal",
"url": "https://paypal.me/faisalman"
}
]
}

192
readme.md
View File

@@ -1,18 +1,26 @@
<p align="center">
<img src="https://raw.githubusercontent.com/faisalman/ua-parser-js/gh-pages/images/logo.png" width="256" height="256">
</p>
<p align="center">
<a href="https://travis-ci.org/faisalman/ua-parser-js"><img src="https://travis-ci.org/faisalman/ua-parser-js.svg?branch=master"></a>
<a href="https://www.npmjs.com/package/ua-parser-js"><img src="https://img.shields.io/npm/v/ua-parser-js.svg"></a>
<a href="https://www.npmjs.com/package/ua-parser-js"><img src="https://img.shields.io/npm/dw/ua-parser-js.svg"></a>
<a href="https://www.jsdelivr.com/package/npm/ua-parser-js"><img src="https://data.jsdelivr.com/v1/package/npm/ua-parser-js/badge"></a>
<a href="https://cdnjs.com/libraries/UAParser.js"><img src="https://img.shields.io/cdnjs/v/UAParser.js.svg"></a>
</p>
# UAParser.js
<img align="right" src="https://raw.githubusercontent.com/faisalman/ua-parser-js/gh-pages/images/logo.png"> A JavaScript-based User-Agent string parser. Can be used either in browser (client-side) or in node.js (server-side) environment. Also available as jQuery/Zepto plugin, Bower/Meteor package, & RequireJS/AMD module. This library aims to identify detailed type of web browser, layout engine, operating system, cpu architecture, and device type/model, entirely from user-agent string with a relatively small footprint (~17KB when minified / ~6KB gzipped). Written in vanilla JavaScript, which means it doesn't require any other library and can be used independently. However, it's not recommended to use this library as browser detection since the result may not be more accurate than using feature detection.
[![Build Status](https://travis-ci.org/faisalman/ua-parser-js.svg?branch=master)](https://travis-ci.org/faisalman/ua-parser-js)
[![NPM downloads](https://img.shields.io/npm/dw/ua-parser-js.svg)](https://www.npmjs.com/package/ua-parser-js)
[![NPM](https://img.shields.io/npm/v/ua-parser-js.svg)](https://www.npmjs.com/package/ua-parser-js)
[![Bower](https://img.shields.io/bower/v/ua-parser-js.svg)](https://bower.io/)
[![CDNJS](https://img.shields.io/cdnjs/v/UAParser.js.svg)](https://cdnjs.com/libraries/UAParser.js)
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 : http://faisalman.github.io/ua-parser-js
* Source : https://github.com/faisalman/ua-parser-js
# Constructor
# Documentation
## Constructor
* `new UAParser([uastring][,extensions])`
* returns new instance
@@ -20,7 +28,7 @@
* `UAParser([uastring][,extensions])`
* returns result object `{ ua: '', browser: {}, cpu: {}, device: {}, engine: {}, os: {} }`
# Methods
## Methods
* `getBrowser()`
* returns `{ name: '', version: '' }`
@@ -30,17 +38,17 @@
2345Explorer, 360 Browser, Amaya, Android Browser, Arora, Avant, Avast, AVG,
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
Chrome Headless, Chrome WebView, Chrome, Chromium, Comodo Dragon, Dillo,
Dolphin, Doris, Edge, Epiphany, Facebook, Falkon, Fennec, Firebird, Firefox,
Flock, GSA, GoBrowser, ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon,
Iceape, Iceweasel, Iridium, Iron, Jasmine, K-Meleon, Kindle, Konqueror,
LBBROWSER Line, Links, Lunascape, Lynx, MIUI Browser, Maemo Browser, Maemo,
Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront,
NetSurf, Netfront, Netscape, NokiaBrowser, Oculus Browser, OmniWeb,
Opera Coast, Opera Mini, Opera Mobi, Opera Tablet, Opera, PaleMoon, PhantomJS,
Phoenix, Polaris, Puffin, QQ, QQBrowser, QQBrowserLite, Quark, QupZilla,
RockMelt, Safari, Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Skyfire,
Sleipnir, Slim, SlimBrowser, Swiftfox, Tizen Browser, UCBrowser, Vivaldi,
Waterfox, WeChat, Yandex, baidu, iCab, w3m, Whale Browser...
Dolphin, Doris, Edge, Electron, Epiphany, Facebook, Falkon, Fennec, Firebird,
Firefox [Reality], Flock, Flow, GSA, GoBrowser, ICE Browser, IE, IEMobile, IceApe,
IceCat, IceDragon, Iceweasel, Instagram, Iridium, Iron, Jasmine, K-Meleon,
Kindle, Konqueror, LBBROWSER, Line, Links, Lunascape, Lynx, MIUI Browser,
Maemo Browser, Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic,
Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, 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, Tizen Browser, UCBrowser, Vivaldi, Waterfox, WeChat, Weibo,
Yandex, baidu, iCab, w3m, Whale Browser...
# 'browser.version' determined dynamically
```
@@ -53,10 +61,11 @@ Waterfox, WeChat, Yandex, baidu, iCab, w3m, Whale Browser...
console, mobile, tablet, smarttv, wearable, embedded
# Possible 'device.vendor':
Acer, Alcatel, Amazon, Apple, Archos, Asus, BenQ, BlackBerry, Dell, Essential,
GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG, Meizu, Microsoft, Motorola,
Nexian, Nintendo, Nokia, Nvidia, OnePlus, Ouya, Palm, Panasonic, Pebble, Polytron,
RIM, Samsung, Sharp, Siemens, Sony[Ericsson], Sprint, Xbox, Xiaomi, ZTE, ...
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
Essential, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG,
Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus, OPPO, Ouya,
Palm, Panasonic, Pebble, Polytron, Realme, RIM, Samsung, Sharp, Siemens,
Sony[Ericsson], Sprint, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
# 'device.model' determined dynamically
```
@@ -66,7 +75,7 @@ RIM, Samsung, Sharp, Siemens, Sony[Ericsson], Sprint, Xbox, Xiaomi, ZTE, ...
```sh
# Possible 'engine.name'
Amaya, Blink, EdgeHTML, Gecko, Goanna, iCab, KHTML, Links, Lynx, NetFront,
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, Links, Lynx, NetFront,
NetSurf, Presto, Tasman, Trident, w3m, WebKit
# 'engine.version' determined dynamically
@@ -81,9 +90,9 @@ AIX, Amiga OS, Android, Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,
Contiki, Fedora, Firefox OS, FreeBSD, Debian, DragonFly, Fuchsia, Gentoo, GNU,
Haiku, Hurd, iOS, Joli, KaiOS, Linpus, Linux, Mac OS, Mageia, Mandriva, MeeGo,
Minix, Mint, Morph OS, NetBSD, Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD,
PCLinuxOS, Plan9, Playstation, QNX, RedHat, RIM Tablet OS, RISC OS, Sailfish,
Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix, VectorLinux,
WebOS, Windows [Phone/Mobile], Zenwalk, ...
PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS, RISC OS,
Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix,
VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ...
# 'os.version' determined dynamically
```
@@ -93,7 +102,7 @@ WebOS, Windows [Phone/Mobile], Zenwalk, ...
```sh
# Possible 'cpu.architecture'
68k, amd64, arm[64], 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]
```
* `getResult()`
@@ -103,11 +112,12 @@ WebOS, Windows [Phone/Mobile], Zenwalk, ...
* returns UA string of current instance
* `setUA(uastring)`
* set UA string to parse
* set UA string to be parsed
* returns current instance
# Usage
# Example
## Using HTML
```html
<!doctype html>
@@ -117,16 +127,15 @@ WebOS, Windows [Phone/Mobile], Zenwalk, ...
<script>
var parser = new UAParser();
// by default it takes ua string from current browser's window.navigator.userAgent
console.log(parser.getResult());
/*
/// this will print an object structured like this:
/// This will print an object structured like this:
{
ua: "",
browser: {
name: "",
version: ""
version: "",
major: "" //@deprecated
},
engine: {
name: "",
@@ -146,14 +155,14 @@ WebOS, Windows [Phone/Mobile], Zenwalk, ...
}
}
*/
// Default result depends on current window.navigator.userAgent value
// let's test a custom user-agent string as an example
var uastring = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.106 Chrome/15.0.874.106 Safari/535.2";
parser.setUA(uastring);
// Now let's try a custom user-agent string as an example
var uastring1 = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.106 Chrome/15.0.874.106 Safari/535.2";
parser.setUA(uastring1);
var result = parser.getResult();
// this will also produce the same result (without instantiation):
// var result = UAParser(uastring);
// You can also use UAParser constructor directly without having to create an instance:
// var result = UAParser(uastring1);
console.log(result.browser); // {name: "Chromium", version: "15.0.874.106"}
console.log(result.device); // {model: undefined, type: undefined, vendor: undefined}
@@ -162,7 +171,7 @@ WebOS, Windows [Phone/Mobile], Zenwalk, ...
console.log(result.engine.name); // "WebKit"
console.log(result.cpu.architecture); // "amd64"
// do some other tests
// Do some other tests
var uastring2 = "Mozilla/5.0 (compatible; Konqueror/4.1; OpenBSD) KHTML/4.1.4 (like Gecko)";
console.log(parser.setUA(uastring2).getBrowser().name); // "Konqueror"
console.log(parser.getOS()); // {name: "OpenBSD", version: undefined}
@@ -201,40 +210,6 @@ http.createServer(function (req, res) {
console.log('Server running at http://127.0.0.1:1337/');
```
## Using requirejs
```js
requirejs.config({
baseUrl : 'js/lib', // path to your script directory
paths : {
'ua-parser-js' : 'ua-parser.min'
}
});
requirejs(['ua-parser-js'], function(UAParser) {
var parser = new UAParser();
console.log(parser.getResult());
});
```
## Using CDN
```html
<script src="https://cdn.jsdelivr.net/npm/ua-parser-js@0/dist/ua-parser.min.js"></script>
```
## Using bower
```sh
$ bower install ua-parser-js
```
## Using meteor
```sh
$ meteor add faisalman:ua-parser-js
```
## Using TypeScript
```sh
@@ -245,18 +220,18 @@ $ npm install --save @types/ua-parser-js
## Using jQuery/Zepto ($.ua)
Although written in vanilla js (which means it doesn't depends on jQuery), this library will automatically detect if jQuery/Zepto is present and create `$.ua` object based on browser's user-agent (although in case you need, `window.UAParser` constructor is still present). To get/set user-agent you can use: `$.ua.get()` / `$.ua.set(uastring)`.
Although written in vanilla js, this library will automatically detect if jQuery/Zepto is present and create `$.ua` object (with values based on its User-Agent) along with `window.UAParser` constructor. To get/set user-agent you can use: `$.ua.get()` / `$.ua.set(uastring)`.
```js
// In browser with default user-agent: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0':
// Say we are in a browser with default user-agent: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0':
// Do some tests
// Get the details
console.log($.ua.device); // {vendor: "HTC", model: "Evo Shift 4G", type: "mobile"}
console.log($.ua.os); // {name: "Android", version: "2.3.4"}
console.log($.ua.os.name); // "Android"
console.log($.ua.get()); // "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0"
// reset to custom user-agent
// Now lets try to reset to another custom user-agent
$.ua.set('Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; Xoom Build/HWI69) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13');
// Test again
@@ -270,54 +245,49 @@ console.log(parseInt($.ua.browser.version.split('.')[0], 10)); // 4
$('body').addClass('ua-browser-' + $.ua.browser.name + ' ua-devicetype-' + $.ua.device.type);
```
## Extending regex patterns
## Using Extension
* `UAParser([uastring,] extensions)`
Pass your own regexes to extend the limited matching rules.
```js
// Example:
var myOwnRegex = [[/(myownbrowser)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]];
var myParser = new UAParser({ browser: myOwnRegex });
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
console.log(myParser.setUA(uaString).getBrowser()); // {name: "MyOwnBrowser", version: "1.3"}
var myOwnListOfBrowsers = [
[/(mybrowser)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]
];
var myParser = new UAParser({ browser: myOwnListOfBrowsers });
var myUA = 'Mozilla/5.0 MyBrowser/1.3';
console.log(myParser.setUA(myUA).getBrowser()); // {name: "MyBrowser", version: "1.3"}
```
# Development
## Contribute
## 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://www.paypal.me/faisalman/"><img src="https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg" height="40"></a>
## Contributors
<a href="https://github.com/faisalman/ua-parser-js/graphs/contributors">
<img src="https://contrib.rocks/image?repo=faisalman/ua-parser-js" />
</a>
Made with [contributors-img](https://contrib.rocks).
## How To Contribute
* Fork and clone this repository
* Make some changes as required
* Write a unit test to showcase your feature
* Run the test suites to make sure the changes you made didn't break anything `$ npm run test`
* Commit and push to your own repository
* Submit a pull request to this repository under `develop` branch
* Profit? $$$
## Build
Build a minified & packed script
```sh
$ npm run build
```
# Donate
Do you use & like UAParser.js but you dont find a way to show some love? If yes, please consider donating to support this project. Otherwise, no worries, regardless of whether there is support or not, I will keep maintaining this project. Still, if you buy me a cup of coffee I would be more than happy though :)
[![Support via PayPal](https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg)](https://www.paypal.me/faisalman/)
* Write unit test to showcase its functionality
* Run the test suites to make sure it's not breaking anything `$ npm test`
* Submit a pull request under `develop` branch
# License
MIT License
Copyright (c) 2012-2019 Faisal Salman <<f@faisalman.com>>
Copyright (c) 2012-2021 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

File diff suppressed because it is too large Load Diff

View File

@@ -239,6 +239,16 @@
"major" : "16"
}
},
{
"desc" : "Coc Coc Browser",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/78.0.129 Chrome/72.0.3626.129 Safari/537.36",
"expect" :
{
"name" : "Coc Coc",
"version" : "78.0.129",
"major" : "78"
}
},
{
"desc" : "Dillo",
"ua" : "Dillo/2.2",
@@ -279,6 +289,16 @@
"major" : "1"
}
},
{
"desc" : "Flow",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) EkiohFlow/5.7.4.30559 Flow/5.7.4 (like Gecko Firefox/53.0 rv:53.0)",
"expect" :
{
"name" : "Flow",
"version" : "5.7.4",
"major" : "5"
}
},
{
"desc" : "Waterfox",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.2.2 Waterfox/55.2.2",
@@ -339,6 +359,16 @@
"major" : "undefined"
}
},
{
"desc" : "Instagram in-App Browser for iOS",
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Instagram 142.0.0.22.109 (iPhone12,5; iOS 14_1; en_US; en-US; scale=3.00; 1242x2688; 214888322) NW/1",
"expect" :
{
"name" : "Instagram",
"version" : "142.0.0.22.109",
"major" : "142"
}
},
{
"desc" : "Falkon",
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Falkon/3.0.0 Chrome/61.0.3163.140 Safari/537.36",
@@ -369,6 +399,16 @@
"major" : "15"
}
},
{
"desc" : "Firefox Reality",
"ua" : "Mozilla/5.0 (Android 7.1.2; Mobile VR; rv:65.0) Gecko/65.0 Firefox/65.0",
"expect" :
{
"name" : "Firefox Reality",
"version" : "65.0",
"major" : "65"
}
},
{
"desc" : "Firefox-based browser",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0 AppName/1.0",
@@ -1048,6 +1088,16 @@
"major": "6"
}
},
{
"desc": "WeChat on Android",
"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366 Weibo (iPhone8,2__weibo__8.9.3__iphone__os12.0)",
"expect":
{
"name": "weibo",
"version": "8.9.3",
"major": "8"
}
},
{
"desc" : "Vivaldi",
"ua" : "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Vivaldi/1.0.83.38 Safari/537.36",
@@ -1079,13 +1129,33 @@
}
},
{
"desc" : "Microsoft Edge",
"desc" : "Microsoft Edge 0.1",
"ua" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0",
"expect" :
{
"name" : "Edge",
"version" : "12.0",
"major" : "12"
"version" : "0.1",
"major" : "0"
}
},
{
"desc" : "Microsoft Edge 42",
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134",
"expect" :
{
"name" : "Edge",
"version" : "42",
"major" : "42"
}
},
{
"desc" : "Microsoft Edge 44",
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763",
"expect" :
{
"name" : "Edge",
"version" : "44",
"major" : "44"
}
},
{
@@ -1188,6 +1258,16 @@
"major" : "3"
}
},
{
"desc" : "WeChat Desktop for Windows Built-in Browser major version in 4",
"ua" : "mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/53.0.2785.116 safari/537.36 qbcore/4.0.1301.400 qqbrowser/9.0.2524.400 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" : "WeChat(Win) Desktop",
"version" : "4.0.1301.400",
"major" : "4"
}
},
{
"desc" : "GSA on iOS",
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) GSA/30.1.161623614 Mobile/14F89 Safari/602.1",
@@ -1263,5 +1343,15 @@
"version" : "2.6.90.14",
"major" : "2"
}
},
{
"desc" : "Electron",
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/1.41.0 Chrome/69.0.3497.128 Electron/4.2.7 Safari/537.36",
"expect" :
{
"name" : "Electron",
"version" : "4.2.7",
"major" : "4"
}
}
]

View File

@@ -40,7 +40,15 @@
}
},
{
"desc" : "ARMv6",
"desc" : "ARM",
"ua" : "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 635) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537",
"expect" :
{
"architecture" : "arm"
}
},
{
"desc" : "ARMv61",
"ua" : "Mozilla/5.0 (X11; U; Linux armv61; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1",
"expect" :
{
@@ -49,12 +57,52 @@
},
{
"desc" : "ARMv7",
"ua" : "Mozilla/5.0 (Linux ARMv7) WebKitGTK+/3.4.9 vimprobable2",
"expect" :
{
"architecture" : "arm"
}
},
{
"desc" : "ARMv7l",
"ua" : "Mozilla/5.0 (SMART-TV; X11; Linux armv7l) AppleWebKit/537.42 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/537.42",
"expect" :
{
"architecture" : "arm"
}
},
{
"desc" : "ARMv7l",
"ua" : "Mozilla/5.0 (X11; CrOS armv7l 9765.85.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.123 Safari/537.36",
"expect" :
{
"architecture" : "arm"
}
},
{
"desc" : "ARMEABI",
"ua" : "[FBAN/FB4A;FBAV/237.0.0.44.120;FBBV/170693408;FBDM/{density=1.75,width=720,height=1280};FBLC/en_US;FBRV/172067074;FBCR/ ;FBMF/samsung;FBBD/samsung;FBPN/com.facebook.katana;FBDV/SM-S367VL;FBSV/9;FBBK/1;FBOP/19;FBCA/armeabi-v7a:armeabi;]",
"expect" :
{
"architecture" : "arm"
}
},
{
"desc" : "ARMv8",
"ua" : "Mozilla/5.0 (X11; Linux armv8l; rv:45.0) Gecko/20100101 Firefox/45.0",
"expect" :
{
"architecture" : "arm64"
}
},
{
"desc" : "AARCH64",
"ua" : "Mozilla/5.0 (X11; CrOS aarch64 13310.93.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.133 Safari/537.36",
"expect" :
{
"architecture" : "arm64"
}
},
{
"desc" : "Pocket PC",
"ua" : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1",
@@ -95,6 +143,14 @@
"architecture" : "sparc"
}
},
{
"desc" : "sparc64",
"ua" : "ELinks (0.4.3; NetBSD 3.0.2PATCH sparc64; 141x19)",
"expect" :
{
"architecture" : "sparc64"
}
},
{
"desc" : "QuickTime",
"ua" : "QuickTime/7.5.6 (qtver=7.5.6;cpu=IA32;os=Mac 10.5.8)",
@@ -110,5 +166,13 @@
{
"architecture" : "amd64"
}
},
{
"desc" : "IRIX64",
"ua" : "Mozilla/4.8C-SGI [en] (X11; U; IRIX64 6.5 IP27",
"expect" :
{
"architecture" : "irix64"
}
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -17,6 +17,15 @@
"version" : "12.0"
}
},
{
"desc" : "Flow",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) EkiohFlow/5.7.4.30559 Flow/5.7.4 (like Gecko Firefox/53.0 rv:53.0)",
"expect" :
{
"name" : "Flow",
"version" : "5.7.4.30559"
}
},
{
"desc" : "Gecko",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:2.0b9pre) Gecko/20110111 Firefox/4.0b9pre",

View File

@@ -152,6 +152,15 @@
"version" : "10"
}
},
{
"desc" : "Tizen",
"ua" : "Mozilla/5.0 (SMART-TV; Linux; Tizen 2.3) AppleWebkit/538.1 (KHTML, like Gecko) SamsungBrowser/1.0 TV Safari/538.1",
"expect" :
{
"name" : "Tizen",
"version" : "2.3"
}
},
{
"desc" : "Tizen",
"ua" : "Mozilla/5.0 (Linux; Tizen 2.3; SAMSUNG SM-Z130H) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.3 Mobile Safari/537.3",
@@ -181,65 +190,83 @@
},
{
"desc" : "WebOS",
"ua" : "",
"ua" : "Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0",
"expect" :
{
"name" : "",
"version" : ""
"name" : "webOS",
"version" : "3.0.5"
}
},
{
"desc" : "Palm OS",
"ua" : "",
"desc" : "WebOS",
"ua" : "Mozilla/5.0 (webOS/1.4.5; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0",
"expect" :
{
"name" : "",
"version" : ""
"name" : "webOS",
"version" : "1.4.5"
}
},
{
"desc" : "QNX",
"ua" : "",
"ua" : "Mozilla/5.0 (Photon; U; QNX x86pc; en-US; rv:1.8.1.20) Gecko/20090127 BonEcho/2.0.0.20",
"expect" :
{
"name" : "",
"version" : ""
"name" : "QNX",
"version" : "x86pc"
}
},
{
"desc" : "Bada",
"ua" : "",
"ua" : "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5253/S5253DDKC1; U; Bada/1.0; en-us) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Bada",
"version" : "1.0"
}
},
{
"desc" : "RIM Tablet OS",
"ua" : "",
"ua" : "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+",
"expect" :
{
"name" : "",
"version" : ""
"name" : "RIM Tablet OS",
"version" : "2.1.0"
}
},
{
"desc" : "MeeGo",
"ua" : "",
"ua" : "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
"expect" :
{
"name" : "",
"version" : ""
"name" : "MeeGo",
"version" : "undefined"
}
},
{
"desc" : "Symbian",
"ua" : "",
"ua" : "Nokia5250/10.0.011 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525 3gpp-gba",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Symbian",
"version" : "9.4"
}
},
{
"desc" : "Symbian",
"ua" : "Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/024.001; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba",
"expect" :
{
"name" : "Symbian",
"version" : "5.2"
}
},
{
"desc" : "Series40",
"ua" : "Mozilla/5.0 (Series40; Nokia2055/03.20; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.2.0.0.34",
"expect" :
{
"name" : "Series40",
"version" : "undefined"
}
},
{
@@ -261,21 +288,12 @@
}
},
{
"desc" : "Nintendo",
"ua" : "",
"desc" : "Nintendo Switch",
"ua" : "Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet) AppleWebKit/606.4 (KHTML, like Gecko) NF/6.0.1.15.4 NintendoBrowser/5.1.0.20393",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "PlayStation",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Nintendo",
"version" : "Switch"
}
},
{
@@ -288,21 +306,66 @@
}
},
{
"desc" : "Mint",
"ua" : "",
"desc" : "Xbox 360",
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox 360) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Xbox",
"version" : "360"
}
},
{
"desc" : "Joli",
"ua" : "",
"desc" : "Xbox One",
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox One; WebView/3.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Xbox",
"version" : "One"
}
},
{
"desc" : "Xbox X",
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/20.02",
"expect" :
{
"name" : "Xbox",
"version" : "X"
}
},
{
"desc" : "Xbox Series X",
"ua" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox Series X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/20.02 ",
"expect" :
{
"name" : "Xbox",
"version" : "Series X"
}
},
{
"desc" : "Mint",
"ua" : "Opera/9.80 (X11; Linux x86_64; Edition Linux Mint) Presto/2.12.388 Version/12.16",
"expect" :
{
"name" : "Mint",
"version" : "undefined"
}
},
{
"desc" : "Mint",
"ua" : "Opera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1",
"expect" :
{
"name" : "Mint",
"version" : "undefined"
}
},
{
"desc" : "Mint",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.4",
"expect" :
{
"name" : "Mint",
"version" : "6"
}
},
{
@@ -324,39 +387,120 @@
}
},
{
"desc" : "Debian",
"ua" : "",
"desc" : "Kubuntu",
"ua" : "Mozilla/5.0 (compatible; Konqueror/4.4; Linux 2.6.32-22-generic; X11; en_US) KHTML/4.4.3 (like Gecko) Kubuntu",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Kubuntu",
"version" : "undefined"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.7 (like Gecko) (Debian)",
"expect" :
{
"name" : "Debian",
"version" : "undefined"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; Debian GNU/Linux 8.1 (jessie)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.3 Safari/537.36",
"expect" :
{
"name" : "Debian",
"version" : "8.1"
}
},
{
"desc" : "Debian",
"ua" : "ELinks/0.12~pre5-4 (textmode; Debian; Linux 3.2.0-4-amd64 x86_64 192x47-2)",
"expect" :
{
"name" : "Debian",
"version" : "undefined"
}
},
{
"desc" : "Debian",
"ua" : "w3m/0.5.3+debian-19",
"expect" :
{
"name" : "debian",
"version" : "19"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092814 (Debian-3.0.1-1)",
"expect" :
{
"name" : "Debian",
"version" : "3.0.1-1"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.24.4; X11) KHTML/3.5.9 (like Gecko) (Debian package 4:3.5.9.dfsg.1-2+b1)",
"expect" :
{
"name" : "Debian",
"version" : "undefined"
}
},
{
"desc" : "OpenSUSE",
"ua" : "",
"ua" : "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110420 SUSE/3.6.17-0.2.1 Firefox/3.6.17",
"expect" :
{
"name" : "",
"version" : ""
"name" : "SUSE",
"version" : "3.6.17-0.2.1"
}
},
{
"desc" : "Gentoo",
"ua" : "",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 (Gentoo) Galeon/2.0.6",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Gentoo",
"version" : "undefined"
}
},
{
"desc" : "Gentoo",
"ua" : "Xombrero (X11; U; Gentoo Linux amd64; en-US) Webkit/2.8.5",
"expect" :
{
"name" : "Gentoo",
"version" : "amd64"
}
},
{
"desc" : "Gentoo",
"ua" : "Xombrero/1.6.4 (Linux amd64; en; Gentoo)",
"expect" :
{
"name" : "Gentoo",
"version" : "undefined"
}
},
{
"desc" : "Gentoo",
"ua" : "Links (2.8; Linux 3.17.2-gentoo-x86 i686; GNU C 4.8.2; x)",
"expect" :
{
"name" : "gentoo",
"version" : "x86"
}
},
{
"desc" : "Arch",
"ua" : "",
"ua" : "Uzbl (Webkit 1.1.10) (Arch Linux)",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Arch",
"version" : "undefined"
}
},
{
@@ -370,83 +514,38 @@
},
{
"desc" : "Fedora",
"ua" : "",
"ua" : "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Fedora",
"version" : "undefined"
}
},
{
"desc" : "Fedora",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:2.0) Gecko/20110404 Fedora/16-dev Firefox/4.0",
"expect" :
{
"name" : "Fedora",
"version" : "16-dev"
}
},
{
"desc" : "Fedora",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4",
"expect" :
{
"name" : "Fedora",
"version" : "3.0.4-1.fc10"
}
},
{
"desc" : "Mandriva",
"ua" : "",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.22) Gecko/20110907 Mandriva Linux/1.9.2.22-0.1mdv2010.2 (2010.2) Firefox/3.6.22",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "CentOS",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "PCLinuxOS",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "RedHat",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "Zenwalk",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "Hurd",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "Linux",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "GNU",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
"name" : "Mandriva",
"version" : "1.9.2.22-0.1mdv2010.2"
}
},
{
@@ -478,29 +577,29 @@
},
{
"desc" : "FreeBSD",
"ua" : "",
"ua" : "Mozilla/5.0 (X11; U; FreeBSD x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16",
"expect" :
{
"name" : "",
"version" : ""
"name" : "FreeBSD",
"version" : "undefined"
}
},
{
"desc" : "OpenBSD",
"ua" : "",
"ua" : "Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.9.1) Gecko/20090702 Firefox/3.5",
"expect" :
{
"name" : "",
"version" : ""
"name" : "OpenBSD",
"version" : "undefined"
}
},
{
"desc" : "NetBSD",
"ua" : "",
"ua" : "ELinks (0.4.3; NetBSD 3.0.2PATCH sparc64; 141x19)",
"expect" :
{
"name" : "",
"version" : ""
"name" : "NetBSD",
"version" : "3.0.2PATCH"
}
},
{
@@ -566,6 +665,60 @@
"version" : "2.5"
}
},
{
"desc" : "iTunes Windows Vista",
"ua" : "iTunes/10.7 (Windows; Microsoft Windows Vista Home Premium Edition Service Pack 1 (Build 6001)) AppleWebKit/536.26.9",
"expect" :
{
"name" : "Windows",
"version" : "Vista"
}
},
{
"desc" : "iOS BE App",
"ua" : "APP-BE Test/1.0 (iPad; Apple; CPU iPhone OS 7_0_2 like Mac OS X)",
"expect" :
{
"name" : "iOS",
"version" : "7.0.2"
}
},
{
"desc" : "KTB-Nexus 5",
"ua" : "APP-My App/1.0 (Linux; Android 4.2.1; Nexus 5 Build/JOP40D)",
"expect" :
{
"name" : "Android",
"version" : "4.2.1"
}
},
{
"desc" : "Solaris",
"ua" : "NCSA Mosaic/1.0 (X11;SunOS 4.1.4 sun4m)",
"expect" :
{
"name" : "Solaris",
"version" : "4.1.4"
}
},
{
"desc" : "Raspbian",
"ua" : "Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Raspbian Chromium/72.0.3626.121 HeadlessChrome/72.0.3626.121 Safari/537.36",
"expect" :
{
"name" : "Raspbian",
"version" : "undefined"
}
},
{
"desc" : "Raspbian",
"ua" : "Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/538.15 (KHTML, like Gecko) Version/8.0 Safari/538.15 Raspbian/9.0 (1:3.8.2.0-0rpi28) Epiphany/3.8.2",
"expect" :
{
"name" : "Raspbian",
"version" : "9.0"
}
},
{
"desc" : "AIX",
"ua" : "",
@@ -639,16 +792,7 @@
}
},
{
"desc" : "iTunes Windows Vista",
"ua" : "iTunes/10.7 (Windows; Microsoft Windows Vista Home Premium Edition Service Pack 1 (Build 6001)) AppleWebKit/536.26.9",
"expect" :
{
"name" : "Windows",
"version" : "Vista"
}
},
{
"desc" : "",
"desc" : "Joli",
"ua" : "",
"expect" :
{
@@ -657,21 +801,75 @@
}
},
{
"desc" : "iOS BE App",
"ua" : "APP-BE Test/1.0 (iPad; Apple; CPU iPhone OS 7_0_2 like Mac OS X)",
"desc" : "CentOS",
"ua" : "",
"expect" :
{
"name" : "iOS",
"version" : "7.0.2"
"name" : "",
"version" : ""
}
},
{
"desc" : "KTB-Nexus 5",
"ua" : "APP-My App/1.0 (Linux; Android 4.2.1; Nexus 5 Build/JOP40D)",
"desc" : "PCLinuxOS",
"ua" : "",
"expect" :
{
"name" : "Android",
"version" : "4.2.1"
"name" : "",
"version" : ""
}
},
{
"desc" : "RedHat",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "Zenwalk",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "Hurd",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "Linux",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "GNU",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
},
{
"desc" : "Palm OS",
"ua" : "",
"expect" :
{
"name" : "",
"version" : ""
}
}
]

File diff suppressed because one or more lines are too long