user_agent_parser 2.18.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/vendor/uap-core/regexes.yaml +159 -32
  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: 4f3568ed026aa06885cc1d67ea64e40fb8e7de10e7c35498fea51d4a25f4f77e
4
+ data.tar.gz: f2f1fd7c123a683e324493668fb8ea62f89c6dfd49f7ccca86f3e4df1e8fce7a
5
5
  SHA512:
6
- metadata.gz: 36330441c91ddfe3fcfe35c31da5aa188ef5f902078a1dc8ec0731c6e8e90a8617a50c975ed1ea666fd7f48e69be8bcc4aafad05a12e4c4d4fd60e75eafb497b
7
- data.tar.gz: 505a97655bbcc6d7e838577baf1e30e1bfddec25ba3e50820620d73cdc85c974bb530cff89cda473c2a4f2c6b1759feccd213ec6d7958c0104e3df70cbe66ae4
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+)'
@@ -394,7 +407,7 @@ 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
413
  # Brave Browser https://brave.com/ , should go before Safari and Chrome Mobile
@@ -415,7 +428,7 @@ user_agent_parsers:
415
428
  family_replacement: 'Edge Mobile'
416
429
 
417
430
  # Oculus Browser, should go before Samsung Internet
418
- - regex: '(OculusBrowser)/(\d+)\.(\d+).0.0(?:\.([0-9\-]+)|)'
431
+ - regex: '(OculusBrowser)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)'
419
432
  family_replacement: 'Oculus Browser'
420
433
 
421
434
  # Samsung Internet (based on Chrome, but lacking some features)
@@ -430,12 +443,6 @@ user_agent_parsers:
430
443
  - regex: '(coc_coc_browser)/(\d+)\.(\d+)(?:\.(\d+)|)'
431
444
  family_replacement: 'Coc Coc'
432
445
 
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
446
  # MxBrowser is Maxthon. Must go before Mobile Chrome for Android
440
447
  - regex: '(MxBrowser)/(\d+)\.(\d+)(?:\.(\d+)|)'
441
448
  family_replacement: 'Maxthon'
@@ -464,6 +471,12 @@ user_agent_parsers:
464
471
  - regex: 'Mozilla.{1,200}Android.{1,200}(GSA)/(\d+)\.(\d+)\.(\d+)'
465
472
  family_replacement: 'Google'
466
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
+
467
480
  # QQ Browsers
468
481
  - regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
469
482
  family_replacement: 'QQ Browser Mini'
@@ -487,11 +500,24 @@ user_agent_parsers:
487
500
  family_replacement: 'Tenta Browser'
488
501
 
489
502
  # Ecosia on iOS / Android
490
- - regex: '(Ecosia) ios@(\d+)\.(\d+)\.(\d+)\.(\d+)'
503
+ - regex: '(Ecosia) ios@(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
491
504
  family_replacement: 'Ecosia iOS'
492
- - regex: '(Ecosia) android@(\d+)\.(\d+)\.(\d+)\.(\d+)'
505
+ - regex: '(Ecosia) android@(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
493
506
  family_replacement: 'Ecosia Android'
494
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
+
495
521
  # Chrome Mobile
496
522
  - regex: 'Version/.{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
497
523
  family_replacement: 'Chrome Mobile WebView'
@@ -569,6 +595,89 @@ user_agent_parsers:
569
595
  - regex: '^(surveyon)/(\d+)\.(\d+)\.(\d+)'
570
596
  family_replacement: 'Surveyon'
571
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
+
572
681
  #### END SPECIAL CASES TOP ####
573
682
 
574
683
  #### MAIN CASES - this catches > 50% of all browsers ####
@@ -1388,6 +1497,13 @@ os_parsers:
1388
1497
  - regex: '^Box.{0,200};(Darwin)/(10)\.(1\d)(?:\.(\d+)|)'
1389
1498
  os_replacement: 'Mac OS X'
1390
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
+
1391
1507
  ##########
1392
1508
  # iOS
1393
1509
  # http://en.wikipedia.org/wiki/IOS_version_history
@@ -1672,29 +1788,27 @@ os_parsers:
1672
1788
  - regex: 'CFNetwork/.{0,100} Darwin/(21)\.\d+'
1673
1789
  os_replacement: 'iOS'
1674
1790
  os_v1_replacement: '15'
