user_agent_parser 2.18.0 → 2.21.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/vendor/uap-core/regexes.yaml +208 -33
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab744225e30c5d7b104c90cbfc58113edbeb9d4ea9f11273e88dd260619ba3eb
4
- data.tar.gz: 0a6e00fa9452546627f2a753a35617d6c72ad8d69c1afc50aa46060db3c53ee5
3
+ metadata.gz: 11089a41cd3757e84648183751f32fdac6b21ec35f816107dd0618a8d22c0513
4
+ data.tar.gz: 8e87644b16b999b1846ccc28412ebb52c22dde87ff601f330c1cd899b952bb84
5
5
  SHA512:
6
- metadata.gz: 36330441c91ddfe3fcfe35c31da5aa188ef5f902078a1dc8ec0731c6e8e90a8617a50c975ed1ea666fd7f48e69be8bcc4aafad05a12e4c4d4fd60e75eafb497b
7
- data.tar.gz: 505a97655bbcc6d7e838577baf1e30e1bfddec25ba3e50820620d73cdc85c974bb530cff89cda473c2a4f2c6b1759feccd213ec6d7958c0104e3df70cbe66ae4
6
+ metadata.gz: 78eb06db8aed97c4e8e787f445a246224475ddccff22797ce36c474ca0e80d1ebf1e8a02e65da078bfe97971ebb37c694e8db4862bc5edca940d96c960238497
7
+ data.tar.gz: c9b7dfce4c1dcb81e71d5a878c660a3104307cd2b1f7a5d1860975c1acd9dee83bc3a3818bdc1e574883c98e0b2cf75c4880fb164dedea0d5270e6977e43e29b
@@ -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+)'
@@ -394,13 +407,17 @@ user_agent_parsers:
394
407
  - regex: '(Instabridge)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
395
408
 
396
409
  # Aloha Browser
397
- - regex: '(AlohaBrowser)/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
410
+ - regex: '(AlohaBrowser|ABB)/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
398
411
  family_replacement: 'Aloha Browser'
399
412
 
400
- # Brave Browser https://brave.com/ , should go before Safari and Chrome Mobile
413
+ # Brave Browser, should go before Safari and Chrome Mobile
401
414
  - regex: '((?:B|b)rave(?:\sChrome)?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
402
415
  family_replacement: 'Brave'
403
416
 
417
+ # Brave iOS Browser, checks for (Brave) or Brave at end
418
+ - regex: '(?:\()?Brave(?:\))?\s*$'
419
+ family_replacement: 'Brave'
420
+
404
421
  # Amazon Silk, should go before Safari and Chrome Mobile
405
422
  - regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)'
406
423
  family_replacement: 'Amazon Silk'
@@ -415,7 +432,7 @@ user_agent_parsers:
415
432
  family_replacement: 'Edge Mobile'
416
433
 
417
434
  # Oculus Browser, should go before Samsung Internet
418
- - regex: '(OculusBrowser)/(\d+)\.(\d+).0.0(?:\.([0-9\-]+)|)'
435
+ - regex: '(OculusBrowser)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)'
419
436
  family_replacement: 'Oculus Browser'
420
437
 
421
438
  # Samsung Internet (based on Chrome, but lacking some features)
@@ -430,12 +447,6 @@ user_agent_parsers:
430
447
  - regex: '(coc_coc_browser)/(\d+)\.(\d+)(?:\.(\d+)|)'
431
448
  family_replacement: 'Coc Coc'
432
449
 
433
- # Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
434
- - regex: '(baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
435
- family_replacement: 'Baidu Browser'
436
- - regex: '(FlyFlow)/(\d+)\.(\d+)'
437
- family_replacement: 'Baidu Explorer'
438
-
439
450
  # MxBrowser is Maxthon. Must go before Mobile Chrome for Android
440
451
  - regex: '(MxBrowser)/(\d+)\.(\d+)(?:\.(\d+)|)'
441
452
  family_replacement: 'Maxthon'
@@ -464,6 +475,12 @@ user_agent_parsers:
464
475
  - regex: 'Mozilla.{1,200}Android.{1,200}(GSA)/(\d+)\.(\d+)\.(\d+)'
465
476
  family_replacement: 'Google'
466
477
 
478
+ # Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
479
+ - regex: '(baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
480
+ family_replacement: 'Baidu Browser'
481
+ - regex: '(FlyFlow|flyflow|baiduboxapp)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
482
+ family_replacement: 'Baidu Explorer'
483
+
467
484
  # QQ Browsers
