ua-parser-js 2.0.2 → 2.0.4
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/dist/ua-parser.min.js +3 -3
- package/dist/ua-parser.min.mjs +3 -3
- package/dist/ua-parser.pack.js +3 -3
- package/dist/ua-parser.pack.mjs +3 -3
- package/package.json +14 -3
- package/src/enums/ua-parser-enums.d.ts +19 -1
- package/src/enums/ua-parser-enums.js +19 -1
- package/src/enums/ua-parser-enums.mjs +19 -1
- package/src/extensions/ua-parser-extensions.d.ts +1 -1
- package/src/extensions/ua-parser-extensions.js +89 -28
- package/src/extensions/ua-parser-extensions.mjs +89 -28
- package/src/helpers/ua-parser-helpers.d.ts +1 -1
- package/src/helpers/ua-parser-helpers.js +7 -1
- package/src/helpers/ua-parser-helpers.mjs +7 -1
- package/src/main/ua-parser.d.ts +1 -1
- package/src/main/ua-parser.js +160 -99
- package/src/main/ua-parser.mjs +160 -99
@@ -1,5 +1,5 @@
|
|
1
1
|
///////////////////////////////////////////////
|
2
|
-
/* Extensions for UAParser.js v2.0.
|
2
|
+
/* Extensions for UAParser.js v2.0.4
|
3
3
|
https://github.com/faisalman/ua-parser-js
|
4
4
|
Author: Faisal Salman <f@faisalman.com>
|
5
5
|
AGPLv3 License */
|
@@ -42,25 +42,27 @@ const Crawlers = Object.freeze({
|
|
42
42
|
[
|
43
43
|
// AhrefsBot - https://ahrefs.com/robot
|
44
44
|
// Amazonbot - https://developer.amazon.com/amazonbot
|
45
|
-
// Bingbot -
|
45
|
+
// Bingbot / AdIdxBot - https://www.bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0
|
46
46
|
// CCBot - https://commoncrawl.org/faq
|
47
47
|
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
48
48
|
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
49
49
|
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
50
50
|
// GPTBot - https://platform.openai.com/docs/gptbot
|
51
|
+
// iAskBot - https://iask.ai
|
52
|
+
// LinkedInBot - http://www.linkedin.com
|
51
53
|
// MJ12bot - https://mj12bot.com/
|
52
54
|
// MojeekBot - https://www.mojeek.com/bot.html
|
55
|
+
// Onespot - https://www.onespot.com/identifying-traffic.html
|
53
56
|
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
54
57
|
// PerplexityBot - https://perplexity.ai/perplexitybot
|
55
|
-
// SemrushBot - http://www.semrush.com/bot.html
|
56
58
|
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
57
|
-
/((?:ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
59
|
+
/((?:adidx|ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|iask|linkedin|mj12|mojeek|oai-search|onespot-scraper|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
58
60
|
|
59
61
|
// Applebot - http://apple.com/go/applebot
|
60
|
-
/(applebot(?:-extended)?)
|
62
|
+
/(applebot(?:-extended)?)\/?([\w\.]*)/i,
|
61
63
|
|
62
64
|
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
63
|
-
/(baiduspider
|
65
|
+
/(baiduspider[-imagevdonwsfcpr]{0,7})\/?([\w\.]*)/i,
|
64
66
|
|
65
67
|
// ClaudeBot (Anthropic)
|
66
68
|
/(claude(?:bot|-web)|anthropic-ai)\/?([\w\.]*)/i,
|
@@ -68,6 +70,9 @@ const Crawlers = Object.freeze({
|
|
68
70
|
// Coc Coc Bot - https://help.coccoc.com/en/search-engine
|
69
71
|
/(coccocbot-(?:image|web))\/([\w\.]+)/i,
|
70
72
|
|
73
|
+
// Daum
|
74
|
+
/(daum(?:oa)?(?:-image)?)[ \/]([\w\.]+)/i,
|
75
|
+
|
71
76
|
// Facebook / Meta
|
72
77
|
// https://developers.facebook.com/docs/sharing/webmasters/web-crawlers
|
73
78
|
/(facebook(?:externalhit|catalog)|meta-externalagent)\/([\w\.]+)/i,
|
@@ -78,6 +83,12 @@ const Crawlers = Object.freeze({
|
|
78
83
|
// Internet Archive (archive.org)
|
79
84
|
/(ia_archiver|archive\.org_bot)\/?([\w\.]*)/i,
|
80
85
|
|
86
|
+
// Qwantbot - https://help.qwant.com/bot
|
87
|
+
/(qwantbot)[-\w]*\/?([\w\.]*)/i,
|
88
|
+
|
89
|
+
// SemrushBot - http://www.semrush.com/bot.html
|
90
|
+
/((?:semrush|splitsignal)bot[-abcfimostw]*)\/?([\w\.-]*)/i,
|
91
|
+
|
81
92
|
// Sogou Spider
|
82
93
|
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
83
94
|
|
@@ -90,8 +101,8 @@ const Crawlers = Object.freeze({
|
|
90
101
|
// Yeti (Naver)
|
91
102
|
/(yeti)\/([\w\.]+)/i,
|
92
103
|
|
93
|
-
// aiHitBot / Diffbot / Magpie-Crawler / Omgilibot / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
94
|
-
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |yisou)spider)\/?([\w\.]*)/i
|
104
|
+
// aiHitBot / Diffbot / Linespider / Magpie-Crawler / Omgilibot / OpenAI Image Downloader / Webzio-Extended / Screaming Frog SEO Spider / Startpage / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
105
|
+
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|openai image downloader|(?:magpie-|velenpublicweb)crawler|startpageprivateimageproxy|webzio-extended|(?:chatglm-|line|screaming frog seo |yisou)spider)\/?([\w\.]*)/i
|
95
106
|
],
|
96
107
|
|
97
108
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
@@ -108,7 +119,7 @@ const Crawlers = Object.freeze({
|
|
108
119
|
// Qihoo 360Spider
|
109
120
|
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
110
121
|
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
111
|
-
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|
|
122
|
+
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|yahoo! slurp)/i
|
112
123
|
],
|
113
124
|
[NAME, [TYPE, CRAWLER]]
|
114
125
|
]
|
@@ -201,9 +212,18 @@ const ExtraDevices = Object.freeze({
|
|
201
212
|
const Emails = Object.freeze({
|
202
213
|
browser : [
|
203
214
|
[
|
204
|
-
// Evolution / Kontact/KMail / [Microsoft/Mac] Outlook / Thunderbird
|
205
|
-
/
|
206
|
-
|
215
|
+
// Evolution / Kontact/KMail[2] / [Microsoft/Mac] Outlook / Thunderbird
|
216
|
+
// Airmail / BlueMail / DaumMail / eMClient / Foxmail / NaverMailApp / Polymail
|
217
|
+
// ProtonMail / SparkDesktop / Sparrow / Yahoo! Mail / Zimbra / ZohoMail-Desktop
|
218
|
+
/((?:air|blue|daum|fox|poly|proton)mail|emclient|evolution|kmail2?|kontact|(?:microsoft |mac)?outlook(?:-express)?|navermailapp|(?!chrom.+)sparrow|sparkdesktop|thunderbird|yahoo|zohomail-desktop)(?:m.+ail; |[\/ ])([\w\.]+)/i,
|
219
|
+
|
220
|
+
// Apple's Mail
|
221
|
+
/(mail)\/([\w\.]+) cf/i
|
222
|
+
], [NAME, VERSION, [TYPE, EMAIL]], [
|
223
|
+
|
224
|
+
// Zimbra
|
225
|
+
/zdesktop\/([\w\.]+)/i
|
226
|
+
], [VERSION, [NAME, 'Zimbra'], [TYPE, EMAIL]]
|
207
227
|
]
|
208
228
|
});
|
209
229
|
|
@@ -217,27 +237,38 @@ const Fetchers = Object.freeze({
|
|
217
237
|
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
218
238
|
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
219
239
|
// DuckAssistBot - https://duckduckgo.com/duckassistbot/
|
220
|
-
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
240
|
+
// Better Uptime / BingPreview / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
|
221
241
|
// Google Site Verifier / Meta / Yahoo! Japan
|
242
|
+
// Iframely - https://iframely.com/docs/about
|
243
|
+
// Perplexity-User - https://docs.perplexity.ai/guides/bots
|
244
|
+
// MistralAI-User - https://docs.mistral.ai/robots/
|
222
245
|
// Yandex Bots - https://yandex.com/bots
|
223
|
-
/(ahrefssiteaudit|
|
246
|
+
/(ahrefssiteaudit|(?:bing|microsoft)preview|(?:chatgpt|mistralai|perplexity)-user|mastodon|(?:discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero)bot|google-site-verification|iframely|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
224
247
|
|
225
248
|
// Bluesky
|
226
249
|
/(bluesky) cardyb\/([\w\.]+)/i,
|
227
250
|
|
251
|
+
// Skype
|
252
|
+
/(skypeuripreview) preview\/([\w\.]+)/i,
|
253
|
+
|
228
254
|
// Slackbot - https://api.slack.com/robots
|
229
255
|
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
230
256
|
|
231
257
|
// WhatsApp
|
232
|
-
/(whatsapp)\/([\w\.]+)
|
258
|
+
/(whatsapp)\/([\w\.]+)/i
|
233
259
|
],
|
234
260
|
[NAME, VERSION, [TYPE, FETCHER]],
|
235
261
|
|
236
262
|
[
|
237
263
|
// Google Bots / Cohere / Snapchat / Vercelbot / Yandex Bots
|
238
|
-
/(cohere-ai|
|
264
|
+
/((?:better uptime |telegram|vercel)bot|cohere-ai|feedfetcher-google|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|yandex(?:sitelinks|userproxy))/i
|
239
265
|
],
|
240
266
|
[NAME, [TYPE, FETCHER]],
|
267
|
+
],
|
268
|
+
|
269
|
+
os : [
|
270
|
+
[/whatsapp\/[\d\.]+ (a|i)/i],
|
271
|
+
[[NAME, os => os == 'A' ? 'Android' : 'iOS' ]]
|
241
272
|
]
|
242
273
|
});
|
243
274
|
|
@@ -246,12 +277,32 @@ const Fetchers = Object.freeze({
|
|
246
277
|
///////////////////
|
247
278
|
|
248
279
|
const InApps = Object.freeze({
|
249
|
-
browser : [
|
280
|
+
browser : [[
|
281
|
+
// Discord/Figma/Flipboard/Mattermost/Notion/Postman/Rambox/Rocket.Chat/Slack/Teams
|
282
|
+
/\b(discord|figma|mattermost|notion|postman|rambox|rocket.chat|slack|teams)\/([\w\.]+).+(electron\/|; ios)/i,
|
283
|
+
/(flipboard)\/([\w\.]+)/i
|
284
|
+
], [NAME, VERSION, [TYPE, INAPP]], [
|
285
|
+
|
286
|
+
// Evernote/Teams on mobile
|
287
|
+
/(evernote) win/i,
|
288
|
+
/(teams)mobile-(ios|and)/i
|
289
|
+
], [NAME, [TYPE, INAPP]], [
|
290
|
+
|
250
291
|
// Slack
|
251
|
-
|
292
|
+
/chatlyio\/([\d\.]+)/i],
|
293
|
+
[VERSION, [NAME, 'Slack'], [TYPE, INAPP]], [
|
294
|
+
|
295
|
+
// TikTok Lite
|
296
|
+
/ultralite app_version\/([\w\.]+)/i],
|
297
|
+
[VERSION, [NAME, 'TikTok Lite'], [TYPE, INAPP]], [
|
298
|
+
|
299
|
+
// VS Code
|
300
|
+
/\) code\/([\d\.]+).+electron\//i],
|
301
|
+
[VERSION, [NAME, 'VS Code'], [TYPE, INAPP]], [
|
252
302
|
|
253
303
|
// Yahoo! Japan
|
254
|
-
|
304
|
+
/jp\.co\.yahoo\.(?:android\.yjtop|ipn\.appli)\/([\d\.]+)/i],
|
305
|
+
[VERSION, [NAME, 'Yahoo! Japan'], [TYPE, INAPP]]
|
255
306
|
]
|
256
307
|
});
|
257
308
|
|
@@ -315,8 +366,10 @@ const Libraries = Object.freeze({
|
|
315
366
|
browser : [
|
316
367
|
// Apache-HttpClient/Axios/go-http-client/got/GuzzleHttp/Java[-HttpClient]/jsdom/libwww-perl/lua-resty-http/Needle/node-fetch/OkHttp/PHP-SOAP/PostmanRuntime/python-urllib/python-requests/Scrapy/superagent
|
317
368
|
[
|
318
|
-
/^(apache-httpclient|axios|(?:go|java)-http-client|got|guzzlehttp|java|libwww-perl|lua-resty-http|needle|node-(?:fetch|superagent)|okhttp|php-soap|postmanruntime|python-(?:urllib
|
319
|
-
/(jsdom
|
369
|
+
/^(apache-httpclient|axios|(?:go|java)-http-client|got|guzzlehttp|java|libwww-perl|lua-resty-http|needle|node-(?:fetch|superagent)|okhttp|php-soap|postmanruntime|python-(?:httpx|urllib[23]?|requests)|scrapy)\/([\w\.]+)/i,
|
370
|
+
/(adobeair|aiohttp|jsdom)\/([\w\.]+)/i,
|
371
|
+
/(nutch)-([\w\.-]+)(\(|$)/i,
|
372
|
+
/\((java)\/([\w\.]+)/i
|
320
373
|
], [NAME, VERSION, [TYPE, LIBRARY]]
|
321
374
|
]
|
322
375
|
});
|
@@ -327,15 +380,20 @@ const Libraries = Object.freeze({
|
|
327
380
|
|
328
381
|
const Vehicles = Object.freeze({
|
329
382
|
device : [
|
330
|
-
[
|
331
|
-
|
332
|
-
|
383
|
+
[/aftlbt962e2/i], // BMW
|
384
|
+
[[VENDOR, 'BMW']],
|
385
|
+
|
386
|
+
[/dilink.+(byd) auto/i], // BYD
|
387
|
+
[VENDOR],
|
333
388
|
|
334
|
-
|
335
|
-
], [
|
389
|
+
[/aftlft962x3/i], // Jeep
|
390
|
+
[[VENDOR, 'Jeep'], [MODEL, 'Wagooner']],
|
391
|
+
|
392
|
+
[/(rivian) (r1t)/i], // Rivian
|
393
|
+
[VENDOR, MODEL],
|
336
394
|
|
337
|
-
|
338
|
-
|
395
|
+
[/vcc.+netfront/i], // Volvo
|
396
|
+
[[VENDOR, 'Volvo']]
|
339
397
|
]
|
340
398
|
});
|
341
399
|
|
@@ -349,6 +407,9 @@ const Bots = Object.freeze({
|
|
349
407
|
...Crawlers.browser,
|
350
408
|
...Fetchers.browser,
|
351
409
|
...Libraries.browser
|
410
|
+
],
|
411
|
+
os : [
|
412
|
+
...Fetchers.os
|
352
413
|
]
|
353
414
|
});
|
354
415
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
// Source: /src/extensions/ua-parser-extensions.js
|
4
4
|
|
5
5
|
///////////////////////////////////////////////
|
6
|
-
/* Extensions for UAParser.js v2.0.
|
6
|
+
/* Extensions for UAParser.js v2.0.4
|
7
7
|
https://github.com/faisalman/ua-parser-js
|
8
8
|
Author: Faisal Salman <f@faisalman.com>
|
9
9
|
AGPLv3 License */
|
@@ -46,25 +46,27 @@ const Crawlers = Object.freeze({
|
|
46
46
|
[
|
47
47
|
// AhrefsBot - https://ahrefs.com/robot
|
48
48
|
// Amazonbot - https://developer.amazon.com/amazonbot
|
49
|
-
// Bingbot -
|
49
|
+
// Bingbot / AdIdxBot - https://www.bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0
|
50
50
|
// CCBot - https://commoncrawl.org/faq
|
51
51
|
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
52
52
|
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
53
53
|
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
54
54
|
// GPTBot - https://platform.openai.com/docs/gptbot
|
55
|
+
// iAskBot - https://iask.ai
|
56
|
+
// LinkedInBot - http://www.linkedin.com
|
55
57
|
// MJ12bot - https://mj12bot.com/
|
56
58
|
// MojeekBot - https://www.mojeek.com/bot.html
|
59
|
+
// Onespot - https://www.onespot.com/identifying-traffic.html
|
57
60
|
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
58
61
|
// PerplexityBot - https://perplexity.ai/perplexitybot
|
59
|
-
// SemrushBot - http://www.semrush.com/bot.html
|
60
62
|
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
61
|
-
/((?:ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
63
|
+
/((?:adidx|ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|iask|linkedin|mj12|mojeek|oai-search|onespot-scraper|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
62
64
|
|
63
65
|
// Applebot - http://apple.com/go/applebot
|
64
|
-
/(applebot(?:-extended)?)
|
66
|
+
/(applebot(?:-extended)?)\/?([\w\.]*)/i,
|
65
67
|
|
66
68
|
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
67
|
-
/(baiduspider
|
69
|
+
/(baiduspider[-imagevdonwsfcpr]{0,7})\/?([\w\.]*)/i,
|
68
70
|
|
69
71
|
// ClaudeBot (Anthropic)
|
70
72
|
/(claude(?:bot|-web)|anthropic-ai)\/?([\w\.]*)/i,
|
@@ -72,6 +74,9 @@ const Crawlers = Object.freeze({
|
|
72
74
|
// Coc Coc Bot - https://help.coccoc.com/en/search-engine
|
73
75
|
/(coccocbot-(?:image|web))\/([\w\.]+)/i,
|
74
76
|
|
77
|
+
// Daum
|
78
|
+
/(daum(?:oa)?(?:-image)?)[ \/]([\w\.]+)/i,
|
79
|
+
|
75
80
|
// Facebook / Meta
|
76
81
|
// https://developers.facebook.com/docs/sharing/webmasters/web-crawlers
|
77
82
|
/(facebook(?:externalhit|catalog)|meta-externalagent)\/([\w\.]+)/i,
|
@@ -82,6 +87,12 @@ const Crawlers = Object.freeze({
|
|
82
87
|
// Internet Archive (archive.org)
|
83
88
|
/(ia_archiver|archive\.org_bot)\/?([\w\.]*)/i,
|
84
89
|
|
90
|
+
// Qwantbot - https://help.qwant.com/bot
|
91
|
+
/(qwantbot)[-\w]*\/?([\w\.]*)/i,
|
92
|
+
|
93
|
+
// SemrushBot - http://www.semrush.com/bot.html
|
94
|
+
/((?:semrush|splitsignal)bot[-abcfimostw]*)\/?([\w\.-]*)/i,
|
95
|
+
|
85
96
|
// Sogou Spider
|
86
97
|
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
87
98
|
|
@@ -94,8 +105,8 @@ const Crawlers = Object.freeze({
|
|
94
105
|
// Yeti (Naver)
|
95
106
|
/(yeti)\/([\w\.]+)/i,
|
96
107
|
|
97
|
-
// aiHitBot / Diffbot / Magpie-Crawler / Omgilibot / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
98
|
-
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |yisou)spider)\/?([\w\.]*)/i
|
108
|
+
// aiHitBot / Diffbot / Linespider / Magpie-Crawler / Omgilibot / OpenAI Image Downloader / Webzio-Extended / Screaming Frog SEO Spider / Startpage / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
109
|
+
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|openai image downloader|(?:magpie-|velenpublicweb)crawler|startpageprivateimageproxy|webzio-extended|(?:chatglm-|line|screaming frog seo |yisou)spider)\/?([\w\.]*)/i
|
99
110
|
],
|
100
111
|
|
101
112
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
@@ -112,7 +123,7 @@ const Crawlers = Object.freeze({
|
|
112
123
|
// Qihoo 360Spider
|
113
124
|
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
114
125
|
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
115
|
-
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|
|
126
|
+
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|yahoo! slurp)/i
|
116
127
|
],
|
117
128
|
[NAME, [TYPE, CRAWLER]]
|
118
129
|
]
|
@@ -205,9 +216,18 @@ const ExtraDevices = Object.freeze({
|
|
205
216
|
const Emails = Object.freeze({
|
206
217
|
browser : [
|
207
218
|
[
|
208
|
-
// Evolution / Kontact/KMail / [Microsoft/Mac] Outlook / Thunderbird
|
209
|
-
/
|
210
|
-
|
219
|
+
// Evolution / Kontact/KMail[2] / [Microsoft/Mac] Outlook / Thunderbird
|
220
|
+
// Airmail / BlueMail / DaumMail / eMClient / Foxmail / NaverMailApp / Polymail
|
221
|
+
// ProtonMail / SparkDesktop / Sparrow / Yahoo! Mail / Zimbra / ZohoMail-Desktop
|
222
|
+
/((?:air|blue|daum|fox|poly|proton)mail|emclient|evolution|kmail2?|kontact|(?:microsoft |mac)?outlook(?:-express)?|navermailapp|(?!chrom.+)sparrow|sparkdesktop|thunderbird|yahoo|zohomail-desktop)(?:m.+ail; |[\/ ])([\w\.]+)/i,
|
223
|
+
|
224
|
+
// Apple's Mail
|
225
|
+
/(mail)\/([\w\.]+) cf/i
|
226
|
+
], [NAME, VERSION, [TYPE, EMAIL]], [
|
227
|
+
|
228
|
+
// Zimbra
|
229
|
+
/zdesktop\/([\w\.]+)/i
|
230
|
+
], [VERSION, [NAME, 'Zimbra'], [TYPE, EMAIL]]
|
211
231
|
]
|
212
232
|
});
|
213
233
|
|
@@ -221,27 +241,38 @@ const Fetchers = Object.freeze({
|
|
221
241
|
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
222
242
|
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
223
243
|
// DuckAssistBot - https://duckduckgo.com/duckassistbot/
|
224
|
-
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
244
|
+
// Better Uptime / BingPreview / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
|
225
245
|
// Google Site Verifier / Meta / Yahoo! Japan
|
246
|
+
// Iframely - https://iframely.com/docs/about
|
247
|
+
// Perplexity-User - https://docs.perplexity.ai/guides/bots
|
248
|
+
// MistralAI-User - https://docs.mistral.ai/robots/
|
226
249
|
// Yandex Bots - https://yandex.com/bots
|
227
|
-
/(ahrefssiteaudit|
|
250
|
+
/(ahrefssiteaudit|(?:bing|microsoft)preview|(?:chatgpt|mistralai|perplexity)-user|mastodon|(?:discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero)bot|google-site-verification|iframely|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
228
251
|
|
229
252
|
// Bluesky
|
230
253
|
/(bluesky) cardyb\/([\w\.]+)/i,
|
231
254
|
|
255
|
+
// Skype
|
256
|
+
/(skypeuripreview) preview\/([\w\.]+)/i,
|
257
|
+
|
232
258
|
// Slackbot - https://api.slack.com/robots
|
233
259
|
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
234
260
|
|
235
261
|
// WhatsApp
|
236
|
-
/(whatsapp)\/([\w\.]+)
|
262
|
+
/(whatsapp)\/([\w\.]+)/i
|
237
263
|
],
|
238
264
|
[NAME, VERSION, [TYPE, FETCHER]],
|
239
265
|
|
240
266
|
[
|
241
267
|
// Google Bots / Cohere / Snapchat / Vercelbot / Yandex Bots
|
242
|
-
/(cohere-ai|
|
268
|
+
/((?:better uptime |telegram|vercel)bot|cohere-ai|feedfetcher-google|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|yandex(?:sitelinks|userproxy))/i
|
243
269
|
],
|
244
270
|
[NAME, [TYPE, FETCHER]],
|
271
|
+
],
|
272
|
+
|
273
|
+
os : [
|
274
|
+
[/whatsapp\/[\d\.]+ (a|i)/i],
|
275
|
+
[[NAME, os => os == 'A' ? 'Android' : 'iOS' ]]
|
245
276
|
]
|
246
277
|
});
|
247
278
|
|
@@ -250,12 +281,32 @@ const Fetchers = Object.freeze({
|
|
250
281
|
///////////////////
|
251
282
|
|
252
283
|
const InApps = Object.freeze({
|
253
|
-
browser : [
|
284
|
+
browser : [[
|
285
|
+
// Discord/Figma/Flipboard/Mattermost/Notion/Postman/Rambox/Rocket.Chat/Slack/Teams
|
286
|
+
/\b(discord|figma|mattermost|notion|postman|rambox|rocket.chat|slack|teams)\/([\w\.]+).+(electron\/|; ios)/i,
|
287
|
+
/(flipboard)\/([\w\.]+)/i
|
288
|
+
], [NAME, VERSION, [TYPE, INAPP]], [
|
289
|
+
|
290
|
+
// Evernote/Teams on mobile
|
291
|
+
/(evernote) win/i,
|
292
|
+
/(teams)mobile-(ios|and)/i
|
293
|
+
], [NAME, [TYPE, INAPP]], [
|
294
|
+
|
254
295
|
// Slack
|
255
|
-
|
296
|
+
/chatlyio\/([\d\.]+)/i],
|
297
|
+
[VERSION, [NAME, 'Slack'], [TYPE, INAPP]], [
|
298
|
+
|
299
|
+
// TikTok Lite
|
300
|
+
/ultralite app_version\/([\w\.]+)/i],
|
301
|
+
[VERSION, [NAME, 'TikTok Lite'], [TYPE, INAPP]], [
|
302
|
+
|
303
|
+
// VS Code
|
304
|
+
/\) code\/([\d\.]+).+electron\//i],
|
305
|
+
[VERSION, [NAME, 'VS Code'], [TYPE, INAPP]], [
|
256
306
|
|
257
307
|
// Yahoo! Japan
|
258
|
-
|
308
|
+
/jp\.co\.yahoo\.(?:android\.yjtop|ipn\.appli)\/([\d\.]+)/i],
|
309
|
+
[VERSION, [NAME, 'Yahoo! Japan'], [TYPE, INAPP]]
|
259
310
|
]
|
260
311
|
});
|
261
312
|
|
@@ -319,8 +370,10 @@ const Libraries = Object.freeze({
|
|
319
370
|
browser : [
|
320
371
|
// Apache-HttpClient/Axios/go-http-client/got/GuzzleHttp/Java[-HttpClient]/jsdom/libwww-perl/lua-resty-http/Needle/node-fetch/OkHttp/PHP-SOAP/PostmanRuntime/python-urllib/python-requests/Scrapy/superagent
|
321
372
|
[
|
322
|
-
/^(apache-httpclient|axios|(?:go|java)-http-client|got|guzzlehttp|java|libwww-perl|lua-resty-http|needle|node-(?:fetch|superagent)|okhttp|php-soap|postmanruntime|python-(?:urllib
|
323
|
-
/(jsdom
|
373
|
+
/^(apache-httpclient|axios|(?:go|java)-http-client|got|guzzlehttp|java|libwww-perl|lua-resty-http|needle|node-(?:fetch|superagent)|okhttp|php-soap|postmanruntime|python-(?:httpx|urllib[23]?|requests)|scrapy)\/([\w\.]+)/i,
|
374
|
+
/(adobeair|aiohttp|jsdom)\/([\w\.]+)/i,
|
375
|
+
/(nutch)-([\w\.-]+)(\(|$)/i,
|
376
|
+
/\((java)\/([\w\.]+)/i
|
324
377
|
], [NAME, VERSION, [TYPE, LIBRARY]]
|
325
378
|
]
|
326
379
|
});
|
@@ -331,15 +384,20 @@ const Libraries = Object.freeze({
|
|
331
384
|
|
332
385
|
const Vehicles = Object.freeze({
|
333
386
|
device : [
|
334
|
-
[
|
335
|
-
|
336
|
-
|
387
|
+
[/aftlbt962e2/i], // BMW
|
388
|
+
[[VENDOR, 'BMW']],
|
389
|
+
|
390
|
+
[/dilink.+(byd) auto/i], // BYD
|
391
|
+
[VENDOR],
|
337
392
|
|
338
|
-
|
339
|
-
], [
|
393
|
+
[/aftlft962x3/i], // Jeep
|
394
|
+
[[VENDOR, 'Jeep'], [MODEL, 'Wagooner']],
|
395
|
+
|
396
|
+
[/(rivian) (r1t)/i], // Rivian
|
397
|
+
[VENDOR, MODEL],
|
340
398
|
|
341
|
-
|
342
|
-
|
399
|
+
[/vcc.+netfront/i], // Volvo
|
400
|
+
[[VENDOR, 'Volvo']]
|
343
401
|
]
|
344
402
|
});
|
345
403
|
|
@@ -353,6 +411,9 @@ const Bots = Object.freeze({
|
|
353
411
|
...Crawlers.browser,
|
354
412
|
...Fetchers.browser,
|
355
413
|
...Libraries.browser
|
414
|
+
],
|
415
|
+
os : [
|
416
|
+
...Fetchers.os
|
356
417
|
]
|
357
418
|
});
|
358
419
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
///////////////////////////////////////////////
|
2
|
-
/* Helpers for UAParser.js v2.0.
|
2
|
+
/* Helpers for UAParser.js v2.0.4
|
3
3
|
https://github.com/faisalman/ua-parser-js
|
4
4
|
Author: Faisal Salman <f@faisalman.com>
|
5
5
|
AGPLv3 License */
|
@@ -93,6 +93,9 @@ const isAIBot = (resultOrUA) => [
|
|
93
93
|
// Perplexity
|
94
94
|
'perplexitybot',
|
95
95
|
|
96
|
+
// Semrush
|
97
|
+
'semrushbot-ocob',
|
98
|
+
|
96
99
|
// Timpi
|
97
100
|
'timpibot',
|
98
101
|
|
@@ -107,6 +110,9 @@ const isAIBot = (resultOrUA) => [
|
|
107
110
|
// You.com
|
108
111
|
'youbot',
|
109
112
|
|
113
|
+
// Zhipu AI
|
114
|
+
'chatglm-spider',
|
115
|
+
|
110
116
|
// Zyte
|
111
117
|
'scrapy'
|
112
118
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
// Source: /src/helpers/ua-parser-helpers.js
|
4
4
|
|
5
5
|
///////////////////////////////////////////////
|
6
|
-
/* Helpers for UAParser.js v2.0.
|
6
|
+
/* Helpers for UAParser.js v2.0.4
|
7
7
|
https://github.com/faisalman/ua-parser-js
|
8
8
|
Author: Faisal Salman <f@faisalman.com>
|
9
9
|
AGPLv3 License */
|
@@ -97,6 +97,9 @@ const isAIBot = (resultOrUA) => [
|
|
97
97
|
// Perplexity
|
98
98
|
'perplexitybot',
|
99
99
|
|
100
|
+
// Semrush
|
101
|
+
'semrushbot-ocob',
|
102
|
+
|
100
103
|
// Timpi
|
101
104
|
'timpibot',
|
102
105
|
|
@@ -111,6 +114,9 @@ const isAIBot = (resultOrUA) => [
|
|
111
114
|
// You.com
|
112
115
|
'youbot',
|
113
116
|
|
117
|
+
// Zhipu AI
|
118
|
+
'chatglm-spider',
|
119
|
+
|
114
120
|
// Zyte
|
115
121
|
'scrapy'
|
116
122
|
|
package/src/main/ua-parser.d.ts
CHANGED