1675
- - regex: 'CFNetwork/.{0,100} Darwin/22\.0\.\d+'
1791
+ - regex: 'CFNetwork/.{0,100} Darwin/22\.([0-5])\.\d+'
1676
1792
  os_replacement: 'iOS'
1677
1793
  os_v1_replacement: '16'
1678
- os_v2_replacement: '0'
1679
- - regex: 'CFNetwork/.{0,100} Darwin/22\.1\.\d+'
1794
+ os_v2_replacement: '$1'
1795
+ - regex: 'CFNetwork/.{0,100} Darwin/(22)\.\d+'
1680
1796
  os_replacement: 'iOS'
1681
1797
  os_v1_replacement: '16'
1682
- os_v2_replacement: '1'
1683
- - regex: 'CFNetwork/.{0,100} Darwin/22\.2\.\d+'
1798
+ - regex: 'CFNetwork/.{0,100} Darwin/23\.([0-5])\.\d+'
1684
1799
  os_replacement: 'iOS'
1685
- os_v1_replacement: '16'
1686
- os_v2_replacement: '2'
1687
- - regex: 'CFNetwork/.{0,100} Darwin/22\.3\.\d+'
1800
+ os_v1_replacement: '17'
1801
+ os_v2_replacement: '$1'
1802
+ - regex: 'CFNetwork/.{0,100} Darwin/(23)\.\d+'
1688
1803
  os_replacement: 'iOS'
1689
- os_v1_replacement: '16'
1690
- os_v2_replacement: '3'
1691
- - regex: 'CFNetwork/.{0,100} Darwin/22\.4\.\d+'
1804
+ os_v1_replacement: '17'
1805
+ - regex: 'CFNetwork/.{0,100} Darwin/24\.([0-5])\.\d+'
1692
1806
  os_replacement: 'iOS'
1693
- os_v1_replacement: '16'
1694
- os_v2_replacement: '4'
1695
- - regex: 'CFNetwork/.{0,100} Darwin/(22)\.\d+'
1807
+ os_v1_replacement: '18'
1808
+ os_v2_replacement: '$1'
1809
+ - regex: 'CFNetwork/.{0,100} Darwin/(24)\.\d+'
1696
1810
  os_replacement: 'iOS'
1697
- os_v1_replacement: '16'
1811
+ os_v1_replacement: '18'
1698
1812
  - regex: 'CFNetwork/.{0,100} Darwin/'
1699
1813
  os_replacement: 'iOS'
1700
1814
 
@@ -1889,13 +2003,28 @@ os_parsers:
1889
2003
  # Roku Digital-Video-Players https://www.roku.com/
1890
2004
  - regex: '^(Roku)/DVP-(\d+)\.(\d+)'
1891
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
+
1892
2021
  device_parsers:
1893
2022
 
1894
2023
  #########
1895
2024
  # Mobile Spiders
1896
2025
  # Catch the mobile crawler before checking for iPhones / Androids.
1897
2026
  #########
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)'
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)'
1899
2028
  regex_flag: 'i'
1900
2029
  device_replacement: 'Spider'
1901
2030
  brand_replacement: 'Spider'
@@ -3097,7 +3226,7 @@ device_parsers:
3097
3226
  device_replacement: 'HTC $1'
3098
3227
  brand_replacement: 'HTC'
3099
3228
  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)'
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)'
3101
3230
  regex_flag: 'i'
3102
3231
  device_replacement: 'HTC $1 $2'
3103
3232
  brand_replacement: 'HTC'
@@ -5501,7 +5630,6 @@ device_parsers:
5501
5630
  brand_replacement: 'Asus'
5502
5631
  model_replacement: '$1'
5503
5632
 
5504
-
5505
5633
  ##########
5506
5634
  # Bird
5507
5635
  ##########
@@ -5701,7 +5829,6 @@ device_parsers:
5701
5829
  brand_replacement: 'Motorola'
5702
5830
  model_replacement: '$2'
5703
5831
 
5704
-
5705
5832
  ##########
5706
5833
  # nintendo
5707
5834
  ##########
@@ -5905,7 +6032,7 @@ device_parsers:
5905
6032
  ##########
5906
6033
  # Spiders (this is a hack...)
5907
6034
  ##########
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)'
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)'
5909
6036
  regex_flag: 'i'
5910
6037
  device_replacement: 'Spider'
5911
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.18.0
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: 2024-06-04 00:00:00.000000000 Z
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.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