Compare commits

...

58 Commits

Author SHA1 Message Date
Faisal Salman
29d5e43342 Securing the 1.x version (issue #536) 2021-10-22 23:25:44 +07:00
Faisal Salman
051aa5d284 Securing the 0.8.x version (issue #536) 2021-10-22 23:23:12 +07:00
Faisal Salman
139fbc321a Securing the 0.7.x version (issue #536) 2021-10-22 23:14:37 +07:00
Faisal Salman
8fe448fddf Merge pull request #528 from jparismorgan/oculus
Add Oculus Quest and Oculus Quest 2, as well as another test for Oculus Browser
2021-10-06 11:14:42 +07:00
Paris Morgan
343d584f8f change to single line regex 2021-10-04 09:06:00 -07:00
Faisal Salman
ef54fd35d6 Merge pull request #526 from jparismorgan/sony
Add Sony Xperia 1ii
2021-09-24 00:22:42 +07:00
Paris Morgan
79535f5d61 cleanup 2021-09-21 15:40:47 -07:00
Paris Morgan
ee743946e8 cleanup 2021-09-21 15:40:04 -07:00
Paris Morgan
f57bd9523d Oculus devices 2021-09-21 15:31:02 -07:00
Paris Morgan
ffc03acd64 Add different oculus browser 2021-09-21 12:31:16 -07:00
Paris Morgan
b542df155a Sony Xperia 1ii 2021-09-21 11:01:28 -07:00
Faisal Salman
336ce2b950 Improve regex efficiency when trimming long ua string
https://blog.stevenlevithan.com/archives/faster-trim-javascript
2021-09-17 23:24:42 +07:00
Faisal Salman
20a428c351 Merge pull request #523 from zidingz/patch-1
Create SECURITY.md
2021-09-16 23:09:07 +07:00
Ziding Zhang
47c310e203 Create SECURITY.md
A simple instruction for security researchers.
2021-09-16 16:11:51 +01:00
Faisal Salman
299283c436 Fix #506 - add test for Huawei ART-L29 2021-07-22 20:31:35 +07:00
Faisal Salman
39e8d4af03 Fix #500 Sharp devices misjudged as Huawei devices 2021-06-15 12:49:19 +07:00
Faisal Salman
03c915277a Add new OS: Android-x86, Deepin, elementary OS, GhostBSD, Linspire, Manjaro, Sabayon
User-Agent source: whatismybrowser.com
2021-04-24 23:07:18 +07:00
Faisal Salman
1e7b6d2e8b Improve device detection: LG Android TV 2021-04-24 21:50:18 +07:00
Faisal Salman
e5e13adc81 Improve CPU detection for ARM64 2021-04-24 21:15:16 +07:00
Faisal Salman
837042a3e8 Improve device detection: Huawei, Xiaomi, Realme, LG, OnePlus, ASUS, ZTE, Fairphone 2021-04-22 07:00:28 +07:00
Faisal Salman
7b3aa9fc15 ES3 compat-fix: remove trailing comma 2021-04-18 14:10:56 +07:00
Faisal Salman
8e55e00177 Replace \s with space, saving ~0,3KB 2021-04-16 23:02:11 +07:00
Faisal Salman
ca644313d6 Remove oldEdge map 2021-04-16 12:51:45 +07:00
Faisal Salman
ca83d4c9c3 Refine some OS detection
Source:
- https://www.zytrax.com/tech/web/browser_ids.htm
- https://developers.whatismybrowser.com/useragents/explore/operating_system_name/
2021-04-16 07:11:23 +07:00
Faisal Salman
9bed2b1437 Add new device vendor: Roku
Source: https://github.com/WhichBrowser/Parser-PHP/blob/master/tests/data/television/roku.yaml
2021-04-16 05:17:04 +07:00
Faisal Salman
3792900410 Add new browsers: Obigo, UP.Browser 2021-04-12 14:02:10 +07:00
Faisal Salman
c05e4e837f Add new OS: HP-UX 2021-04-12 13:11:25 +07:00
Faisal Salman
c53a2a1f72 Improve os detection: Windows Mobile without version 2021-04-12 12:55:37 +07:00
Faisal Salman
559ecaacb6 Improve browser detection: Netscape with version 2021-04-12 12:28:24 +07:00
Faisal Salman
f715023f47 Improve device detection: categorize PDA as mobile 2021-04-12 12:24:34 +07:00
Faisal Salman
36b2275add Improve detection rule for Mac on PowerPC 2021-04-12 12:19:01 +07:00
Faisal Salman
75620c7b6c Merge branch 'master' into develop 2021-04-12 12:12:10 +07:00
Faisal Salman
1d3c98a10c Revert breaking fix #279 and release as 0.7.28 2021-04-10 21:39:40 +07:00
Faisal Salman
c39590b673 Test for Firefox UAs, add new browser: Klar, add new OS: Maemo
Source: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox
2021-04-08 23:14:10 +07:00
Faisal Salman
9200e53787 Update readme: use https for demo link 2021-04-08 21:06:52 +07:00
Faisal Salman
6c671dd246 Refactor code: saving bytes towards 15KB minified 2021-04-08 20:44:13 +07:00
Faisal Salman
535f11bd24 Delete redundant code 2021-04-07 21:42:13 +07:00
Faisal Salman
642c0399e8 Fix #492 LG TV WebOS detection 2021-04-06 14:56:23 +07:00
Faisal Salman
3edacddb24 Merge branch 'master' into develop 2021-04-05 23:32:24 +07:00
Faisal Salman
acc0b91ff5 Update contributor list 2021-04-05 23:32:15 +07:00
Faisal Salman
f726dcd1ae Merge branch 'master' into develop 2021-04-05 13:24:46 +07:00
Faisal Salman
383ca587ef More test for tablet devices 2021-04-04 16:32:30 +07:00
Faisal Salman
7c8aa435b2 Minor rearrangement 2021-04-04 14:37:13 +07:00
Faisal Salman
09aa9105dc Add new device & browser: Tesla 2021-04-04 14:12:40 +07:00
Faisal Salman
557cc2198d More test for latest phones with unique form factor (fold/flip/qwerty/swivel) 2021-04-04 13:12:55 +07:00
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
15 changed files with 2072 additions and 837 deletions

3
.jshintrc Normal file
View File

@@ -0,0 +1,3 @@
{
"esversion": 3
}

View File

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

13
dist/ua-parser.min.js vendored

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 @@
Package.describe({ Package.describe({
name: 'faisalman:ua-parser-js', name: 'faisalman:ua-parser-js',
version: '0.7.26', version: '1.0.1',
summary: 'Lightweight JavaScript-based user-agent string parser', summary: 'Lightweight JavaScript-based user-agent string parser',
git: 'https://github.com/faisalman/ua-parser-js.git', git: 'https://github.com/faisalman/ua-parser-js.git',
documentation: 'readme.md' documentation: 'readme.md'

View File

@@ -1,9 +1,9 @@
{ {
"title": "UAParser.js", "title": "UAParser.js",
"name": "ua-parser-js", "name": "ua-parser-js",
"version": "0.7.26", "version": "1.0.1",
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)", "author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
"description": "Lightweight JavaScript-based user-agent string parser", "description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment",
"keywords": [ "keywords": [
"user-agent", "user-agent",
"parser", "parser",
@@ -20,86 +20,129 @@
"Aamir Poonawalla <aamir@urx.com>", "Aamir Poonawalla <aamir@urx.com>",
"Admas <mollases@users.noreply.github.com>", "Admas <mollases@users.noreply.github.com>",
"algenon <m@antonz.ru>", "algenon <m@antonz.ru>",
"Alvin Portillo <portilloalvin@gmail.com>", "Alvin Portillo <alvin@8thwall.com>",
"Amumu <yoyo837@hotmail.com>",
"Andrea Vaghi <andrea.vaghi@jobrapido.com>", "Andrea Vaghi <andrea.vaghi@jobrapido.com>",
"Anton Zhiyanov <m@antonz.ru>", "Anton Zhiyanov <m@antonz.ru>",
"Arturo Mejia <amejia@blim.com>", "Arturo Mejia <amejia@blim.com>",
"Arun Rama Reddy <arunramareddy@gmail.com>", "Arun Rama Reddy <arunramareddy@gmail.com>",
"Austin Pray <austin@austinpray.com>", "Austin Pray <austin@austinpray.com>",
"Bendeguz <symunona@gmail.com>",
"Benjamin Bertrand <bertrand.design@gmail.com>", "Benjamin Bertrand <bertrand.design@gmail.com>",
"Benjamin Urban <benjamin.urban@sueddeutsche.de>", "Benjamin Urban <benjamin.urban@sueddeutsche.de>",
"boneyao <admin@boneyao.com>", "boneyao <admin@boneyao.com>",
"Carl C Von Lewin <carlchristianlewin@gmail.com>", "Carl C Von Lewin <carlchristianlewin@gmail.com>",
"CESAR RAMOS <c@imagenproactiva.com>", "CESAR RAMOS <c@imagenproactiva.com>",
"Chad Killingsworth <ckillingsworth@jackhenry.com>",
"Christopher De Cairos <chris.decairos@gmail.com>", "Christopher De Cairos <chris.decairos@gmail.com>",
"Cyrille David <cyrille@qonto.eu>",
"Dario Vladovic <d.vladimyr@gmail.com>", "Dario Vladovic <d.vladimyr@gmail.com>",
"David Annez <david.annez@gmail.com>",
"Davit Barbakadze <jayarjo@gmail.com>", "Davit Barbakadze <jayarjo@gmail.com>",
"ddivernois <david-emmanuel.divernois@amadeus.com>", "ddivernois <david-emmanuel.divernois@amadeus.com>",
"Deliaz <D3liaz@gmail.com>",
"Demis Palma <demis.palma@gmail.com>", "Demis Palma <demis.palma@gmail.com>",
"dhoko <aurelien@protonmail.com>", "dhoko <aurelien@protonmail.com>",
"dianhe <dianhe@webank.com>", "dianhe <dianhe@webank.com>",
"dineshks1 <dineshks1@d.kumar44@outlook.com>",
"Dmitry Tyschenko <dtyschenko@gmail.com>", "Dmitry Tyschenko <dtyschenko@gmail.com>",
"Douglas Li <doug@knotch.it>", "Douglas Li <doug@knotch.it>",
"Dumitru Uzun <contact@duzun.me>", "Dumitru Uzun <contact@duzun.me>",
"Dustin <duburns@fanatics.com>",
"Elchin Valiyev <elchin.valiyev@autodesk.com>",
"Emil Hesslow <hesslow@gmail.com>",
"Eric Redon <eric.redon@coox.org>",
"Eric Schrenker <eric.schrenker@gmail.com>", "Eric Schrenker <eric.schrenker@gmail.com>",
"Erik Hesselink <hesselink@gmail.com>", "Erik Hesselink <hesselink@gmail.com>",
"Fabian Becker <halfdan@xnorfz.de>", "Fabian Becker <halfdan@xnorfz.de>",
"Faisal Salman <fyzlman@gmail.com>", "Faisal Salman <f@faisalman.com>",
"Frédéric Camblor <fcamblor@gmail.com>", "Frédéric Camblor <fcamblor@gmail.com>",
"Frederik Ring <frederik.ring@gmail.com>",
"Gerald Host <me@jacobford.co.uk>",
"Germán M. Bravo <german.mb@gmail.com>", "Germán M. Bravo <german.mb@gmail.com>",
"Grigory Dmitrenko <grigory@snsk.ru>", "Grigory Dmitrenko <grigory@snsk.ru>",
"gulpin <gulping.gulpin@gmail.com>",
"Hendrik Helwich <h.helwich@iplabs.de>", "Hendrik Helwich <h.helwich@iplabs.de>",
"Hermann Ebert <ebbmo@HE.local>", "Hermann Ebert <ebbmo@HE.local>",
"hr6r <hedian@gmail.com>",
"Igor Topal <i.topal@smartweb.com.ua>",
"Ildar Kamalov <i.kamalov@adguard.com>",
"insanehong <insane.hong@navercorp.com>",
"jackpoll <jackpoll123456@gmail.com>", "jackpoll <jackpoll123456@gmail.com>",
"Jake Mc <startswithaj@users.noreply.github.com>", "Jake Mc <startswithaj@users.noreply.github.com>",
"JBYoshi <12983479+JBYoshi@users.noreply.github.com>",
"Joey Parrish <joeyparrish@google.com>",
"John Tantalo <john.tantalo@gmail.com>", "John Tantalo <john.tantalo@gmail.com>",
"John Yanarella <jmy@codecatalyst.com>", "John Yanarella <jmy@codecatalyst.com>",
"Jon Buckley <jon@jbuckley.ca>", "Jon Buckley <jon@jbuckley.ca>",
"Josh Goldberg <joshuakgoldberg@outlook.com>",
"Junki-Ishida <junki_ishida@dwango.co.jp>",
"Kendall Buchanan <kendall@kendagriff.com>", "Kendall Buchanan <kendall@kendagriff.com>",
"Lee Treveil <leetreveil@gmail.com>", "Lee Treveil <leetreveil@gmail.com>",
"leonardo <leofiore@libero.it>", "leonardo <leofiore@libero.it>",
"Levente Balogh <balogh.levente.hu@gmail.com>", "Levente Balogh <balogh.levente.hu@gmail.com>",
"Liam Quinn <lquinn@blackberry.com>", "Liam Quinn <lquinn@blackberry.com>",
"Lithin <lithin@webklipper.com>", "Lithin <lithin@webklipper.com>",
"ll-syber <670159357@qq.com>",
"Loris Guignard <loris.guignard@gmail.com>", "Loris Guignard <loris.guignard@gmail.com>",
"Lukas Drgon <lukas.drgon@gmail.com>", "Lukas Drgon <lukas.drgon@gmail.com>",
"Lukas Eipert <leipert@users.noreply.github.com>", "Lukas Eipert <leipert@users.noreply.github.com>",
"Malash <i@malash.me>", "Malash <i@malash.me>",
"Martynas <martynas@firmfirm.co>", "Martynas <martynas@firmfirm.co>",
"Masahiko Sato <masasato@yahoo-corp.jp>",
"Matt Brophy <matt@brophy.org>", "Matt Brophy <matt@brophy.org>",
"Max Maurer <maxemanuel.maurer@gmail.com>", "Matthew Origer <karatecowboy@gmail.com>",
"Maximilian Haupt <mail@maximilianhaupt.com>", "Maximilian Haupt <mail@maximilianhaupt.com>",
"Max Maurer <maxemanuel.maurer@gmail.com>",
"Max Nordlund <max.nordlund@gmail.com>",
"Michael Hess <mhess@connectify.me>", "Michael Hess <mhess@connectify.me>",
"MimyyK <michele.marais@hakisa.com>",
"naoh <naoh.cs03g@nctu.edu.tw>", "naoh <naoh.cs03g@nctu.edu.tw>",
"Nicholas Ionata <nionata@ufl.edu>",
"Nikhil Motiani <nikhil.motiani@outlook.com>",
"Nik Rolls <nik@rolls.cc>", "Nik Rolls <nik@rolls.cc>",
"Nikhil Motiani <nikhil.m@247-inc.com>", "nionata <n.ionata129@gmail.com>",
"niris <nirisix@gmail.com>", "niris <nirisix@gmail.com>",
"Nobuo Okada <nookada@yahoo-corp.jp>", "Nobuo Okada <nookada@yahoo-corp.jp>",
"o.drapeza <o.drapeza@tinkoff.ru>",
"otakuSiD <otakusid@gmail.com>", "otakuSiD <otakusid@gmail.com>",
"patrick-nurt <github@pereira.dk>",
"Pavel Studeny <studeny@avast.com>",
"Peter Dave Hello <PeterDaveHello@users.noreply.github.com>", "Peter Dave Hello <PeterDaveHello@users.noreply.github.com>",
"philippsimon <github@philippsimon.de>", "philippsimon <github@philippsimon.de>",
"Pieter Hendrickx <pieter.hendrickx@belfius.be>", "Pieter Hendrickx <pieter.hendrickx@belfius.be>",
"Piper Chester <piperchester@gmail.com>", "Piper Chester <piperchester@gmail.com>",
"Queen Vinyl Darkscratch <vinyldarkscratch@gmail.com>",
"Raine Makelainen <raine.makelainen@jolla.com>",
"Raman Savaryn <homeneartheocean@gmail.com>",
"Robert Tod <robert@qubit.com>", "Robert Tod <robert@qubit.com>",
"roman.savarin <roman.savarin@skywindgroup.com>",
"Ron Korland <ron@testim.io>", "Ron Korland <ron@testim.io>",
"Ross Noble <rosshnoble@gmail.com>", "Ross Noble <rosshnoble@gmail.com>",
"ruicong <466403866@qq.com>",
"Sandro Sonntag <sandro.sonntag@adorsys.de>", "Sandro Sonntag <sandro.sonntag@adorsys.de>",
"sgautrea <shanegautreau@gmail.com>", "sgautrea <shanegautreau@gmail.com>",
"Shane Gautreau <sgautrea@opentext.com>", "Shane Gautreau <sgautrea@opentext.com>",
"Shane Thacker <shane@steadymade.com>", "Shane Thacker <shane@steadymade.com>",
"shchotse <topal@mail.ua>", "Shreedhar <shreedhar@uber.com>",
"Simon Eisenmann <simon@longsleep.org>", "Simon Eisenmann <simon@longsleep.org>",
"Simon Lang <me@simonlang.org>", "Simon Lang <me@simonlang.org>",
"Stiekel <histkc@gmail.com>", "Stiekel <histkc@gmail.com>",
"sUP <dani3l@gmail.com>",
"Sylvain Gizard <sylvain.gizard@gmail.com>", "Sylvain Gizard <sylvain.gizard@gmail.com>",
"szchenghuang <szchenghuang@gmail.com>", "szchenghuang <szchenghuang@gmail.com>",
"Tanguy Krotoff <tkrotoff@gmail.com>",
"Tony Tomarchio <tony@tomarchio.cc>",
"Ulrich Schmidt <u.schmidt@velian.de>",
"Vadim Kurachevsky <vadim@hmvs.org>", "Vadim Kurachevsky <vadim@hmvs.org>",
"Yılmaz <yilmazdemir36@gmail.com>",
"yuanyang <work_yuanyang@163.com>",
"Yun Young-jin <yupmin@yupmin-office-macmini.local>", "Yun Young-jin <yupmin@yupmin-office-macmini.local>",
"Insanehong <insae.hong@navercorp.com>" "Zach Bjornson <zbbjornson@gmail.com>"
], ],
"main": "src/ua-parser.js", "main": "src/ua-parser.js",
"scripts": { "scripts": {
"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", "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", "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", "test-ci": "jshint src/ua-parser.js && mocha -R spec test/test.js",
"verup": "node ./node_modules/verup", "verup": "node ./node_modules/verup",

View File

@@ -15,7 +15,7 @@
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). 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>> * Author : Faisal Salman <<f@faisalman.com>>
* Demo : http://faisalman.github.io/ua-parser-js * Demo : https://faisalman.github.io/ua-parser-js
* Source : https://github.com/faisalman/ua-parser-js * Source : https://github.com/faisalman/ua-parser-js
# Documentation # Documentation
@@ -39,16 +39,16 @@ JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model fro
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera, BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
Chrome Headless, Chrome WebView, Chrome, Chromium, Comodo Dragon, Dillo, Chrome Headless, Chrome WebView, Chrome, Chromium, Comodo Dragon, Dillo,
Dolphin, Doris, Edge, Electron, Epiphany, Facebook, Falkon, Fennec, Firebird, Dolphin, Doris, Edge, Electron, Epiphany, Facebook, Falkon, Fennec, Firebird,
Firefox, Flock, GSA, GoBrowser, ICE Browser, IE, IEMobile, IceApe, IceCat, Firefox [Reality], Flock, Flow, GSA, GoBrowser, ICE Browser, IE, IEMobile, IceApe,
IceDragon, Iceape, Iceweasel, Instagram, Iridium, Iron, Jasmine, K-Meleon, IceCat, IceDragon, Iceweasel, Instagram, Iridium, Iron, Jasmine, K-Meleon,
Kindle, Konqueror, LBBROWSER, Line, Links, Lunascape, Lynx, MIUI Browser, Kindle, Klar, Konqueror, LBBROWSER, Line, Links, Lunascape, Lynx, MIUI Browser,
Maemo Browser, Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic, Maemo Browser, Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic,
Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, Oculus Browser, Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, Obigo, Oculus Browser,
OmniWeb, Opera Coast, Opera Mini, Opera Mobi, Opera Tablet, Opera, PaleMoon, OmniWeb, Opera Coast, Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix,
PhantomJS, Phoenix, Polaris, Puffin, QQ, QQBrowser, QQBrowserLite, Quark, Polaris, Puffin, QQ, QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari,
QupZilla, RockMelt, Safari, Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim,
Skyfire, Sleipnir, Slim, SlimBrowser, Swiftfox, Tizen Browser, UCBrowser, SlimBrowser, Swiftfox, Tesla, Tizen Browser, UCBrowser, UP.Browser, Vivaldi,
Vivaldi, Waterfox, WeChat, Weibo, Yandex, baidu, iCab, w3m, Whale Browser... Waterfox, WeChat, Weibo, Yandex, baidu, iCab, w3m, Whale Browser...
# 'browser.version' determined dynamically # 'browser.version' determined dynamically
``` ```
@@ -62,10 +62,10 @@ console, mobile, tablet, smarttv, wearable, embedded
# Possible 'device.vendor': # Possible 'device.vendor':
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell, Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
Essential, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG, Meizu, Essential, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Jolla, Lenovo, LG,
Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus, OPPO, Ouya, Meizu, Microsoft, Motorola, Nexian, Nintendo, Nokia, Nvidia, OnePlus, OPPO, Ouya,
Palm, Panasonic, Pebble, Polytron, Realme, RIM, Samsung, Sharp, Siemens, Palm, Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp, Siemens,
Sony[Ericsson], Sprint, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ... Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
# 'device.model' determined dynamically # 'device.model' determined dynamically
``` ```
@@ -75,7 +75,7 @@ Sony[Ericsson], Sprint, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
```sh ```sh
# Possible 'engine.name' # 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 NetSurf, Presto, Tasman, Trident, w3m, WebKit
# 'engine.version' determined dynamically # 'engine.version' determined dynamically
@@ -86,13 +86,13 @@ NetSurf, Presto, Tasman, Trident, w3m, WebKit
```sh ```sh
# Possible 'os.name' # Possible 'os.name'
AIX, Amiga OS, Android, Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS, AIX, Amiga OS, Android[-x86], Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,
Contiki, Fedora, Firefox OS, FreeBSD, Debian, DragonFly, Fuchsia, Gentoo, GNU, Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS,
Haiku, Hurd, iOS, Joli, KaiOS, Linpus, Linux, Mac OS, Mageia, Mandriva, MeeGo, Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HP-UX, Hurd, iOS, Joli, KaiOS, Linpus, Linspire,
Minix, Mint, Morph OS, NetBSD, Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD, Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix, Mint, Morph OS, NetBSD,
PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS, RISC OS, Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX,
Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix, Raspbian, RedHat, RIM Tablet OS, RISC OS, Sabayon, Sailfish, Series40, Slackware, Solaris,
VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ... SUSE, Symbian, Tizen, Ubuntu, Unix, VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk, ...
# 'os.version' determined dynamically # 'os.version' determined dynamically
``` ```

5
security.md Normal file
View File

@@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Please report security issues to `f@faisalman.com`

File diff suppressed because it is too large Load Diff

View File

@@ -159,6 +159,16 @@
"major" : "2" "major" : "2"
} }
}, },
{
"desc" : "Camino on Mac",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1",
"expect" :
{
"name" : "Camino",
"version" : "2.2.1",
"major" : "2"
}
},
{ {
"desc" : "Chimera", "desc" : "Chimera",
"ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-PL; rv:1.0.1) Gecko/20021111 Chimera/0.6", "ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-PL; rv:1.0.1) Gecko/20021111 Chimera/0.6",
@@ -289,6 +299,16 @@
"major" : "1" "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", "desc" : "Waterfox",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.2.2 Waterfox/55.2.2", "ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.2.2 Waterfox/55.2.2",
@@ -389,6 +409,16 @@
"major" : "15" "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", "desc" : "Firefox-based browser",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0 AppName/1.0", "ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0 AppName/1.0",
@@ -409,6 +439,16 @@
"major" : "1" "major" : "1"
} }
}, },
{
"desc" : "Firefox for Maemo (Nokia N900)",
"ua" : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1",
"expect" :
{
"name" : "Fennec",
"version" : "10.0.1",
"major" : "10"
}
},
{ {
"desc": "Firefox Focus", "desc": "Firefox Focus",
"ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/6.1.1 Chrome/68.0.3440.91 Mobile Safari/537.36", "ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/6.1.1 Chrome/68.0.3440.91 Mobile Safari/537.36",
@@ -708,6 +748,16 @@
"major" : "8" "major" : "8"
} }
}, },
{
"desc" : "Netscape 6",
"ua" : "Mozilla/5.0 (Windows; U; Win95; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1",
"expect" :
{
"name" : "Netscape",
"version" : "6.1",
"major" : "6"
}
},
{ {
"desc" : "Nokia Browser", "desc" : "Nokia Browser",
"ua" : "Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/025.007; 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", "ua" : "Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/025.007; 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",
@@ -718,6 +768,26 @@
"major" : "7" "major" : "7"
} }
}, },
{
"desc" : "Obigo",
"ua" : "LG-GS290/V100 Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1",
"expect" :
{
"name" : "Obigo",
"version" : "WAP2.0",
"major" : "2"
}
},
{
"desc" : "Obigo",
"ua" : "LG/KU990i/v10a Browser/Obigo-Q05A/3.6 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1",
"expect" :
{
"name" : "Obigo",
"version" : "Q05A",
"major" : "05"
}
},
{ {
"desc" : "Oculus Browser", "desc" : "Oculus Browser",
"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", "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",
@@ -728,6 +798,16 @@
"major" : "3" "major" : "3"
} }
}, },
{
"desc" : "Oculus Browser",
"ua" : "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36",
"expect" :
{
"name" : "Oculus Browser",
"version" : "15.0.0.0.22.280317669",
"major" : "15"
}
},
{ {
"desc" : "OmniWeb", "desc" : "OmniWeb",
"ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.48", "ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.48",
@@ -938,6 +1018,16 @@
"major" : "2" "major" : "2"
} }
}, },
{
"desc" : "SeaMonkey on Mac",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1",
"expect" :
{
"name" : "SeaMonkey",
"version" : "2.7.1",
"major" : "2"
}
},
{ {
"desc" : "Silk Browser", "desc" : "Silk Browser",
"ua" : "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84)", "ua" : "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84)",
@@ -978,6 +1068,26 @@
"major" : "undefined" "major" : "undefined"
} }
}, },
{
"desc" : "Tesla",
"ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Tesla QtCarBrowser Safari/601.1",
"expect" :
{
"name" : "Tesla",
"version" : "undefined",
"major" : "undefined"
}
},
{
"desc" : "Tesla",
"ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/79.0.3945.130 Chrome/79.0.3945.130 Safari/537.36 Tesla/2020.16.2.1-e99c70fff409",
"expect" :
{
"name" : "Tesla",
"version" : "2020.16.2.1-e99c70fff409",
"major" : "2020"
}
},
{ {
"desc" : "Tizen Browser", "desc" : "Tizen Browser",
"ua" : "Mozilla/5.0 (Linux; U; Tizen/1.0 like Android; en-us; AppleWebKit/534.46 (KHTML, like Gecko) Tizen Browser/1.0 Mobile", "ua" : "Mozilla/5.0 (Linux; U; Tizen/1.0 like Android; en-us; AppleWebKit/534.46 (KHTML, like Gecko) Tizen Browser/1.0 Mobile",
@@ -1048,6 +1158,16 @@
"major" : "7" "major" : "7"
} }
}, },
{
"desc" : "UPBrowser",
"ua" : "BenQ-CF61/1.00/WAP2.0/MIDP2.0/CLDC1.0 UP.Browser/6.3.0.4.c.1.102 (GUI) MMP/2.0",
"expect" :
{
"name" : "UP.Browser",
"version" : "6.3.0.4.c.1.102",
"major" : "6"
}
},
{ {
"desc": "WeChat on iOS", "desc": "WeChat on iOS",
"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321 MicroMessenger/6.3.6 NetType/WIFI Language/zh_CN", "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321 MicroMessenger/6.3.6 NetType/WIFI Language/zh_CN",
@@ -1114,8 +1234,8 @@
"expect" : "expect" :
{ {
"name" : "Edge", "name" : "Edge",
"version" : "0.1", "version" : "12.0",
"major" : "0" "major" : "12"
} }
}, },
{ {
@@ -1124,8 +1244,8 @@
"expect" : "expect" :
{ {
"name" : "Edge", "name" : "Edge",
"version" : "42", "version" : "17.17134",
"major" : "42" "major" : "17"
} }
}, },
{ {
@@ -1134,8 +1254,8 @@
"expect" : "expect" :
{ {
"name" : "Edge", "name" : "Edge",
"version" : "44", "version" : "18.17763",
"major" : "44" "major" : "18"
} }
}, },
{ {
@@ -1188,6 +1308,16 @@
"major" : "1" "major" : "1"
} }
}, },
{
"desc" : "Firefox iOS using iPad",
"ua" : "Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4",
"expect" :
{
"name" : "Firefox",
"version" : "1.0",
"major" : "1"
}
},
{ {
"desc" : "QQ on iOS", "desc" : "QQ on iOS",
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/1080 Core/UIWebView NetType/WIFI Mem/26", "ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/1080 Core/UIWebView NetType/WIFI Mem/26",

View File

@@ -79,6 +79,14 @@
"architecture" : "arm" "architecture" : "arm"
} }
}, },
{
"desc" : "Nokia N900 Linux mobile",
"ua" : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0",
"expect" :
{
"architecture" : "arm"
}
},
{ {
"desc" : "ARMEABI", "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;]", "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;]",
@@ -103,6 +111,22 @@
"architecture" : "arm64" "architecture" : "arm64"
} }
}, },
{
"desc" : "ARM64",
"ua" : "Mozilla/5.0 (Windows NT 10.0; ARM64; RM-1096) AppleWebKit/537.36 (KHTML like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
"expect" :
{
"architecture" : "arm64"
}
},
{
"desc" : "ARM64",
"ua" : "Mozilla/5.0 (Linux; arm_64; Android 9; HRY-LX1T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 YaBrowser/19.12.1.121.00 Mobile Safari/537.36",
"expect" :
{
"architecture" : "arm64"
}
},
{ {
"desc" : "Pocket PC", "desc" : "Pocket PC",
"ua" : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1", "ua" : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1",
@@ -135,6 +159,14 @@
"architecture" : "ppc" "architecture" : "ppc"
} }
}, },
{
"desc" : "Mac OS X on PowerPC using Firefox",
"ua" : "Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
"expect" :
{
"architecture" : "ppc"
}
},
{ {
"desc" : "UltraSPARC", "desc" : "UltraSPARC",
"ua" : "Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5", "ua" : "Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5",

File diff suppressed because it is too large Load Diff

View File

@@ -17,6 +17,15 @@
"version" : "12.0" "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", "desc" : "Gecko",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:2.0b9pre) Gecko/20110111 Firefox/4.0b9pre", "ua" : "Mozilla/5.0 (X11; Linux x86_64; rv:2.0b9pre) Gecko/20110111 Firefox/4.0b9pre",
@@ -97,5 +106,50 @@
"name" : "WebKit", "name" : "WebKit",
"version" : "537.36" "version" : "537.36"
} }
},
{
"desc" : "WebOS TV 5.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 WebAppManager",
"expect" :
{
"name" : "Blink",
"version" : "68.0.3440.106"
}
},
{
"desc" : "WebOS TV 4.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.34 Safari/537.36 WebAppManager",
"expect" :
{
"name" : "Blink",
"version" : "53.0.2785.34"
}
},
{
"desc" : "WebOS TV 3.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.2.1 Chrome/38.0.2125.122 Safari/537.36 WebAppManager",
"expect" :
{
"name" : "Blink",
"version" : "38.0.2125.122"
}
},
{
"desc" : "WebOS TV 2.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/538.2 (KHTML, like Gecko) Large Screen WebAppManager Safari/538.2",
"expect" :
{
"name" : "WebKit",
"version" : "538.2"
}
},
{
"desc" : "WebOS TV 1.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41",
"expect" :
{
"name" : "WebKit",
"version" : "537.41"
}
} }
] ]