468
485
  - regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
469
486
  family_replacement: 'QQ Browser Mini'
@@ -487,11 +504,41 @@ user_agent_parsers:
487
504
  family_replacement: 'Tenta Browser'
488
505
 
489
506
  # Ecosia on iOS / Android
490
- - regex: '(Ecosia) ios@(\d+)\.(\d+)\.(\d+)\.(\d+)'
507
+ - regex: '(Ecosia) ios@(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
491
508
  family_replacement: 'Ecosia iOS'
492
- - regex: '(Ecosia) android@(\d+)\.(\d+)\.(\d+)\.(\d+)'
509
+ - regex: '(Ecosia) android@(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
493
510
  family_replacement: 'Ecosia Android'
494
511
 
512
+ # VivoBrowser
513
+ - regex: '(VivoBrowser)\/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
514
+
515
+ # HiBrowser
516
+ - regex: '(H[Ii]Browser)\/v(\d+)\.(\d+)\.(\d+)\.(\d+)'
517
+ family_replacement: 'HiBrowser'
518
+
519
+ # Honor Browser
520
+ - regex: '(HonorBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
521
+ family_replacement: 'Honor Browser'
522
+
523
+ # Honor Browser
524
+ - regex: '(bdhonorbrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
525
+ family_replacement: 'Honor Browser'
526
+
527
+ # HeyTap Browser
528
+ - regex: '(HeyTapBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
529
+ family_replacement: 'HeyTap Browser'
530
+
531
+ # Weibo
532
+ # Must before Chrome Mobile WebView
533
+ - regex: '(weibo)__(\d+)\.(\d+)\.(\d+)'
534
+ family_replacement: 'Weibo'
535
+ - regex: '(WeiboliteiOS|WeiboIntliOS)'
536
+ family_replacement: 'Weibo'
537
+
538
+ # Phoenix Browser
539
+ - regex: '(PHX)/(\d+)\.(\d+)'
540
+ family_replacement: 'Phoenix Browser'
541
+
495
542
  # Chrome Mobile
496
543
  - regex: 'Version/.{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
497
544
  family_replacement: 'Chrome Mobile WebView'
@@ -569,6 +616,116 @@ user_agent_parsers:
569
616
  - regex: '^(surveyon)/(\d+)\.(\d+)\.(\d+)'
570
617
  family_replacement: 'Surveyon'
571
618
 
