user_agent_parser 2.17.0 → 2.20.0
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.
- checksums.yaml +4 -4
- data/vendor/uap-core/regexes.yaml +257 -44
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f3568ed026aa06885cc1d67ea64e40fb8e7de10e7c35498fea51d4a25f4f77e
|
4
|
+
data.tar.gz: f2f1fd7c123a683e324493668fb8ea62f89c6dfd49f7ccca86f3e4df1e8fce7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a848c7cab20b8e1e7ddbd6daba28e7b62b2cec8f6981f3a8e182a13860322994b5d12caa9c84f523665672ddc144d735607f9e7b97c8ae8532f9dc8b92241ac2
|
7
|
+
data.tar.gz: f08d60621c439105147f86698f7c45b16d92bbd39c651dbf1effa17dc9bade307a87fc7eaefa4a43452dd528817c0077356e568837f859a68968d8dfcdd5ef8c
|
@@ -148,11 +148,11 @@ user_agent_parsers:
|
|
148
148
|
family_replacement: 'Pinterestbot'
|
149
149
|
|
150
150
|
# Bots
|
151
|
-
- regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
|
151
|
+
- regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|GoogleOther|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer|GPTBot|Google-InspectionTool)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
|
152
152
|
|
153
153
|
# AWS S3 Clients
|
154
154
|
# must come before "Bots General matcher" to catch "boto"/"boto3" before "bot"
|
155
|
-
- regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
155
|
+
- regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|go-v\d|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
156
156
|
|
157
157
|
# SAFE FME
|
158
158
|
- regex: '(FME)\/(\d+\.\d+)\.(\d+)\.(\d+)'
|
@@ -179,6 +179,9 @@ user_agent_parsers:
|
|
179
179
|
- regex: '\[FB.{0,300};'
|
180
180
|
family_replacement: 'Facebook'
|
181
181
|
|
182
|
+
# RecipeRadar crawler
|
183
|
+
- regex: '(RecipeRadar)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
184
|
+
|
182
185
|
# Bots General matcher 'name/0.0'
|
183
186
|
- regex: '^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\d+)(?:\.(\d+)(?:\.(\d+)|)|)'
|
184
187
|
# Bots containing bot(but not CUBOT)
|
@@ -215,6 +218,16 @@ user_agent_parsers:
|
|
215
218
|
# Twitter
|
216
219
|
- regex: '(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|)'
|
217
220
|
family_replacement: 'Twitter'
|
221
|
+
# TikTok
|
222
|
+
- regex: '(musical_ly) app_version\/(\d+)\.(\d+)\.(\d+)'
|
223
|
+
family_replacement: 'TikTok'
|
224
|
+
- regex: '(musical_ly_)(\d+)\.(\d+)\.(\d+)'
|
225
|
+
family_replacement: 'TikTok'
|
226
|
+
- regex: '(BytedanceWebview)\/[a-z0-9]+'
|
227
|
+
family_replacement: 'TikTok'
|
228
|
+
# KakaoTalk
|
229
|
+
- regex: 'Mozilla.{1,200}Mobile.{1,100}(KAKAOTALK)/(\d+)\.(\d+)\.(\d+)'
|
230
|
+
family_replacement: 'KakaoTalk'
|
218
231
|
|
219
232
|
# Phantom app
|
220
233
|
- regex: 'Mozilla.{1,200}Mobile.{1,100}(Phantom\/ios|Phantom\/android).(\d+)\.(\d+)\.(\d+)'
|
@@ -378,6 +391,29 @@ user_agent_parsers:
|
|
378
391
|
- regex: '(Nintendo 3DS)'
|
379
392
|
family_replacement: 'NetFront NX'
|
380
393
|
|
394
|
+
# Huawei Browser, should go before Safari and Chrome Mobile
|
395
|
+
- regex: '(HuaweiBrowser)/(\d+)\.(\d+)\.(\d+)\.\d+'
|
396
|
+
family_replacement: 'Huawei Browser'
|
397
|
+
|
398
|
+
# AVG
|
399
|
+
- regex: '(AVG)/(\d+)\.(\d+)\.(\d+)\.\d+'
|
400
|
+
family_replacement: 'AVG'
|
401
|
+
|
402
|
+
# Avast
|
403
|
+
- regex: '(AvastSecureBrowser|Avast)/(\d+)\.(\d+)\.(\d+)'
|
404
|
+
family_replacement: 'Avast Secure Browser'
|
405
|
+
|
406
|
+
# Instabridge
|
407
|
+
- regex: '(Instabridge)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
408
|
+
|
409
|
+
# Aloha Browser
|
410
|
+
- regex: '(AlohaBrowser|ABB)/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
|
411
|
+
family_replacement: 'Aloha Browser'
|
412
|
+
|
413
|
+
# Brave Browser https://brave.com/ , should go before Safari and Chrome Mobile
|
414
|
+
- regex: '((?:B|b)rave(?:\sChrome)?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
|
415
|
+
family_replacement: 'Brave'
|
416
|
+
|
381
417
|
# Amazon Silk, should go before Safari and Chrome Mobile
|
382
418
|
- regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)'
|
383
419
|
family_replacement: 'Amazon Silk'
|
@@ -392,7 +428,7 @@ user_agent_parsers:
|
|
392
428
|
family_replacement: 'Edge Mobile'
|
393
429
|
|
394
430
|
# Oculus Browser, should go before Samsung Internet
|
395
|
-
- regex: '(OculusBrowser)/(\d+)\.(\d+)
|
431
|
+
- regex: '(OculusBrowser)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)'
|
396
432
|
family_replacement: 'Oculus Browser'
|
397
433
|
|
398
434
|
# Samsung Internet (based on Chrome, but lacking some features)
|
@@ -407,12 +443,6 @@ user_agent_parsers:
|
|
407
443
|
- regex: '(coc_coc_browser)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
408
444
|
family_replacement: 'Coc Coc'
|
409
445
|
|
410
|
-
# Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
|
411
|
-
- regex: '(baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
412
|
-
family_replacement: 'Baidu Browser'
|
413
|
-
- regex: '(FlyFlow)/(\d+)\.(\d+)'
|
414
|
-
family_replacement: 'Baidu Explorer'
|
415
|
-
|
416
446
|
# MxBrowser is Maxthon. Must go before Mobile Chrome for Android
|
417
447
|
- regex: '(MxBrowser)/(\d+)\.(\d+)(?:\.(\d+)|)'
|
418
448
|
family_replacement: 'Maxthon'
|
@@ -441,6 +471,12 @@ user_agent_parsers:
|
|
441
471
|
- regex: 'Mozilla.{1,200}Android.{1,200}(GSA)/(\d+)\.(\d+)\.(\d+)'
|
442
472
|
family_replacement: 'Google'
|
443
473
|
|
474
|
+
# Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
|
475
|
+
- regex: '(baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
476
|
+
family_replacement: 'Baidu Browser'
|
477
|
+
- regex: '(FlyFlow|flyflow|baiduboxapp)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
478
|
+
family_replacement: 'Baidu Explorer'
|
479
|
+
|
444
480
|
# QQ Browsers
|
445
481
|
- regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
|
446
482
|
family_replacement: 'QQ Browser Mini'
|
@@ -450,19 +486,38 @@ user_agent_parsers:
|
|
450
486
|
family_replacement: 'QQ Browser'
|
451
487
|
|
452
488
|
# DuckDuckGo
|
453
|
-
- regex: '
|
489
|
+
- regex: 'Mozilla.{1,200}Mobile.{1,100}(DuckDuckGo)/(\d+)'
|
490
|
+
family_replacement: 'DuckDuckGo Mobile'
|
491
|
+
- regex: 'Mozilla.{1,200}(DuckDuckGo)/(\d+)'
|
492
|
+
family_replacement: 'DuckDuckGo'
|
493
|
+
- regex: 'Mozilla.{1,200}Mobile.{1,100}(Ddg)/(\d+)(?:\.(\d+)|)'
|
454
494
|
family_replacement: 'DuckDuckGo Mobile'
|
495
|
+
- regex: 'Mozilla.{1,200}(Ddg)/(\d+)(?:\.(\d+)|)'
|
496
|
+
family_replacement: 'DuckDuckGo'
|
455
497
|
|
456
498
|
# Tenta Browser
|
457
499
|
- regex: '(Tenta/)(\d+)\.(\d+)\.(\d+)'
|
458
500
|
family_replacement: 'Tenta Browser'
|
459
501
|
|
460
502
|
# Ecosia on iOS / Android
|
461
|
-
- regex: '(Ecosia) ios@(\d+)
|
503
|
+
- regex: '(Ecosia) ios@(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
|
462
504
|
family_replacement: 'Ecosia iOS'
|
463
|
-
- regex: '(Ecosia) android@(\d+)
|
505
|
+
- regex: '(Ecosia) android@(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
|
464
506
|
family_replacement: 'Ecosia Android'
|
465
507
|
|
508
|
+
# VivoBrowser
|
509
|
+
- regex: '(VivoBrowser)\/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
|
510
|
+
|
511
|
+
# HiBrowser
|
512
|
+
- regex: '(HiBrowser)\/v(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
513
|
+
|
514
|
+
# Weibo
|
515
|
+
# Must before Chrome Mobile WebView
|
516
|
+
- regex: '(weibo)__(\d+)\.(\d+)\.(\d+)'
|
517
|
+
family_replacement: 'Weibo'
|
518
|
+
- regex: '(WeiboliteiOS|WeiboIntliOS)'
|
519
|
+
family_replacement: 'Weibo'
|
520
|
+
|
466
521
|
# Chrome Mobile
|
467
522
|
- regex: 'Version/.{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
468
523
|
family_replacement: 'Chrome Mobile WebView'
|
@@ -502,6 +557,8 @@ user_agent_parsers:
|
|
502
557
|
# Yandex Browser
|
503
558
|
- regex: '(YaBrowser)/(\d+)\.(\d+)\.(\d+)'
|
504
559
|
family_replacement: 'Yandex Browser'
|
560
|
+
- regex: '(YaSearchBrowser)/(\d+)\.(\d+)\.(\d+)'
|
561
|
+
family_replacement: 'Yandex Browser'
|
505
562
|
|
506
563
|
# Mail.ru Amigo/Internet Browser (Chromium-based)
|
507
564
|
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).{0,100} MRCHROME'
|
@@ -538,6 +595,89 @@ user_agent_parsers:
|
|
538
595
|
- regex: '^(surveyon)/(\d+)\.(\d+)\.(\d+)'
|
539
596
|
family_replacement: 'Surveyon'
|
540
597
|
|
598
|
+
# 115 Browser
|
599
|
+
- regex: '(115Browser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
600
|
+
family_replacement: '115 Browser'
|
601
|
+
|
602
|
+
# Avira
|
603
|
+
- regex: '(Avira)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
604
|
+
family_replacement: 'Avira'
|
605
|
+
|
606
|
+
# CCleaner Browser
|
607
|
+
- regex: '(CCleaner)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
608
|
+
family_replacement: 'CCleaner'
|
609
|
+
|
610
|
+
# Norton
|
611
|
+
- regex: '(Norton)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
612
|
+
family_replacement: 'Norton'
|
613
|
+
|
614
|
+
# Quark
|
615
|
+
- regex: '(Quark)/(\d+)\.(\d+)\.(\d+)'
|
616
|
+
family_replacement: 'Quark'
|
617
|
+
# Quark PC
|
618
|
+
- regex: '(QuarkPC)/(\d+)\.(\d+)\.(\d+)'
|
619
|
+
family_replacement: 'Quark PC'
|
620
|
+
|
621
|
+
# Smart Lenovo Browser
|
622
|
+
- regex: '(SLBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+) SLBChan/(\d+)'
|
623
|
+
family_replacement: 'Smart Lenovo Browser'
|
624
|
+
|
625
|
+
# Atom Browser
|
626
|
+
- regex: '(Atom)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
627
|
+
family_replacement: 'Atom Browser'
|
628
|
+
|
629
|
+
# 360 Secure Browser
|
630
|
+
- regex: '(Chrome)/\d+\.\d+\.\d+\.\d+ .* QIHU 360(?:SEi18n|ENT)'
|
631
|
+
family_replacement: '360 Secure Browser'
|
632
|
+
|
633
|
+
# Decentr Web3 Browser
|
634
|
+
- regex: '(Decentr)'
|
635
|
+
family_replacement: 'Decentr Web3 Browser'
|
636
|
+
|
637
|
+
# Sparrow Browser
|
638
|
+
- regex: '(Sparrow)'
|
639
|
+
family_replacement: 'Sparrow Browser'
|
640
|
+
|
641
|
+
# Chromium GOST Browser
|
642
|
+
- regex: '(Chromium GOST)'
|
643
|
+
family_replacement: 'Chromium GOST Browser'
|
644
|
+
|
645
|
+
# AOL Shield Browser
|
646
|
+
- regex: '(AOLShield)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
647
|
+
family_replacement: 'AOL Shield Browser'
|
648
|
+
|
649
|
+
# Hola Browser
|
650
|
+
- regex: '(Hola)/(\d+)\.(\d+)\.(\d+)'
|
651
|
+
family_replacement: 'Hola Browser'
|
652
|
+
|
653
|
+
# Craving Explorer Browser
|
654
|
+
- regex: '(CravingExplorer)/(\d+)\.(\d+)\.(\d+)'
|
655
|
+
family_replacement: 'Craving Explorer Browser'
|
656
|
+
|
657
|
+
# Talon Cyber Security Browser
|
658
|
+
- regex: '(Talon)'
|
659
|
+
family_replacement: 'Talon Cyber Security Browser'
|
660
|
+
|
661
|
+
# QAX Browser
|
662
|
+
- regex: '(Qaxbrowser)'
|
663
|
+
family_replacement: 'QAX Browser'
|
664
|
+
|
665
|
+
# AOL Desktop Gold Browser
|
666
|
+
- regex: '(ADG)/(\d+)\.(\d+)\.(\d+)'
|
667
|
+
family_replacement: 'AOL Desktop Gold Browser'
|
668
|
+
|
669
|
+
# Sber Browser
|
670
|
+
- regex: '(SberBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
|
671
|
+
family_replacement: 'Sber Browser'
|
672
|
+
|
673
|
+
# JiSu Browser
|
674
|
+
- regex: '(JiSu)/(\d+)\.(\d+)\.(\d+)'
|
675
|
+
family_replacement: 'JiSu Browser'
|
676
|
+
|
677
|
+
# Wolvic Browser
|
678
|
+
- regex: '(Wolvic)/(\d+)\.(\d+)\.(\d+)'
|
679
|
+
family_replacement: 'Wolvic Browser'
|
680
|
+
|
541
681
|
#### END SPECIAL CASES TOP ####
|
542
682
|
|
543
683
|
#### MAIN CASES - this catches > 50% of all browsers ####
|
@@ -606,18 +746,14 @@ user_agent_parsers:
|
|
606
746
|
- regex: 'Superhuman'
|
607
747
|
family_replacement: 'Superhuman'
|
608
748
|
|
609
|
-
# Vivaldi
|
610
|
-
- regex: '(Vivaldi)/(\d+)
|
749
|
+
# Vivaldi
|
750
|
+
- regex: '(Vivaldi)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
|
611
751
|
|
612
752
|
# Edge/major_version.minor_version
|
613
753
|
# Edge with chromium Edg/major_version.minor_version.patch.minor_patch
|
614
754
|
- regex: '(Edge?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
|
615
755
|
family_replacement: 'Edge'
|
616
756
|
|
617
|
-
# Brave Browser https://brave.com/
|
618
|
-
- regex: '(brave)/(\d+)\.(\d+)\.(\d+) Chrome'
|
619
|
-
family_replacement: 'Brave'
|
620
|
-
|
621
757
|
# Iron Browser ~since version 50
|
622
758
|
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]{0,100} Iron[^/]'
|
623
759
|
family_replacement: 'Iron'
|
@@ -1118,6 +1254,29 @@ os_parsers:
|
|
1118
1254
|
# Special case for new ArcGIS Mobile products
|
1119
1255
|
- regex: 'ArcGISRuntime-(?:Android|iOS)\/\d+\.\d+(?:\.\d+|) \((Android|iOS) (\d+)(?:\.(\d+)(?:\.(\d+)|)|);'
|
1120
1256
|
|
1257
|
+
##########
|
1258
|
+
# Chromecast
|
1259
|
+
##########
|
1260
|
+
# Ex: Mozilla/5.0 (Linux; Android 12.0; Build/STTL.240206.002) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.0 Safari/537.36 CrKey/1.56.500000 DeviceType/AndroidTV
|
1261
|
+
# These are the newer Android-based "Google TV" Chromecast devices.
|
1262
|
+
# Google stopped updating the Chromecast firmware version in these, so they always say CrKey/1.56.500000. Therefore we extract the more useful Android version instead.
|
1263
|
+
- regex: '(Android) (\d+)(?:\.(\d+)).*CrKey'
|
1264
|
+
os_replacement: 'Chromecast Android'
|
1265
|
+
|
1266
|
+
# Ex: Mozilla/5.0 (Fuchsia) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 CrKey/1.56.500000
|
1267
|
+
# These are some intermediate "Nest Hub" Chromecast devices running Fuchsia.
|
1268
|
+
- regex: 'Fuchsia.*(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|)'
|
1269
|
+
os_replacement: 'Chromecast Fuchsia'
|
1270
|
+
|
1271
|
+
# Ex: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.225 Safari/537.36 CrKey/1.56.500000 DeviceType/SmartSpeaker
|
1272
|
+
- regex: 'Linux.*(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|).*DeviceType/SmartSpeaker'
|
1273
|
+
os_replacement: 'Chromecast SmartSpeaker'
|
1274
|
+
|
1275
|
+
# Ex: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.225 Safari/537.36 CrKey/1.56.500000 DeviceType/Chromecast
|
1276
|
+
# These are the oldest Chromecast devices that ran Linux.
|
1277
|
+
- regex: 'Linux.*(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|)'
|
1278
|
+
os_replacement: 'Chromecast Linux'
|
1279
|
+
|
1121
1280
|
##########
|
1122
1281
|
# Android
|
1123
1282
|
# can actually detect rooted android os. do we care?
|
@@ -1281,6 +1440,10 @@ os_parsers:
|
|
1281
1440
|
##########
|
1282
1441
|
- regex: '(Tizen)[/ ](\d+)\.(\d+)'
|
1283
1442
|
|
1443
|
+
# Chrome and Edge on iOS with desktop mode contains Mac OS X, so it must be before any Mac OS check
|
1444
|
+
- regex: 'Intel Mac OS X.+(CriOS|EdgiOS)/\d+'
|
1445
|
+
os_replacement: 'iOS'
|
1446
|
+
|
1284
1447
|
##########
|
1285
1448
|
# Mac OS
|
1286
1449
|
# @ref: http://en.wikipedia.org/wiki/Mac_OS_X#Versions
|
@@ -1334,6 +1497,13 @@ os_parsers:
|
|
1334
1497
|
- regex: '^Box.{0,200};(Darwin)/(10)\.(1\d)(?:\.(\d+)|)'
|
1335
1498
|
os_replacement: 'Mac OS X'
|
1336
1499
|
|
1500
|
+
##########
|
1501
|
+
# Hashicorp API
|
1502
|
+
# APN/1.0 HashiCorp/1.0 Terraform/1.8.0 (+https://www.terraform.io) terraform-provider-aws/4.67.0 (+https://registry.terraform.io/providers/hashicorp/aws) aws-sdk-go/1.44.261 (go1.19.8; darwin; arm64)
|
1503
|
+
##########
|
1504
|
+
- regex: 'darwin; arm64'
|
1505
|
+
os_replacement: 'Mac OS X'
|
1506
|
+
|
1337
1507
|
##########
|
1338
1508
|
# iOS
|
1339
1509
|
# http://en.wikipedia.org/wiki/IOS_version_history
|
@@ -1618,29 +1788,27 @@ os_parsers:
|
|
1618
1788
|
- regex: 'CFNetwork/.{0,100} Darwin/(21)\.\d+'
|
1619
1789
|
os_replacement: 'iOS'
|
1620
1790
|
os_v1_replacement: '15'
|
1621
|
-
- regex: 'CFNetwork/.{0,100} Darwin/22\.0\.\d+'
|
1791
|
+
- regex: 'CFNetwork/.{0,100} Darwin/22\.([0-5])\.\d+'
|
1622
1792
|
os_replacement: 'iOS'
|
1623
1793
|
os_v1_replacement: '16'
|
1624
|
-
os_v2_replacement: '
|
1625
|
-
- regex: 'CFNetwork/.{0,100} Darwin/22
|
1794
|
+
os_v2_replacement: '$1'
|
1795
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(22)\.\d+'
|
1626
1796
|
os_replacement: 'iOS'
|
1627
1797
|
os_v1_replacement: '16'
|
1628
|
-
|
1629
|
-
- regex: 'CFNetwork/.{0,100} Darwin/22\.2\.\d+'
|
1798
|
+
- regex: 'CFNetwork/.{0,100} Darwin/23\.([0-5])\.\d+'
|
1630
1799
|
os_replacement: 'iOS'
|
1631
|
-
os_v1_replacement: '
|
1632
|
-
os_v2_replacement: '
|
1633
|
-
- regex: 'CFNetwork/.{0,100} Darwin/
|
1800
|
+
os_v1_replacement: '17'
|
1801
|
+
os_v2_replacement: '$1'
|
1802
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(23)\.\d+'
|
1634
1803
|
os_replacement: 'iOS'
|
1635
|
-
os_v1_replacement: '
|
1636
|
-
|
1637
|
-
- regex: 'CFNetwork/.{0,100} Darwin/22\.4\.\d+'
|
1804
|
+
os_v1_replacement: '17'
|
1805
|
+
- regex: 'CFNetwork/.{0,100} Darwin/24\.([0-5])\.\d+'
|
1638
1806
|
os_replacement: 'iOS'
|
1639
|
-
os_v1_replacement: '
|
1640
|
-
os_v2_replacement: '
|
1641
|
-
- regex: 'CFNetwork/.{0,100} Darwin/(
|
1807
|
+
os_v1_replacement: '18'
|
1808
|
+
os_v2_replacement: '$1'
|
1809
|
+
- regex: 'CFNetwork/.{0,100} Darwin/(24)\.\d+'
|
1642
1810
|
os_replacement: 'iOS'
|
1643
|
-
os_v1_replacement: '
|
1811
|
+
os_v1_replacement: '18'
|
1644
1812
|
- regex: 'CFNetwork/.{0,100} Darwin/'
|
1645
1813
|
os_replacement: 'iOS'
|
1646
1814
|
|
@@ -1795,12 +1963,6 @@ os_parsers:
|
|
1795
1963
|
|
1796
1964
|
- regex: '(WebTV)/(\d+).(\d+)'
|
1797
1965
|
|
1798
|
-
##########
|
1799
|
-
# Chromecast
|
1800
|
-
##########
|
1801
|
-
- regex: '(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|)'
|
1802
|
-
os_replacement: 'Chromecast'
|
1803
|
-
|
1804
1966
|
##########
|
1805
1967
|
# Misc mobile
|
1806
1968
|
##########
|
@@ -1841,13 +2003,28 @@ os_parsers:
|
|
1841
2003
|
# Roku Digital-Video-Players https://www.roku.com/
|
1842
2004
|
- regex: '^(Roku)/DVP-(\d+)\.(\d+)'
|
1843
2005
|
|
2006
|
+
##########
|
2007
|
+
# Amazon S3 client boto3
|
2008
|
+
# Hasicorp API
|
2009
|
+
# Boto3/1.28.62 md/Botocore#1.31.62 ua/2.0 os/macos#22.4.0 md/arch#arm64 lang/python#3.11.6 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.31.62
|
2010
|
+
# APN/1.0 HashiCorp/1.0 Terraform/1.8.1 (+https://www.terraform.io) terraform-provider-aws/4.67.0 (+https://registry.terraform.io/providers/hashicorp/aws) aws-sdk-go-v2/1.18.0 os/macos lang/go/1.19.8 md/GOOS/darwin md/GOARCH/arm64 api/identitystore/1.16.11
|
2011
|
+
##########
|
2012
|
+
- regex: 'os\/macos[#]?(\d*)[.]?(\d*)[.]?(\d*)'
|
2013
|
+
os_replacement: 'Mac OS X'
|
2014
|
+
os_v1_replacement: '$1'
|
2015
|
+
os_v2_replacement: '$2'
|
2016
|
+
os_v3_replacement: '$3'
|
2017
|
+
|
2018
|
+
# Huawei HarmonyOS
|
2019
|
+
- regex: '(HarmonyOS)[\s;]+(\d+|)\.?(\d+|)\.?(\d+|)'
|
2020
|
+
|
1844
2021
|
device_parsers:
|
1845
2022
|
|
1846
2023
|
#########
|
1847
2024
|
# Mobile Spiders
|
1848
2025
|
# Catch the mobile crawler before checking for iPhones / Androids.
|
1849
2026
|
#########
|
1850
|
-
- regex: '^.{0,100}?(?:(?:iPhone|Windows CE|Windows Phone|Android).{0,300}(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\d|(?:bot|spider)\.html)|AdsBot-Google-Mobile.{0,200}iPhone)'
|
2027
|
+
- regex: '^.{0,100}?(?:(?:iPhone|Windows CE|Windows Phone|Android).{0,300}(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\d|(?:bot|spider)\.html|Google-InspectionTool)|AdsBot-Google-Mobile.{0,200}iPhone)'
|
1851
2028
|
regex_flag: 'i'
|
1852
2029
|
device_replacement: 'Spider'
|
1853
2030
|
brand_replacement: 'Spider'
|
@@ -2434,6 +2611,39 @@ device_parsers:
|
|
2434
2611
|
brand_replacement: 'ChangJia'
|
2435
2612
|
model_replacement: '$1'
|
2436
2613
|
|
2614
|
+
##########
|
2615
|
+
# Chromecast
|
2616
|
+
# @ref: https://en.wikipedia.org/wiki/Chromecast#Hardware_and_design
|
2617
|
+
##########
|
2618
|
+
# Ex: Mozilla/5.0 (Linux; Android 12.0; Build/STTL.240206.002) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.0 Safari/537.36 CrKey/1.56.500000 DeviceType/AndroidTV
|
2619
|
+
# Ex: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.225 Safari/537.36 CrKey/1.56.500000 DeviceType/SmartSpeaker
|
2620
|
+
# Ex: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.225 Safari/537.36 CrKey/1.56.500000 DeviceType/Chromecast
|
2621
|
+
# These are the newer Chromecast devices, such as smart speakers, Google TVs, etc. that have an explicit device type.
|
2622
|
+
- regex: 'CrKey.*DeviceType/([^/]*)'
|
2623
|
+
brand_replacement: 'Google'
|
2624
|
+
device_replacement: 'Chromecast'
|
2625
|
+
model_replacement: '$1'
|
2626
|
+
|
2627
|
+
# Ex: Mozilla/5.0 (Fuchsia) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 CrKey/1.56.500000
|
2628
|
+
# These are some intermediate "Nest Hub" Chromecast devices running Fuchsia.
|
2629
|
+
- regex: 'Fuchsia.*CrKey'
|
2630
|
+
brand_replacement: 'Google'
|
2631
|
+
device_replacement: 'Chromecast'
|
2632
|
+
model_replacement: 'Nest Hub'
|
2633
|
+
|
2634
|
+
# Ex: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.47 Safari/537.36 CrKey/1.36.159268
|
2635
|
+
# These are the first generation of Chromecast devices that ran Linux. They don't specify a device type.
|
2636
|
+
- regex: 'Linux.*CrKey/1.36'
|
2637
|
+
brand_replacement: 'Google'
|
2638
|
+
device_replacement: 'Chromecast'
|
2639
|
+
model_replacement: 'First Generation'
|
2640
|
+
|
2641
|
+
# We have no data on the user agent strings of other models, except that they all report CrKey/
|
2642
|
+
- regex: 'CrKey/'
|
2643
|
+
brand_replacement: 'Google'
|
2644
|
+
device_replacement: 'Chromecast'
|
2645
|
+
model_replacement: 'Chromecast'
|
2646
|
+
|
2437
2647
|
#########
|
2438
2648
|
# Cloudfone
|
2439
2649
|
# @ref: http://www.cloudfonemobile.com/
|
@@ -3016,7 +3226,7 @@ device_parsers:
|
|
3016
3226
|
device_replacement: 'HTC $1'
|
3017
3227
|
brand_replacement: 'HTC'
|
3018
3228
|
model_replacement: '$1'
|
3019
|
-
- regex: '; {0,2}(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|
|
3229
|
+
- regex: '; {0,2}(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.{1,200}?)(?:[/;\)]|Build|MIUI|1\.0)'
|
3020
3230
|
regex_flag: 'i'
|
3021
3231
|
device_replacement: 'HTC $1 $2'
|
3022
3232
|
brand_replacement: 'HTC'
|
@@ -3590,6 +3800,11 @@ device_parsers:
|
|
3590
3800
|
# Meta
|
3591
3801
|
# @ref: https://www.meta.com
|
3592
3802
|
#########
|
3803
|
+
- regex: 'Quest 3'
|
3804
|
+
device_replacement: 'Quest'
|
3805
|
+
brand_replacement: 'Meta'
|
3806
|
+
model_replacement: 'Quest 3'
|
3807
|
+
|
3593
3808
|
- regex: 'Quest 2'
|
3594
3809
|
device_replacement: 'Quest'
|
3595
3810
|
brand_replacement: 'Meta'
|
@@ -5415,7 +5630,6 @@ device_parsers:
|
|
5415
5630
|
brand_replacement: 'Asus'
|
5416
5631
|
model_replacement: '$1'
|
5417
5632
|
|
5418
|
-
|
5419
5633
|
##########
|
5420
5634
|
# Bird
|
5421
5635
|
##########
|
@@ -5615,7 +5829,6 @@ device_parsers:
|
|
5615
5829
|
brand_replacement: 'Motorola'
|
5616
5830
|
model_replacement: '$2'
|
5617
5831
|
|
5618
|
-
|
5619
5832
|
##########
|
5620
5833
|
# nintendo
|
5621
5834
|
##########
|
@@ -5819,7 +6032,7 @@ device_parsers:
|
|
5819
6032
|
##########
|
5820
6033
|
# Spiders (this is a hack...)
|
5821
6034
|
##########
|
5822
|
-
- regex: '^.{0,100}(bot|BUbiNG|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Daum|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.{0,200}/\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|StatusCake|WhatsApp|masscan|Google Web Preview|Qwantify|Yeti|OgScrper)'
|
6035
|
+
- regex: '^.{0,100}(bot|BUbiNG|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Daum|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.{0,200}/\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|StatusCake|WhatsApp|masscan|Google Web Preview|Qwantify|Yeti|OgScrper|RecipeRadar|GPTBot|Google-InspectionTool)'
|
5823
6036
|
regex_flag: 'i'
|
5824
6037
|
device_replacement: 'Spider'
|
5825
6038
|
brand_replacement: 'Spider'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: user_agent_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Lucas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
A simple, comprehensive Ruby gem for parsing user agent strings
|
@@ -48,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '0'
|
50
50
|
requirements: []
|
51
|
-
rubygems_version: 3.5.
|
51
|
+
rubygems_version: 3.5.22
|
52
52
|
signing_key:
|
53
53
|
specification_version: 4
|
54
54
|
summary: Parsing user agent strings with the help of BrowserScope's UA database
|