View File

@@ -107,6 +107,15 @@
"version" : "6.1" "version" : "6.1"
} }
}, },
{
"desc" : "Windows Mobile",
"ua" : "Opera/9.80 (Windows Mobile; WCE; Opera Mobi/WMD-50433; U; en) Presto/2.4.13 Version/10.00",
"expect" :
{
"name" : "Windows Mobile",
"version" : "undefined"
}
},
{ {
"desc" : "Windows Phone", "desc" : "Windows Phone",
"ua" : "Opera/9.80 (Windows Phone; Opera Mini/7.6.8/35.7518; U; ru) Presto/2.8.119 Version/11.10", "ua" : "Opera/9.80 (Windows Phone; Opera Mini/7.6.8/35.7518; U; ru) Presto/2.8.119 Version/11.10",
@@ -134,6 +143,24 @@
"version" : "8.0" "version" : "8.0"
} }
}, },
{
"desc" : "Windows NT on x86 or aarch64 CPU using Firefox",
"ua" : "Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
"expect" :
{
"name" : "Windows",
"version" : "NT x"
}
},
{
"desc" : "Windows NT on x64 CPU using Firefox",
"ua" : "Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0",
"expect" :
{
"name" : "Windows",
"version" : "NT x"
}
},
{ {
"desc" : "BlackBerry", "desc" : "BlackBerry",
"ua" : "BlackBerry9300/5.0.0.912 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/378", "ua" : "BlackBerry9300/5.0.0.912 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/378",
@@ -206,6 +233,51 @@
"version" : "1.4.5" "version" : "1.4.5"
} }
}, },
{
"desc" : "WebOS TV 5.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 WebAppManager",
"expect" :
{
"name" : "webOS",
"version" : "TV"
}
},
{
"desc" : "WebOS TV 4.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.34 Safari/537.36 WebAppManager",
"expect" :
{
"name" : "webOS",
"version" : "TV"
}
},
{
"desc" : "WebOS TV 3.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.2.1 Chrome/38.0.2125.122 Safari/537.36 WebAppManager",
"expect" :
{
"name" : "webOS",
"version" : "TV"
}
},
{
"desc" : "WebOS TV 2.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/538.2 (KHTML, like Gecko) Large Screen WebAppManager Safari/538.2",
"expect" :
{
"name" : "webOS",
"version" : "TV"
}
},
{
"desc" : "WebOS TV 1.x",
"ua" : "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41",
"expect" :
{
"name" : "webOS",
"version" : "TV"
}
},
{ {
"desc" : "QNX", "desc" : "QNX",
"ua" : "Mozilla/5.0 (Photon; U; QNX x86pc; en-US; rv:1.8.1.20) Gecko/20090127 BonEcho/2.0.0.20", "ua" : "Mozilla/5.0 (Photon; U; QNX x86pc; en-US; rv:1.8.1.20) Gecko/20090127 BonEcho/2.0.0.20",
@@ -233,6 +305,15 @@
"version" : "2.1.0" "version" : "2.1.0"
} }
}, },
{
"desc" : "Nokia N900 Linux mobile, on the Fennec browser",
"ua" : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0",
"expect" :
{
"name" : "Maemo",
"version" : "undefined"
}
},
{ {
"desc" : "MeeGo", "desc" : "MeeGo",
"ua" : "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13", "ua" : "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
@@ -275,7 +356,25 @@
"expect" : "expect" :
{ {
"name" : "Firefox OS", "name" : "Firefox OS",
"version" : "undefined" "version" : "14.0"
}
},
{
"desc" : "Firefox OS on Tablet",
"ua" : "Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0",
"expect" :
{
"name" : "Firefox OS",
"version" : "26.0"
}
},
{
"desc" : "Firefox OS on TV",
"ua" : "Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0",
"expect" :
{
"name" : "Firefox OS",
"version" : "44.0"
} }
}, },
{ {
@@ -505,11 +604,11 @@
}, },
{ {
"desc" : "Slackware", "desc" : "Slackware",
"ua" : "", "ua" : "Mozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41",
"expect" : "expect" :
{ {
"name" : "", "name" : "Slackware",
"version" : "" "version" : "13.37"
} }
}, },
{ {
@@ -568,11 +667,11 @@
}, },
{ {
"desc" : "Solaris", "desc" : "Solaris",
"ua" : "", "ua" : "Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7) Gecko/20070606",
"expect" : "expect" :
{ {
"name" : "", "name" : "Solaris",
"version" : "" "version" : "sun4u"
} }
}, },
{ {
@@ -604,11 +703,11 @@
}, },
{ {
"desc" : "DragonFly", "desc" : "DragonFly",
"ua" : "", "ua" : "Mozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1) Gecko/20090720 Firefox/3.5.1",
"expect" : "expect" :
{ {
"name" : "", "name" : "DragonFly",
"version" : "" "version" : "undefined"
} }
}, },
{ {
@@ -638,6 +737,33 @@
"version" : "undefined" "version" : "undefined"
} }
}, },
{
"desc" : "Mac OS on PowerPC",
"ua" : "Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)",
"expect" :
{
"name" : "Mac OS",
"version" : "undefined"
}
},
{
"desc" : "Mac OS X on x86, x86_64, or aarch64 using Firefox",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
"expect" :
{
"name" : "Mac OS",
"version" : "x.y"
}
},
{
"desc" : "Mac OS X on PowerPC using Firefox",
"ua" : "Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
"expect" :
{
"name" : "Mac OS",
"version" : "x.y"
}
},
{ {
"desc" : "Mac OS", "desc" : "Mac OS",
"ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36", "ua" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36",
@@ -721,155 +847,272 @@
}, },
{ {
"desc" : "AIX", "desc" : "AIX",
"ua" : "", "ua" : "Mozilla/5.0 (X11; U; AIX 000138384C00; en-US; rv:1.0.1) Gecko/20030213 Netscape/7.0",
"expect" : "expect" :
{ {
"name" : "", "name" : "AIX",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "Plan9", "desc" : "Plan9",
"ua" : "", "ua" : "NCSA_Mosaic/5.0 (X11;Plan 9 4.0)",
"expect" : "expect" :
{ {
"name" : "", "name" : "Plan 9",
"version" : "" "version" : "4.0"
} }
}, },
{ {
"desc" : "Minix", "desc" : "Minix",
"ua" : "", "ua" : "Mozilla/5.0 (X11; Original ; Minix 3.3 ; rv:3.0)",
"expect" : "expect" :
{ {
"name" : "", "name" : "Minix",
"version" : "" "version" : "3.3"
} }
}, },
{ {
"desc" : "BeOS", "desc" : "BeOS",
"ua" : "", "ua" : "Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.8pre) Gecko/20070926 SeaMonkey/1.1.5pre",
"expect" : "expect" :
{ {
"name" : "", "name" : "BeOS",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "OS/2", "desc" : "OS/2",
"ua" : "", "ua" : "Links (2.1pre14; OS/2 1 i386; 80x33)",
"expect" : "expect" :
{ {
"name" : "", "name" : "OS/2",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "AmigaOS", "desc" : "AmigaOS",
"ua" : "", "ua" : "Mozilla/4.0 (compatible; AWEB 3.4 SE; AmigaOS)",
"expect" : "expect" :
{ {
"name" : "", "name" : "AmigaOS",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "MorphOS", "desc" : "MorphOS",
"ua" : "", "ua" : "AmigaVoyager/3.4.4 (MorphOS/PPC native)",
"expect" : "expect" :
{ {
"name" : "", "name" : "MorphOS",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "UNIX", "desc" : "UNIX",
"ua" : "", "ua" : "Surf/0.4.1 (X11; U; Unix; en-US) AppleWebKit/531.2+ Compatible (Safari)",
"expect" : "expect" :
{ {
"name" : "", "name" : "Unix",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "Joli", "desc" : "Joli",
"ua" : "", "ua" : "Mozilla/5.0 (X11; Jolicloud Linux i686) AppleWebKit/537.6 (KHTML, like Gecko) Joli OS/1.2 Chromium/23.0.1240.0 Chrome/23.0.1240.0 Safari/537.6",
"expect" : "expect" :
{ {
"name" : "", "name" : "Joli",
"version" : "" "version" : "1.2"
} }
}, },
{ {
"desc" : "CentOS", "desc" : "CentOS",
"ua" : "", "ua" : "Konqueror/15.13 (CentOS Linux 7.4; cs-CZ;)",
"expect" : "expect" :
{ {
"name" : "", "name" : "CentOS",
"version" : "" "version" : "7.4"
} }
}, },
{ {
"desc" : "PCLinuxOS", "desc" : "PCLinuxOS",
"ua" : "", "ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101209 PCLinuxOS/1.9.2.13-1pclos2010 (2010) Firefox/3.6.13",
"expect" : "expect" :
{ {
"name" : "", "name" : "PCLinuxOS",
"version" : "" "version" : "1.9.2.13-1pclos2010"
} }
}, },
{ {
"desc" : "RedHat", "desc" : "RedHat",
"ua" : "", "ua" : "Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.4 (like Gecko) Red Hat Enterprise Linux/4.3.4-11.el6_1.4",
"expect" : "expect" :
{ {
"name" : "", "name" : "Red Hat",
"version" : "" "version" : "4.3.4-11.el6_1.4"
}
},
{
"desc" : "RedHat",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20070717 Red Hat/1.0.9-4.el4 SeaMonkey/1.0.9",
"expect" :
{
"name" : "Red Hat",
"version" : "1.0.9-4.el4"
}
},
{
"desc" : "RedHat",
"ua" : "iTunes/4.7.1 (Linux; N; Red Hat; x86_64-linux; EN; utf8) SqueezeCenter, Squeezebox Server, Logitech Media Server/7.9.1/1522157629",
"expect" :
{
"name" : "Red Hat",
"version" : "undefined"
}
},
{
"desc" : "RedHat",
"ua" : "curl/7.20.0 (x86_64-redhat-linux-gnu) libcurl/7.20.0 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5",
"expect" :
{
"name" : "redhat",
"version" : "undefined"
}
},
{
"desc" : "RISC OS",
"ua" : "Mozilla/1.10 [en] (Compatible; RISC OS 3.70; Oregano 1.10)",
"expect" :
{
"name" : "RISC OS",
"version" : "3.70"
} }
}, },
{ {
"desc" : "Zenwalk", "desc" : "Zenwalk",
"ua" : "", "ua" : "Flock/2.16 (Zenwalk 7.3; es_PR;)",
"expect" : "expect" :
{ {
"name" : "", "name" : "Zenwalk",
"version" : "" "version" : "7.3"
} }
}, },
{ {
"desc" : "Hurd", "desc" : "Hurd",
"ua" : "", "ua" : "Mozilla/5.0 (X11; Hurd 0.9 i386; en-US) libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.7.0 Safari/696.96",
"expect" : "expect" :
{ {
"name" : "", "name" : "Hurd",
"version" : "" "version" : "0.9"
} }
}, },
{ {
"desc" : "Linux", "desc" : "Linux",
"ua" : "", "ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36",
"expect" : "expect" :
{ {
"name" : "", "name" : "Linux",
"version" : "" "version" : "x86_64"
} }
}, },
{ {
"desc" : "GNU", "desc" : "Deepin",
"ua" : "", "ua" : "Mozilla/5.0 (X11; Linux x86_64; Deepin 15.5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36 NFSBrowser/5.0.0.1886",
"expect" : "expect" :
{ {
"name" : "", "name" : "Deepin",
"version" : "" "version" : "15.5"
} }
}, },
{ {
"desc" : "Palm OS", "desc" : "Palm OS",
"ua" : "", "ua" : "Mozilla/4.76 [en] (PalmOS; U; WebPro3.0; Palm-Arz1)",
"expect" : "expect" :
{ {
"name" : "", "name" : "Palm",
"version" : "" "version" : "undefined"
}
},
{
"desc" : "HP-UX",
"ua" : "Mozilla/5.0 (X11; U; HP-UX 9000/785; es-ES; rv:1.0.1) Gecko/20020827 Netscape/7.0",
"expect" :
{
"name" : "HP-UX",
"version" : "undefined"
}
},
{
"desc" : "Contiki",
"ua" : "Contiki/1.0 (Commodore 64; http://dunkels.com/adam/contiki/)",
"expect" :
{
"name" : "Contiki",
"version" : "1.0"
}
},
{
"desc" : "Linpus",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5pre) Gecko/2008032619 Linpus/3.0-0.49",
"expect" :
{
"name" : "Linpus",
"version" : "3.0-0.49"
}
},
{
"desc" : "Manjaro",
"ua" : "Mozilla/5.0 (X11; Manjaro 19.0.2; Arch; x64; rv:84.0) Gecko/20100101 Firefox/84.0",
"expect" :
{
"name" : "Manjaro",
"version" : "19.0.2"
}
},
{
"desc" : "elementary OS",
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/604.1 (KHTML, like Gecko) Version/11.0 Safari/604.1 elementary OS/0.4 (Loki) Epiphany/3.18.11",
"expect" :
{
"name" : "elementary OS",
"version" : "0.4"
}
},
{
"desc" : "GhostBSD",
"ua" : "Mozilla/5.0 (X11; GhostBSD/10.3; x86_64; rv:50.0.1) Gecko/20100101 Firefox/50.0.1",
"expect" :
{
"name" : "GhostBSD",
"version" : "10.3"
}
},
{
"desc" : "Android-x86",
"ua" : "Mozilla/5.0 (Linux; Android 7.1.2; Generic Android-x86) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/61.2.3076.56749",
"expect" :
{
"name" : "Android-x86",
"version" : "7.1.2"
}
},
{
"desc" : "Sabayon",
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Sabayon Chrome/19.0.1084.46 Safari/536.5",
"expect" :
{
"name" : "Sabayon",
"version" : "undefined"
}
},
{
"desc" : "Linspire",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060803 Firefox/1.5.0.4 Linspire/1.5.0.4",
"expect" :
{
"name" : "Linspire",
"version" : "1.5.0.4"
} }
} }
] ]

View File

@@ -46,6 +46,14 @@ describe('UAParser()', function () {
assert.deepStrictEqual(UAParser(ua), new UAParser().setUA(ua).getResult()); assert.deepStrictEqual(UAParser(ua), new UAParser().setUA(ua).getResult());
}); });
describe('UAParser() constructor does not throw with undefined ua argument', function () {
assert.doesNotThrow(() => new UAParser(undefined).getResult());
});
describe('UAParser.setUA method does not throw with undefined ua argument', function () {
assert.doesNotThrow(() => new UAParser().setUA(undefined).getResult());
});
for (var i in methods) { for (var i in methods) {
describe(methods[i]['title'], function () { describe(methods[i]['title'], function () {
for (var j in methods[i]['list']) { for (var j in methods[i]['list']) {