619
+ # 115 Browser
620
+ - regex: '(115Browser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
621
+ family_replacement: '115 Browser'
622
+
623
+ # Avira
624
+ - regex: '(Avira)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
625
+ family_replacement: 'Avira'
626
+
627
+ # CCleaner Browser
628
+ - regex: '(CCleaner)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
629
+ family_replacement: 'CCleaner'
630
+
631
+ # Norton
632
+ - regex: '(Norton)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
633
+ family_replacement: 'Norton'
634
+
635
+ # Quark
636
+ - regex: '(Quark)/(\d+)\.(\d+)\.(\d+)'
637
+ family_replacement: 'Quark'
638
+ # Quark PC
639
+ - regex: '(QuarkPC)/(\d+)\.(\d+)\.(\d+)'
640
+ family_replacement: 'Quark PC'
641
+
642
+ # Smart Lenovo Browser
643
+ - regex: '(SLBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+) SLBChan/(\d+)'
644
+ family_replacement: 'Smart Lenovo Browser'
645
+
646
+ # Atom Browser
647
+ - regex: '(Atom)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
648
+ family_replacement: 'Atom Browser'
649
+
650
+ # 360 Secure Browser
651
+ - regex: '(Chrome)/\d+\.\d+\.\d+\.\d+ .* QIHU 360(?:SEi18n|ENT)'
652
+ family_replacement: '360 Secure Browser'
653
+
654
+ # Decentr Web3 Browser
655
+ - regex: '(Decentr)'
656
+ family_replacement: 'Decentr Web3 Browser'
657
+
658
+ # Sparrow Browser
659
+ - regex: '(Sparrow)'
660
+ family_replacement: 'Sparrow Browser'
661
+
662
+ # Chromium GOST Browser
663
+ - regex: '(Chromium GOST)'
664
+ family_replacement: 'Chromium GOST Browser'
665
+
666
+ # AOL Shield Browser
667
+ - regex: '(AOLShield)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
668
+ family_replacement: 'AOL Shield Browser'
669
+
670
+ # Hola Browser
671
+ - regex: '(Hola)/(\d+)\.(\d+)\.(\d+)'
672
+ family_replacement: 'Hola Browser'
673
+
674
+ # Craving Explorer Browser
675
+ - regex: '(CravingExplorer)/(\d+)\.(\d+)\.(\d+)'
676
+ family_replacement: 'Craving Explorer Browser'
677
+
678
+ # Talon Cyber Security Browser
679
+ - regex: '(Talon)'
680
+ family_replacement: 'Talon Cyber Security Browser'
681
+
682
+ # QAX Browser
683
+ - regex: '(Qaxbrowser)'
684
+ family_replacement: 'QAX Browser'
685
+
686
+ # AOL Desktop Gold Browser
687
+ - regex: '(ADG)/(\d+)\.(\d+)\.(\d+)'
688
+ family_replacement: 'AOL Desktop Gold Browser'
689
+
690
+ # Sber Browser
691
+ - regex: '(SberBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
692
+ family_replacement: 'Sber Browser'
693
+
694
+ # JiSu Browser
695
+ - regex: '(JiSu)/(\d+)\.(\d+)\.(\d+)'
696
+ family_replacement: 'JiSu Browser'
697
+
698
+ # Wolvic Browser
699
+ - regex: '(Wolvic)/(\d+)\.(\d+)\.(\d+)'
700
+ family_replacement: 'Wolvic Browser'
701
+
702
+ # SmartTV WebBrowser
703
+ - regex: '(Thano)/(\d+)\.(\d+)'
704
+ family_replacement: 'SmartTV WebBrowser'
705
+
706
+ # WeChat Browser
707
+ - regex: '(MicroMessenger)/(\d+)\.(\d+)\.(\d+)'
708
+ family_replacement: 'WeChat Browser'
709
+
710
+ # Odin Browser
711
+ - regex: '(Odin)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
712
+ family_replacement: 'Odin'
713
+
714
+ # NetCast Smart TV
715
+ - regex: '(Colt)/(\d+)\.(\d+)'
716
+ family_replacement: 'NetCast Smart TV'
717
+ # Lite Browser
718
+ - regex: '(Lite Browser)/(\d+)\.(\d+)'
719
+ family_replacement: 'Lite Browser'
720
+
721
+ # Vewd Browser
722
+ - regex: '(OMI)/(\d+)\.(\d+)\.(\d+)'
723
+ family_replacement: 'Vewd Browser'
724
+
725
+ # Mypal
726
+ - regex: '(Mypal)/(\d+)\.(\d+)\.(\d+)'
727
+ family_replacement: 'Mypal Browser'
728
+
572
729
  #### END SPECIAL CASES TOP ####
573
730
 
574
731
  #### MAIN CASES - this catches > 50% of all browsers ####
@@ -1388,6 +1545,13 @@ os_parsers:
1388
1545
  - regex: '^Box.{0,200};(Darwin)/(10)\.(1\d)(?:\.(\d+)|)'
1389
1546
  os_replacement: 'Mac OS X'
1390
1547
 
1548
+ ##########
1549
+ # Hashicorp API
1550
+ # 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)
1551
+ ##########
1552
+ - regex: 'darwin; arm64'
1553
+ os_replacement: 'Mac OS X'
1554
+
1391
1555
  ##########
1392
1556
  # iOS
1393
1557
  # http://en.wikipedia.org/wiki/IOS_version_history
@@ -1672,29 +1836,27 @@ os_parsers:
1672
1836
  - regex: 'CFNetwork/.{0,100} Darwin/(21)\.\d+'
1673
1837
  os_replacement: 'iOS'
1674
1838
  os_v1_replacement: '15'
1675
- - regex: 'CFNetwork/.{0,100} Darwin/22\.0\.\d+'
1839
+ - regex: 'CFNetwork/.{0,100} Darwin/22\.([0-5])\.\d+'
1676
1840
  os_replacement: 'iOS'
1677
1841
  os_v1_replacement: '16'
1678
- os_v2_replacement: '0'
1679
- - regex: 'CFNetwork/.{0,100} Darwin/22\.1\.\d+'
1842
+ os_v2_replacement: '$1'
1843
+ - regex: 'CFNetwork/.{0,100} Darwin/(22)\.\d+'
1680
1844
  os_replacement: 'iOS'
1681
1845
  os_v1_replacement: '16'
1682
- os_v2_replacement: '1'
1683
- - regex: 'CFNetwork/.{0,100} Darwin/22\.2\.\d+'
1846
+ - regex: 'CFNetwork/.{0,100} Darwin/23\.([0-5])\.\d+'
1684
1847
  os_replacement: 'iOS'
