ua-parser-js 2.0.0-beta.2 → 2.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -22
- package/dist/icons/color/LICENSE.md +3 -0
- package/dist/icons/color/browser/android-browser.svg +1 -0
- package/dist/icons/color/browser/avant.png +0 -0
- package/dist/icons/color/browser/basilisk.png +0 -0
- package/dist/icons/color/browser/basilisk.svg +1 -0
- package/dist/icons/color/browser/brave.png +0 -0
- package/dist/icons/color/browser/brave.svg +1 -0
- package/dist/icons/color/browser/chrome.png +0 -0
- package/dist/icons/color/browser/chrome.svg +1 -0
- package/dist/icons/color/browser/chromium.png +0 -0
- package/dist/icons/color/browser/chromium.svg +1 -0
- package/dist/icons/color/browser/coc-coc.png +0 -0
- package/dist/icons/color/browser/default.png +0 -0
- package/dist/icons/color/browser/default.svg +1 -0
- package/dist/icons/color/browser/dolphin.png +0 -0
- package/dist/icons/color/browser/edge.png +0 -0
- package/dist/icons/color/browser/edge.svg +1 -0
- package/dist/icons/color/browser/electron.png +0 -0
- package/dist/icons/color/browser/electron.svg +1 -0
- package/dist/icons/color/browser/falkon.png +0 -0
- package/dist/icons/color/browser/falkon.svg +1 -0
- package/dist/icons/color/browser/firefox-reality.png +0 -0
- package/dist/icons/color/browser/firefox-reality.svg +1 -0
- package/dist/icons/color/browser/firefox.png +0 -0
- package/dist/icons/color/browser/firefox.svg +1 -0
- package/dist/icons/color/browser/gsa.svg +9 -0
- package/dist/icons/color/browser/icecat.png +0 -0
- package/dist/icons/color/browser/ie.svg +6 -0
- package/dist/icons/color/browser/konqueror.png +0 -0
- package/dist/icons/color/browser/konqueror.svg +1 -0
- package/dist/icons/color/browser/maxthon.png +0 -0
- package/dist/icons/color/browser/midori.png +0 -0
- package/dist/icons/color/browser/midori.svg +1 -0
- package/dist/icons/color/browser/netsurf.png +0 -0
- package/dist/icons/color/browser/netsurf.svg +1 -0
- package/dist/icons/color/browser/opera-gx.png +0 -0
- package/dist/icons/color/browser/opera-gx.svg +1 -0
- package/dist/icons/color/browser/opera-mini.png +0 -0
- package/dist/icons/color/browser/opera-touch.png +0 -0
- package/dist/icons/color/browser/opera.png +0 -0
- package/dist/icons/color/browser/opera.svg +1 -0
- package/dist/icons/color/browser/palemoon.png +0 -0
- package/dist/icons/color/browser/puffin.png +0 -0
- package/dist/icons/color/browser/safari.png +0 -0
- package/dist/icons/color/browser/safari.svg +1 -0
- package/dist/icons/color/browser/samsung-internet.png +0 -0
- package/dist/icons/color/browser/samsung-internet.svg +1 -0
- package/dist/icons/color/browser/seamonkey.png +0 -0
- package/dist/icons/color/browser/silk.png +0 -0
- package/dist/icons/color/browser/sogou-mobile.png +0 -0
- package/dist/icons/color/browser/ucbrowser.png +0 -0
- package/dist/icons/color/browser/ucbrowser.svg +1 -0
- package/dist/icons/color/browser/vivaldi.png +0 -0
- package/dist/icons/color/browser/vivaldi.svg +1 -0
- package/dist/icons/color/browser/webkit.png +0 -0
- package/dist/icons/color/browser/webkit.svg +1 -0
- package/dist/icons/color/browser/yandex.png +0 -0
- package/dist/icons/color/os/centos.svg +1 -0
- package/dist/icons/mono/LICENSE.md +3 -0
- package/dist/icons/mono/browser/alipay.svg +1 -0
- package/dist/icons/mono/browser/android-browser.svg +1 -0
- package/dist/icons/mono/browser/avast-secure-browser.svg +1 -0
- package/dist/icons/mono/browser/baidu-browser.svg +1 -0
- package/dist/icons/mono/browser/brave.svg +1 -0
- package/dist/icons/mono/browser/chrome-headless.svg +1 -0
- package/dist/icons/mono/browser/chrome-webview.svg +1 -0
- package/dist/icons/mono/browser/chrome.svg +1 -0
- package/dist/icons/mono/browser/chromium.svg +1 -0
- package/dist/icons/mono/browser/duckduckgo.svg +1 -0
- package/dist/icons/mono/browser/edge.svg +1 -0
- package/dist/icons/mono/browser/electron.svg +1 -0
- package/dist/icons/mono/browser/facebook.svg +1 -0
- package/dist/icons/mono/browser/firefox-focus.svg +1 -0
- package/dist/icons/mono/browser/firefox-reality.svg +1 -0
- package/dist/icons/mono/browser/firefox.svg +1 -0
- package/dist/icons/mono/browser/gsa.svg +1 -0
- package/dist/icons/mono/browser/huawei-browser.svg +1 -0
- package/dist/icons/mono/browser/icecat.svg +1 -0
- package/dist/icons/mono/browser/ie.svg +1 -0
- package/dist/icons/mono/browser/instagram.svg +1 -0
- package/dist/icons/mono/browser/jasmine.svg +1 -0
- package/dist/icons/mono/browser/kakaotalk.svg +1 -0
- package/dist/icons/mono/browser/klarna.svg +1 -0
- package/dist/icons/mono/browser/line.svg +1 -0
- package/dist/icons/mono/browser/linkedin.svg +1 -0
- package/dist/icons/mono/browser/miui-browser.svg +1 -0
- package/dist/icons/mono/browser/mobile-chrome.svg +1 -0
- package/dist/icons/mono/browser/mobile-firefox.svg +1 -0
- package/dist/icons/mono/browser/mobile-safari.svg +1 -0
- package/dist/icons/mono/browser/mozilla.svg +1 -0
- package/dist/icons/mono/browser/naver.svg +1 -0
- package/dist/icons/mono/browser/nokia-browser.svg +1 -0
- package/dist/icons/mono/browser/oculus-browser.svg +1 -0
- package/dist/icons/mono/browser/opera-coast.svg +1 -0
- package/dist/icons/mono/browser/opera-gx.svg +1 -0
- package/dist/icons/mono/browser/opera-mini.svg +1 -0
- package/dist/icons/mono/browser/opera-mobi.svg +1 -0
- package/dist/icons/mono/browser/opera-tablet.svg +1 -0
- package/dist/icons/mono/browser/opera-touch.svg +1 -0
- package/dist/icons/mono/browser/opera.svg +1 -0
- package/dist/icons/mono/browser/qqbrowser.svg +1 -0
- package/dist/icons/mono/browser/qqbrowserlite.svg +1 -0
- package/dist/icons/mono/browser/safari.svg +1 -0
- package/dist/icons/mono/browser/sailfish-browser.svg +1 -0
- package/dist/icons/mono/browser/samsung-internet.svg +1 -0
- package/dist/icons/mono/browser/smart-lenovo-browser.svg +1 -0
- package/dist/icons/mono/browser/snapchat.svg +1 -0
- package/dist/icons/mono/browser/sogou-explorer.svg +1 -0
- package/dist/icons/mono/browser/sogou-mobile.svg +1 -0
- package/dist/icons/mono/browser/tesla.svg +1 -0
- package/dist/icons/mono/browser/tiktok.svg +1 -0
- package/dist/icons/mono/browser/twitter.svg +1 -0
- package/dist/icons/mono/browser/vivaldi.svg +1 -0
- package/dist/icons/mono/browser/vivo-browser.svg +1 -0
- package/dist/icons/mono/browser/wechat.svg +1 -0
- package/dist/icons/mono/browser/weibo.svg +1 -0
- package/dist/icons/mono/browser/yandex.svg +1 -0
- package/dist/icons/mono/device/acer.svg +1 -0
- package/dist/icons/mono/device/amazon.svg +1 -0
- package/dist/icons/mono/device/apple.svg +1 -0
- package/dist/icons/mono/device/asus.svg +1 -0
- package/dist/icons/mono/device/att.svg +1 -0
- package/dist/icons/mono/device/blackberry.svg +1 -0
- package/dist/icons/mono/device/dell.svg +1 -0
- package/dist/icons/mono/device/facebook.svg +1 -0
- package/dist/icons/mono/device/fairphone.svg +1 -0
- package/dist/icons/mono/device/google.svg +1 -0
- package/dist/icons/mono/device/hp.svg +1 -0
- package/dist/icons/mono/device/huawei.svg +1 -0
- package/dist/icons/mono/device/lenovo.svg +1 -0
- package/dist/icons/mono/device/lg.svg +1 -0
- package/dist/icons/mono/device/meizu.svg +1 -0
- package/dist/icons/mono/device/microsoft.svg +1 -0
- package/dist/icons/mono/device/motorola.svg +1 -0
- package/dist/icons/mono/device/nintendo.svg +1 -0
- package/dist/icons/mono/device/nokia.svg +1 -0
- package/dist/icons/mono/device/nvidia.svg +1 -0
- package/dist/icons/mono/device/oneplus.svg +1 -0
- package/dist/icons/mono/device/oppo.svg +1 -0
- package/dist/icons/mono/device/panasonic.svg +1 -0
- package/dist/icons/mono/device/roku.svg +1 -0
- package/dist/icons/mono/device/samsung.svg +1 -0
- package/dist/icons/mono/device/siemens.svg +1 -0
- package/dist/icons/mono/device/sony.svg +1 -0
- package/dist/icons/mono/device/tesla.svg +1 -0
- package/dist/icons/mono/device/vivo.svg +1 -0
- package/dist/icons/mono/device/vodafone.svg +1 -0
- package/dist/icons/mono/device/xiaomi.svg +1 -0
- package/dist/icons/mono/device/zebra.svg +1 -0
- package/dist/icons/mono/os/android.svg +1 -0
- package/dist/icons/mono/os/arch.svg +1 -0
- package/dist/icons/mono/os/blackberry.svg +1 -0
- package/dist/icons/mono/os/centos.svg +1 -0
- package/dist/icons/mono/os/chrome-os.svg +1 -0
- package/dist/icons/mono/os/chromecast.svg +1 -0
- package/dist/icons/mono/os/debian.svg +1 -0
- package/dist/icons/mono/os/deepin.svg +1 -0
- package/dist/icons/mono/os/elementary-os.svg +1 -0
- package/dist/icons/mono/os/fedora.svg +1 -0
- package/dist/icons/mono/os/firefox.svg +1 -0
- package/dist/icons/mono/os/freebsd.svg +1 -0
- package/dist/icons/mono/os/gentoo.svg +1 -0
- package/dist/icons/mono/os/gnu.svg +1 -0
- package/dist/icons/mono/os/harmonyos.svg +1 -0
- package/dist/icons/mono/os/ios.svg +1 -0
- package/dist/icons/mono/os/kaios.svg +1 -0
- package/dist/icons/mono/os/linux.svg +1 -0
- package/dist/icons/mono/os/macos.svg +1 -0
- package/dist/icons/mono/os/manjaro.svg +1 -0
- package/dist/icons/mono/os/mint.svg +1 -0
- package/dist/icons/mono/os/netbsd.svg +1 -0
- package/dist/icons/mono/os/nintendo.svg +1 -0
- package/dist/icons/mono/os/openbsd.svg +1 -0
- package/dist/icons/mono/os/playstation.svg +1 -0
- package/dist/icons/mono/os/raspbian.svg +1 -0
- package/dist/icons/mono/os/redhat.svg +1 -0
- package/dist/icons/mono/os/sailfish.svg +1 -0
- package/dist/icons/mono/os/slackware.svg +1 -0
- package/dist/icons/mono/os/suse.svg +1 -0
- package/dist/icons/mono/os/ubuntu.svg +1 -0
- package/dist/icons/mono/os/windows.svg +1 -0
- package/dist/icons/mono/os/xbox.svg +1 -0
- package/dist/ua-parser.min.js +3 -3
- package/dist/ua-parser.pack.js +3 -3
- package/package.json +11 -6
- package/script/cli.js +4 -0
- package/src/enums/ua-parser-enums.js +30 -9
- package/src/enums/ua-parser-enums.mjs +30 -9
- package/src/extensions/ua-parser-extensions.d.ts +4 -2
- package/src/extensions/ua-parser-extensions.js +169 -48
- package/src/extensions/ua-parser-extensions.mjs +169 -48
- package/src/helpers/ua-parser-helpers.d.ts +12 -4
- package/src/helpers/ua-parser-helpers.js +44 -5
- package/src/helpers/ua-parser-helpers.mjs +45 -6
- package/src/main/ua-parser.d.ts +7 -4
- package/src/main/ua-parser.js +121 -54
- package/src/main/ua-parser.mjs +121 -54
@@ -3,7 +3,7 @@
|
|
3
3
|
// Source: /src/enums/ua-parser-enums.js
|
4
4
|
|
5
5
|
///////////////////////////////////////////////
|
6
|
-
/* Enums for UAParser.js v2.0.0-
|
6
|
+
/* Enums for UAParser.js v2.0.0-rc.1
|
7
7
|
https://github.com/faisalman/ua-parser-js
|
8
8
|
Author: Faisal Salman <f@faisalman.com>
|
9
9
|
AGPLv3 License */
|
@@ -12,8 +12,8 @@
|
|
12
12
|
/*jshint esversion: 6 */
|
13
13
|
|
14
14
|
const Browser = Object.freeze({
|
15
|
-
|
16
|
-
|
15
|
+
'2345_EXPLORER': '2345Explorer',
|
16
|
+
'360': '360 Browser',
|
17
17
|
ALIPAY: 'Alipay',
|
18
18
|
AMAYA: 'Amaya',
|
19
19
|
ANDROID: 'Android Browser',
|
@@ -54,8 +54,9 @@ const Browser = Object.freeze({
|
|
54
54
|
FENNEC: 'Fennec',
|
55
55
|
FLOCK: 'Flock',
|
56
56
|
FLOW: 'Flow',
|
57
|
-
GO: '
|
57
|
+
GO: 'GoBrowser',
|
58
58
|
GOOGLE_SEARCH: 'GSA',
|
59
|
+
HELIO: 'Helio',
|
59
60
|
HEYTAP: 'HeyTap',
|
60
61
|
HUAWEI: 'Huawei Browser',
|
61
62
|
ICAB: 'iCab',
|
@@ -108,6 +109,7 @@ const Browser = Object.freeze({
|
|
108
109
|
PALEMOON: 'PaleMoon',
|
109
110
|
PHANTOMJS: 'PhantomJS',
|
110
111
|
PHOENIX: 'Phoenix',
|
112
|
+
PICOBROWSER: 'Pico Browser',
|
111
113
|
POLARIS: 'Polaris',
|
112
114
|
PUFFIN: 'Puffin',
|
113
115
|
QQ: 'QQBrowser',
|
@@ -132,9 +134,9 @@ const Browser = Object.freeze({
|
|
132
134
|
TESLA: 'Tesla',
|
133
135
|
TIKTOK: 'TikTok',
|
134
136
|
TIZEN: 'Tizen Browser',
|
137
|
+
TWITTER: 'Twitter',
|
135
138
|
UC: 'UCBrowser',
|
136
139
|
UP: 'UP.Browser',
|
137
|
-
VIERA: 'Viera',
|
138
140
|
VIVALDI: 'Vivaldi',
|
139
141
|
VIVO: 'Vivo Browser',
|
140
142
|
W3M: 'w3m',
|
@@ -143,12 +145,24 @@ const Browser = Object.freeze({
|
|
143
145
|
WECHAT: 'WeChat',
|
144
146
|
WEIBO: 'Weibo',
|
145
147
|
WHALE: 'Whale',
|
148
|
+
WOLVIC: 'Wolvic',
|
146
149
|
YANDEX: 'Yandex'
|
147
150
|
|
148
151
|
// TODO : test!
|
149
152
|
});
|
150
153
|
|
154
|
+
const BrowserType = Object.freeze({
|
155
|
+
CRAWLER: 'crawler',
|
156
|
+
CLI: 'cli',
|
157
|
+
EMAIL: 'email',
|
158
|
+
FETCHER: 'fetcher',
|
159
|
+
INAPP: 'inapp',
|
160
|
+
MEDIAPLAYER: 'mediaplayer',
|
161
|
+
MODULE: 'module'
|
162
|
+
});
|
163
|
+
|
151
164
|
const CPU = Object.freeze({
|
165
|
+
'68K': '68k',
|
152
166
|
ARM : 'arm',
|
153
167
|
ARM_64: 'arm64',
|
154
168
|
ARM_HF: 'armhf',
|
@@ -159,7 +173,6 @@ const CPU = Object.freeze({
|
|
159
173
|
IRIX_64: 'irix64',
|
160
174
|
MIPS: 'mips',
|
161
175
|
MIPS_64: 'mips64',
|
162
|
-
M68K: '68k',
|
163
176
|
PA_RISC: 'pa-risc',
|
164
177
|
PPC: 'ppc',
|
165
178
|
SPARC: 'sparc',
|
@@ -175,7 +188,8 @@ const Device = Object.freeze({
|
|
175
188
|
MOBILE: 'mobile',
|
176
189
|
SMARTTV: 'smarttv',
|
177
190
|
TABLET: 'tablet',
|
178
|
-
WEARABLE: 'wearable'
|
191
|
+
WEARABLE: 'wearable',
|
192
|
+
XR: 'xr'
|
179
193
|
});
|
180
194
|
|
181
195
|
const Vendor = Object.freeze({
|
@@ -199,6 +213,7 @@ const Vendor = Object.freeze({
|
|
199
213
|
HTC: 'HTC',
|
200
214
|
HUAWEI: 'Huawei',
|
201
215
|
INFINIX: 'Infinix',
|
216
|
+
ITEL: 'itel',
|
202
217
|
JOLLA: 'Jolla',
|
203
218
|
KOBO: 'Kobo',
|
204
219
|
LENOVO: 'Lenovo',
|
@@ -209,6 +224,7 @@ const Vendor = Object.freeze({
|
|
209
224
|
NEXIAN: 'Nexian',
|
210
225
|
NINTENDO: 'Nintendo',
|
211
226
|
NOKIA: 'Nokia',
|
227
|
+
NOTHING: 'Nothing',
|
212
228
|
NVIDIA: 'Nvidia',
|
213
229
|
ONEPLUS: 'OnePlus',
|
214
230
|
OPPO: 'OPPO',
|
@@ -216,6 +232,7 @@ const Vendor = Object.freeze({
|
|
216
232
|
PALM: 'Palm',
|
217
233
|
PANASONIC: 'Panasonic',
|
218
234
|
PEBBLE: 'Pebble',
|
235
|
+
PICO: 'Pico',
|
219
236
|
POLYTRON: 'Polytron',
|
220
237
|
REALME: 'Realme',
|
221
238
|
RIM: 'RIM',
|
@@ -225,6 +242,7 @@ const Vendor = Object.freeze({
|
|
225
242
|
SIEMENS: 'Siemens',
|
226
243
|
SONY: 'Sony',
|
227
244
|
SPRINT: 'Sprint',
|
245
|
+
TCL: 'TCL',
|
228
246
|
TECHNISAT: 'TechniSAT',
|
229
247
|
TECNO: 'Tecno',
|
230
248
|
TESLA: 'Tesla',
|
@@ -241,6 +259,7 @@ const Vendor = Object.freeze({
|
|
241
259
|
|
242
260
|
const Engine = Object.freeze({
|
243
261
|
AMAYA: 'Amaya',
|
262
|
+
ARKWEB: 'ArkWeb',
|
244
263
|
BLINK: 'Blink',
|
245
264
|
EDGEHTML: 'EdgeHTML',
|
246
265
|
FLOW: 'Flow',
|
@@ -307,12 +326,14 @@ const OS = Object.freeze({
|
|
307
326
|
NETRANGE: 'NetRange',
|
308
327
|
NETTV: 'NetTV',
|
309
328
|
NINTENDO: 'Nintendo',
|
329
|
+
OPENHARMONY: 'OpenHarmony',
|
310
330
|
OPENBSD: 'OpenBSD',
|
311
331
|
OPENVMS: 'OpenVMS',
|
312
332
|
OS2: 'OS/2',
|
313
333
|
PALM: 'Palm',
|
314
334
|
PC_BSD: 'PC-BSD',
|
315
335
|
PCLINUXOS: 'PCLinuxOS',
|
336
|
+
PICO: 'Pico',
|
316
337
|
PLAN9: 'Plan9',
|
317
338
|
PLAYSTATION: 'PlayStation',
|
318
339
|
QNX: 'QNX',
|
@@ -332,7 +353,6 @@ const OS = Object.freeze({
|
|
332
353
|
UBUNTU: 'Ubuntu',
|
333
354
|
UNIX: 'Unix',
|
334
355
|
VECTORLINUX: 'VectorLinux',
|
335
|
-
VIERA: 'Viera',
|
336
356
|
WATCHOS: 'watchOS',
|
337
357
|
WEBOS: 'WebOS',
|
338
358
|
WINDOWS: 'Windows',
|
@@ -345,7 +365,8 @@ const OS = Object.freeze({
|
|
345
365
|
});
|
346
366
|
|
347
367
|
export {
|
348
|
-
Browser,
|
368
|
+
Browser,
|
369
|
+
BrowserType,
|
349
370
|
CPU,
|
350
371
|
Device,
|
351
372
|
Vendor,
|
@@ -1,13 +1,15 @@
|
|
1
|
-
// Type definitions for Helpers submodule of UAParser.js v2.0.0-beta.
|
1
|
+
// Type definitions for Helpers submodule of UAParser.js v2.0.0-beta.3
|
2
2
|
// Project: https://github.com/faisalman/ua-parser-js
|
3
3
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
4
4
|
|
5
5
|
import type { UAParserExt } from "../main/ua-parser";
|
6
6
|
|
7
|
-
export const Apps: UAParserExt;
|
8
7
|
export const Bots: UAParserExt;
|
9
8
|
export const CLIs: UAParserExt;
|
9
|
+
export const Crawlers: UAParserExt;
|
10
10
|
export const ExtraDevices: UAParserExt;
|
11
11
|
export const Emails: UAParserExt;
|
12
|
+
export const Fetchers: UAParserExt;
|
13
|
+
export const InApps: UAParserExt;
|
12
14
|
export const MediaPlayers: UAParserExt;
|
13
15
|
export const Modules: UAParserExt;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
///////////////////////////////////////////////
|
2
|
-
/* Extensions for UAParser.js v2.0.0-
|
2
|
+
/* Extensions for UAParser.js v2.0.0-rc.1
|
3
3
|
https://github.com/faisalman/ua-parser-js
|
4
4
|
Author: Faisal Salman <f@faisalman.com>
|
5
5
|
AGPLv3 License */
|
@@ -14,33 +14,80 @@ const VENDOR = 'vendor';
|
|
14
14
|
const VERSION = 'version';
|
15
15
|
const MOBILE = 'mobile';
|
16
16
|
const TABLET = 'tablet';
|
17
|
+
const CRAWLER = 'crawler';
|
18
|
+
const CLI = 'cli';
|
19
|
+
const EMAIL = 'email';
|
20
|
+
const FETCHER = 'fetcher';
|
21
|
+
const INAPP = 'inapp';
|
22
|
+
const MEDIAPLAYER = 'mediaplayer';
|
23
|
+
const MODULE = 'module';
|
24
|
+
|
25
|
+
//////////////////////
|
26
|
+
// COMMAND LINE APPS
|
27
|
+
/////////////////////
|
17
28
|
|
18
|
-
const
|
29
|
+
const CLIs = Object.freeze({
|
19
30
|
browser : [
|
20
|
-
|
31
|
+
// wget / curl / lynx
|
32
|
+
[/(wget|curl|lynx)[\/ ]([\w\.]+)/i], [NAME, VERSION, [TYPE, CLI]]
|
21
33
|
]
|
22
34
|
});
|
23
35
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
[/((?:google|bing|msn|facebook)bot(?:[\-imagevdo]{0,6})|bingpreview)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']],
|
28
|
-
|
29
|
-
// GPTBot - https://platform.openai.com/docs/gptbot
|
30
|
-
[/(gptbot)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']],
|
36
|
+
////////////////////////
|
37
|
+
// CRAWLERS / SPIDERS
|
38
|
+
///////////////////////
|
31
39
|
|
32
|
-
|
33
|
-
[/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']]
|
34
|
-
]
|
35
|
-
});
|
36
|
-
|
37
|
-
const CLIs = Object.freeze({
|
40
|
+
const Crawlers = Object.freeze({
|
38
41
|
browser : [
|
39
|
-
|
40
|
-
|
42
|
+
[
|
43
|
+
// AhrefsBot - https://ahrefs.com/robot
|
44
|
+
// Amazonbot - https://developer.amazon.com/amazonbot
|
45
|
+
// Applebot - http://apple.com/go/applebot
|
46
|
+
// Bingbot - http://www.bing.com/bingbot.htm
|
47
|
+
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
48
|
+
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
49
|
+
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
50
|
+
// GPTBot - https://platform.openai.com/docs/gptbot
|
51
|
+
// MJ12bot - https://mj12bot.com/
|
52
|
+
// OpenAI Search - https://platform.openai.com/docs/bots
|
53
|
+
// SemrushBot - http://www.semrush.com/bot.html
|
54
|
+
/((?:ahrefs|amazon|apple|bing|dot|duckduck|facebook|gpt|mj12|oai-search|semrush)bot)\/([\w\.]+)/i,
|
55
|
+
|
56
|
+
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
57
|
+
/(baiduspider)[-imagevdonsfcpr]{0,6}\/([\w\.]+)/i,
|
58
|
+
|
59
|
+
// ClaudeBot
|
60
|
+
/(claude(?:bot|-web))\/([\w\.]+)/i,
|
61
|
+
|
62
|
+
// Coc Coc Bot - https://help.coccoc.com/en/search-engine
|
63
|
+
/(coccocbot-(?:image|web))\/([\w\.]+)/i,
|
64
|
+
|
65
|
+
// Googlebot - http://www.google.com/bot.html
|
66
|
+
/(google(?:bot|other)(?:-image|-video|-news|-extended)?|(?:storebot-)?google(?:-inspectiontool)?)\/?([\w\.]*)/i,
|
67
|
+
|
68
|
+
// Sogou Spider
|
69
|
+
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
70
|
+
|
71
|
+
// Yahoo! Japan - https://support.yahoo-net.jp/PccSearch/s/article/H000007955
|
72
|
+
/(y!?j-(?:asr|br[uw]|dscv|mmp|vsidx|wsc))\/([\w\.]+)/i,
|
73
|
+
|
74
|
+
// Yandex Bots - https://yandex.com/bots
|
75
|
+
/(yandex(?:(?:mobile)?(?:accessibility|additional|renderresources|screenshot|sprav)?bot|image(?:s|resizer)|video(?:parser)?|blogs|adnet|favicons|fordomain|market|media|metrika|news|ontodb(?:api)?|pagechecker|partner|rca|tracker|turbo|vertis|webmaster|antivirus))\/([\w\.]+)/i
|
76
|
+
],
|
77
|
+
|
78
|
+
[NAME, VERSION, [TYPE, CRAWLER]],
|
79
|
+
|
80
|
+
// Bytespider
|
81
|
+
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
82
|
+
[/((?:bytespider|(?=yahoo! )slurp))/i],
|
83
|
+
[NAME, [TYPE, CRAWLER]]
|
41
84
|
]
|
42
85
|
});
|
43
86
|
|
87
|
+
//////////////////
|
88
|
+
// EXTRA DEVICES
|
89
|
+
/////////////////
|
90
|
+
|
44
91
|
const ExtraDevices = Object.freeze({
|
45
92
|
device : [[
|
46
93
|
/(nook)[\w ]+build\/(\w+)/i, // Nook
|
@@ -117,25 +164,80 @@ const ExtraDevices = Object.freeze({
|
|
117
164
|
]
|
118
165
|
});
|
119
166
|
|
167
|
+
///////////////
|
168
|
+
// EMAIL APPS
|
169
|
+
//////////////
|
170
|
+
|
120
171
|
const Emails = Object.freeze({
|
121
172
|
browser : [
|
122
|
-
|
123
|
-
[/(microsoft outlook|thunderbird)[\s\/]([\w\.]+)/i], [NAME, VERSION, [TYPE,
|
173
|
+
// Microsoft Outlook / Thunderbird
|
174
|
+
[/(microsoft outlook|thunderbird)[\s\/]([\w\.]+)/i], [NAME, VERSION, [TYPE, EMAIL]]
|
175
|
+
]
|
176
|
+
});
|
177
|
+
|
178
|
+
///////////////////////
|
179
|
+
// ON-DEMAND SCRAPERS
|
180
|
+
//////////////////////
|
181
|
+
|
182
|
+
const Fetchers = Object.freeze({
|
183
|
+
browser : [
|
184
|
+
[
|
185
|
+
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
186
|
+
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
187
|
+
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
188
|
+
/(ahrefssiteaudit|bingpreview|chatgpt-user|mastodon|(?:discord|linkedin|pinterest|reddit|roger|telegram|twitter|uptimero)bot)\/([\w\.]+)/i,
|
189
|
+
|
190
|
+
// Slackbot - https://api.slack.com/robots
|
191
|
+
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
192
|
+
|
193
|
+
// WhatsApp
|
194
|
+
/(whatsapp)\/([\w\.]+)[\/ ][ianw]/i,
|
195
|
+
|
196
|
+
// Yahoo! Japan
|
197
|
+
/(y!?j-dlc)\/([\w\.]+)/i,
|
198
|
+
|
199
|
+
// Yandex Bots - https://yandex.com/bots
|
200
|
+
/(yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
201
|
+
/(yandex(?:sitelinks|userproxy))/i
|
202
|
+
],
|
203
|
+
[NAME, VERSION, [TYPE, FETCHER]],
|
204
|
+
|
205
|
+
// Google Bots / Snapchat
|
206
|
+
[/(feedfetcher-google|google-read-aloud|(?=bot; )snapchat)/i],
|
207
|
+
[NAME, [TYPE, FETCHER]],
|
124
208
|
]
|
125
209
|
});
|
126
210
|
|
211
|
+
////////////////////
|
212
|
+
// IN-APP BROWSERS
|
213
|
+
///////////////////
|
214
|
+
|
215
|
+
const InApps = Object.freeze({
|
216
|
+
browser : [
|
217
|
+
// Slack
|
218
|
+
[/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, INAPP]],
|
219
|
+
|
220
|
+
// Yahoo! Japan
|
221
|
+
[/jp\.co\.yahoo\.android\.yjtop\/([\d\.]+)/i], [VERSION, 'Yahoo! Japan', [TYPE, INAPP]]
|
222
|
+
]
|
223
|
+
});
|
224
|
+
|
225
|
+
//////////////////////
|
226
|
+
// MEDIA PLAYER APPS
|
227
|
+
/////////////////////
|
228
|
+
|
127
229
|
const MediaPlayers = Object.freeze({
|
128
230
|
browser : [[
|
129
231
|
|
130
232
|
/(apple(?:coremedia|))\/([\w\._]+)/i, // Generic Apple CoreMedia
|
131
233
|
/(coremedia) v([\w\._]+)/i
|
132
|
-
], [NAME, VERSION], [
|
234
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
133
235
|
|
134
236
|
/(aqualung|lyssna|bsplayer)\/([\w\.-]+)/i // Aqualung/Lyssna/BSPlayer
|
135
|
-
], [NAME, VERSION], [
|
237
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
136
238
|
|
137
239
|
/(ares|ossproxy)\s([\w\.-]+)/i // Ares/OSSProxy
|
138
|
-
], [NAME, VERSION], [
|
240
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
139
241
|
|
140
242
|
/(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/([\w\.-]+)/i,
|
141
243
|
// Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC
|
@@ -143,106 +245,125 @@ const MediaPlayers = Object.freeze({
|
|
143
245
|
/(clementine|music player daemon)\s([\w\.-]+)/i, // Clementine/MPD
|
144
246
|
/(lg player|nexplayer)\s([\d\.]+)/i,
|
145
247
|
/player\/(nexplayer|lg player)\s([\w\.-]+)/i // NexPlayer/LG Player
|
146
|
-
], [NAME, VERSION], [
|
248
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
147
249
|
/(nexplayer)\s([\w\.-]+)/i // Nexplayer
|
148
|
-
], [NAME, VERSION], [
|
250
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
149
251
|
|
150
252
|
/(flrp)\/([\w\.-]+)/i // Flip Player
|
151
|
-
], [[NAME, 'Flip Player'], VERSION], [
|
253
|
+
], [[NAME, 'Flip Player'], VERSION, [TYPE, MEDIAPLAYER]], [
|
152
254
|
|
153
255
|
/(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i
|
154
256
|
// FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit
|
155
|
-
], [NAME], [
|
257
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
156
258
|
|
157
259
|
/(gstreamer) souphttpsrc.+libsoup\/([\w\.-]+)/i
|
158
260
|
// Gstreamer
|
159
|
-
], [NAME, VERSION], [
|
261
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
160
262
|
|
161
263
|
/(htc streaming player)\s[\w_]+\s\/\s([\d\.]+)/i, // HTC Streaming Player
|
162
264
|
/(java|python-urllib|python-requests|wget|libcurl)\/([\w\.-_]+)/i,
|
163
265
|
// Java/urllib/requests/wget/cURL
|
164
266
|
/(lavf)([\d\.]+)/i // Lavf (FFMPEG)
|
165
|
-
], [NAME, VERSION], [
|
267
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
166
268
|
|
167
269
|
/(htc_one_s)\/([\d\.]+)/i, // HTC One S
|
168
|
-
], [[NAME, /_/g, ' '], VERSION], [
|
270
|
+
], [[NAME, /_/g, ' '], VERSION, [TYPE, MEDIAPLAYER]], [
|
169
271
|
|
170
272
|
/(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+))/i,
|
171
273
|
// MPlayer SVN
|
172
|
-
], [NAME, VERSION], [
|
274
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
173
275
|
|
174
276
|
/(mplayer)(?:\s|\/)([\w\.-]+)/i, // MPlayer
|
175
277
|
/(mplayer) unknown-([\w\.\-]+)/i // MPlayer UNKNOWN
|
176
|
-
], [NAME, VERSION], [
|
278
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
177
279
|
|
178
280
|
/(mplayer)/i, // MPlayer (no other info)
|
179
281
|
/(yourmuze)/i, // YourMuze
|
180
282
|
/(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime
|
181
|
-
], [NAME], [
|
283
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
182
284
|
|
183
285
|
/(nero (?:home|scout))\/([\w\.-]+)/i // Nero Home/Nero Scout
|
184
|
-
], [NAME, VERSION], [
|
286
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
185
287
|
|
186
288
|
/(nokia\d+)\/([\w\.-]+)/i // Nokia
|
187
|
-
], [NAME, VERSION], [
|
289
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
188
290
|
|
189
291
|
/\s(songbird)\/([\w\.-]+)/i // Songbird/Philips-Songbird
|
190
|
-
], [NAME, VERSION], [
|
292
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
191
293
|
|
192
294
|
/(winamp)3 version ([\w\.-]+)/i, // Winamp
|
193
295
|
/(winamp)\s([\w\.-]+)/i,
|
194
296
|
/(winamp)mpeg\/([\w\.-]+)/i
|
195
|
-
], [NAME, VERSION], [
|
297
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
196
298
|
|
197
299
|
/(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)
|
198
300
|
// inlight radio
|
199
|
-
], [NAME], [
|
301
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
200
302
|
|
201
303
|
/(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/([\w\.-]+)/i
|
202
304
|
// QuickTime/RealMedia/RadioApp/RadioClientApplication/
|
203
305
|
// SoundTap/Totem/Stagefright/Streamium
|
204
|
-
], [NAME, VERSION], [
|
306
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
205
307
|
|
206
308
|
/(smp)([\d\.]+)/i // SMP
|
207
|
-
], [NAME, VERSION], [
|
309
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
208
310
|
|
209
311
|
/(vlc) media player - version ([\w\.]+)/i, // VLC Videolan
|
210
312
|
/(vlc)\/([\w\.-]+)/i,
|
211
313
|
/(xbmc|gvfs|xine|xmms|irapp)\/([\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp
|
212
314
|
/(foobar2000)\/([\d\.]+)/i, // Foobar2000
|
213
315
|
/(itunes)\/([\d\.]+)/i // iTunes
|
214
|
-
], [NAME, VERSION], [
|
316
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
215
317
|
|
216
318
|
/(wmplayer)\/([\w\.-]+)/i, // Windows Media Player
|
217
319
|
/(windows-media-player)\/([\w\.-]+)/i
|
218
|
-
], [[NAME, /-/g, ' '], VERSION], [
|
320
|
+
], [[NAME, /-/g, ' '], VERSION, [TYPE, MEDIAPLAYER]], [
|
219
321
|
|
220
322
|
/windows\/([\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i,
|
221
323
|
// Windows Media Server
|
222
|
-
], [VERSION, [NAME, 'Windows']], [
|
324
|
+
], [VERSION, [NAME, 'Windows'], [TYPE, MEDIAPLAYER]], [
|
223
325
|
|
224
326
|
/(com\.riseupradioalarm)\/([\d\.]*)/i // RiseUP Radio Alarm
|
225
|
-
], [NAME, VERSION], [
|
327
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
226
328
|
|
227
329
|
/(rad.io)\s([\d\.]+)/i, // Rad.io
|
228
330
|
/(radio.(?:de|at|fr))\s([\d\.]+)/i
|
229
|
-
], [[NAME, 'rad.io'], VERSION]
|
331
|
+
], [[NAME, 'rad.io'], VERSION, [TYPE, MEDIAPLAYER]]
|
230
332
|
]
|
231
333
|
});
|
232
334
|
|
335
|
+
////////////////////////
|
336
|
+
// MODULES / LIBRARIES
|
337
|
+
///////////////////////
|
338
|
+
|
233
339
|
const Modules = Object.freeze({
|
234
340
|
browser : [
|
235
|
-
|
236
|
-
[/\b(axios|jsdom|scrapy)\/([\w\.]+)/i], [NAME, VERSION, [TYPE,
|
341
|
+
// Axios/jsdom/Scrapy
|
342
|
+
[/\b(axios|jsdom|scrapy)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, MODULE]]
|
343
|
+
]
|
344
|
+
});
|
345
|
+
|
346
|
+
//////////
|
347
|
+
// BOTS
|
348
|
+
/////////
|
349
|
+
|
350
|
+
const Bots = Object.freeze({
|
351
|
+
browser : [
|
352
|
+
...CLIs.browser,
|
353
|
+
...Crawlers.browser,
|
354
|
+
...Fetchers.browser,
|
355
|
+
...Modules.browser
|
237
356
|
]
|
238
357
|
});
|
239
358
|
|
240
359
|
module.exports = {
|
241
|
-
Apps,
|
242
360
|
Bots,
|
243
361
|
CLIs,
|
362
|
+
Crawlers,
|
244
363
|
ExtraDevices,
|
245
364
|
Emails,
|
365
|
+
Fetchers,
|
366
|
+
InApps,
|
246
367
|
MediaPlayers,
|
247
368
|
Modules
|
248
369
|
};
|