1685
- os_v1_replacement: '16'
1686
- os_v2_replacement: '2'
1687
- - regex: 'CFNetwork/.{0,100} Darwin/22\.3\.\d+'
1848
+ os_v1_replacement: '17'
1849
+ os_v2_replacement: '$1'
1850
+ - regex: 'CFNetwork/.{0,100} Darwin/(23)\.\d+'
1688
1851
  os_replacement: 'iOS'
1689
- os_v1_replacement: '16'
1690
- os_v2_replacement: '3'
1691
- - regex: 'CFNetwork/.{0,100} Darwin/22\.4\.\d+'
1852
+ os_v1_replacement: '17'
1853
+ - regex: 'CFNetwork/.{0,100} Darwin/24\.([0-5])\.\d+'
1692
1854
  os_replacement: 'iOS'
1693
- os_v1_replacement: '16'
1694
- os_v2_replacement: '4'
1695
- - regex: 'CFNetwork/.{0,100} Darwin/(22)\.\d+'
1855
+ os_v1_replacement: '18'
1856
+ os_v2_replacement: '$1'
1857
+ - regex: 'CFNetwork/.{0,100} Darwin/(24)\.\d+'
1696
1858
  os_replacement: 'iOS'
1697
- os_v1_replacement: '16'
1859
+ os_v1_replacement: '18'
1698
1860
  - regex: 'CFNetwork/.{0,100} Darwin/'
1699
1861
  os_replacement: 'iOS'
1700
1862
 
@@ -1889,13 +2051,28 @@ os_parsers:
1889
2051
  # Roku Digital-Video-Players https://www.roku.com/
1890
2052
  - regex: '^(Roku)/DVP-(\d+)\.(\d+)'
1891
2053
 
2054
+ ##########
2055
+ # Amazon S3 client boto3
2056
+ # Hasicorp API
2057
+ # 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
2058
+ # 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
2059
+ ##########
2060
+ - regex: 'os\/macos[#]?(\d*)[.]?(\d*)[.]?(\d*)'
2061
+ os_replacement: 'Mac OS X'
2062
+ os_v1_replacement: '$1'
2063
+ os_v2_replacement: '$2'
2064
+ os_v3_replacement: '$3'
2065
+
2066
+ # Huawei HarmonyOS
2067
+ - regex: '(HarmonyOS)[\s;]+(\d+|)\.?(\d+|)\.?(\d+|)'
2068
+
1892
2069
  device_parsers:
1893
2070
 
1894
2071
  #########
1895
2072
  # Mobile Spiders
1896
2073
  # Catch the mobile crawler before checking for iPhones / Androids.
1897
2074
  #########
1898
- - 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)'
2075
+ - 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)'
1899
2076
  regex_flag: 'i'
1900
2077
  device_replacement: 'Spider'
1901
2078
  brand_replacement: 'Spider'
@@ -3097,7 +3274,7 @@ device_parsers:
3097
3274
  device_replacement: 'HTC $1'
3098
3275
  brand_replacement: 'HTC'
3099
3276
  model_replacement: '$1'
3100
- - regex: '; {0,2}(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.{1,200}?)(?:[/;\)]|Build|MIUI|1\.0)'
3277
+ - 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)'
3101
3278
  regex_flag: 'i'
3102
3279
  device_replacement: 'HTC $1 $2'
3103
3280
  brand_replacement: 'HTC'
@@ -5501,7 +5678,6 @@ device_parsers:
5501
5678
  brand_replacement: 'Asus'
5502
5679
  model_replacement: '$1'
5503
5680
 
5504
-
5505
5681
  ##########
5506
5682
  # Bird
5507
5683
  ##########
@@ -5701,7 +5877,6 @@ device_parsers:
5701
5877
  brand_replacement: 'Motorola'
5702
5878
  model_replacement: '$2'
5703
5879
 
5704
-
5705
5880
  ##########
5706
5881
  # nintendo
5707
5882
  ##########
@@ -5905,7 +6080,7 @@ device_parsers:
5905
6080
  ##########
5906
6081
  # Spiders (this is a hack...)
5907
6082
  ##########
5908
- - 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)'
6083
+ - 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)'
5909
6084
  regex_flag: 'i'
5910
6085
  device_replacement: 'Spider'
5911
6086
  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.18.0
4
+ version: 2.21.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: 2024-06-04 00:00:00.000000000 Z
11
+ date: 2026-02-12 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.11
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