user_agent_parser 2.16.0 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/vendor/uap-core/regexes.yaml +115 -21
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a48095209e88dd1c8b49954029334bddecbbb1facb44cbf3b2ed5e700b259541
4
- data.tar.gz: 06b14639160f7cdc6f3b0cc0ffc88147cee9cd1b92dc8a10ad61a420edb4a5fb
3
+ metadata.gz: ab744225e30c5d7b104c90cbfc58113edbeb9d4ea9f11273e88dd260619ba3eb
4
+ data.tar.gz: 0a6e00fa9452546627f2a753a35617d6c72ad8d69c1afc50aa46060db3c53ee5
5
5
  SHA512:
6
- metadata.gz: 94d1c6ad450918654bf5c6b9e9aaffd6ba3e28a01d17741a4443dc63110c30d310b81654de91297e9ce79ec31de3da40d8088d792cb100aca91d486b5410cf67
7
- data.tar.gz: be73315646276e7ab2db8ce86cc54e5802fcd6cff84c8176c2af9db935911f853606edada097ac1ab471c5b9b4557363b27099412388599279790edf10882565
6
+ metadata.gz: 36330441c91ddfe3fcfe35c31da5aa188ef5f902078a1dc8ec0731c6e8e90a8617a50c975ed1ea666fd7f48e69be8bcc4aafad05a12e4c4d4fd60e75eafb497b
7
+ data.tar.gz: 505a97655bbcc6d7e838577baf1e30e1bfddec25ba3e50820620d73cdc85c974bb530cff89cda473c2a4f2c6b1759feccd213ec6d7958c0104e3df70cbe66ae4
@@ -217,7 +217,7 @@ user_agent_parsers:
217
217
  family_replacement: 'Twitter'
218
218
 
219
219
  # Phantom app
220
- - regex: 'Mozilla.{1,200}Mobile.{1,100}(Phantom\/ios|android).(\d+)\.(\d+)\.(\d+)'
220
+ - regex: 'Mozilla.{1,200}Mobile.{1,100}(Phantom\/ios|Phantom\/android).(\d+)\.(\d+)\.(\d+)'
221
221
  family_replacement: 'Phantom'
222
222
 
223
223
  # aspiegel.com spider (owned by Huawei, later called PetalBot)
@@ -378,6 +378,29 @@ user_agent_parsers:
378
378
  - regex: '(Nintendo 3DS)'
379
379
  family_replacement: 'NetFront NX'
380
380
 
381
+ # Huawei Browser, should go before Safari and Chrome Mobile
382
+ - regex: '(HuaweiBrowser)/(\d+)\.(\d+)\.(\d+)\.\d+'
383
+ family_replacement: 'Huawei Browser'
384
+
385
+ # AVG
386
+ - regex: '(AVG)/(\d+)\.(\d+)\.(\d+)\.\d+'
387
+ family_replacement: 'AVG'
388
+
389
+ # Avast
390
+ - regex: '(AvastSecureBrowser|Avast)/(\d+)\.(\d+)\.(\d+)'
391
+ family_replacement: 'Avast Secure Browser'
392
+
393
+ # Instabridge
394
+ - regex: '(Instabridge)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
395
+
396
+ # Aloha Browser
397
+ - regex: '(AlohaBrowser)/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
398
+ family_replacement: 'Aloha Browser'
399
+
400
+ # Brave Browser https://brave.com/ , should go before Safari and Chrome Mobile
401
+ - regex: '((?:B|b)rave(?:\sChrome)?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
402
+ family_replacement: 'Brave'
403
+
381
404
  # Amazon Silk, should go before Safari and Chrome Mobile
382
405
  - regex: '(Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)'
383
406
  family_replacement: 'Amazon Silk'
@@ -388,7 +411,7 @@ user_agent_parsers:
388
411
  # Edge Mobile
389
412
  - regex: 'Windows Phone .{0,200}(Edge)/(\d+)\.(\d+)'
390
413
  family_replacement: 'Edge Mobile'
391
- - regex: '(EdgiOS|EdgA)/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|)'
414
+ - regex: '(EdgiOS|EdgA)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
392
415
  family_replacement: 'Edge Mobile'
393
416
 
394
417
  # Oculus Browser, should go before Samsung Internet
@@ -450,13 +473,25 @@ user_agent_parsers:
450
473
  family_replacement: 'QQ Browser'
451
474
 
452
475
  # DuckDuckGo
453
- - regex: 'Mobile.{0,200}(DuckDuckGo)/(\d+)'
476
+ - regex: 'Mozilla.{1,200}Mobile.{1,100}(DuckDuckGo)/(\d+)'
477
+ family_replacement: 'DuckDuckGo Mobile'
478
+ - regex: 'Mozilla.{1,200}(DuckDuckGo)/(\d+)'
479
+ family_replacement: 'DuckDuckGo'
480
+ - regex: 'Mozilla.{1,200}Mobile.{1,100}(Ddg)/(\d+)(?:\.(\d+)|)'
454
481
  family_replacement: 'DuckDuckGo Mobile'
482
+ - regex: 'Mozilla.{1,200}(Ddg)/(\d+)(?:\.(\d+)|)'
483
+ family_replacement: 'DuckDuckGo'
455
484
 
456
485
  # Tenta Browser
457
486
  - regex: '(Tenta/)(\d+)\.(\d+)\.(\d+)'
458
487
  family_replacement: 'Tenta Browser'
459
488
 
489
+ # Ecosia on iOS / Android
490
+ - regex: '(Ecosia) ios@(\d+)\.(\d+)\.(\d+)\.(\d+)'
491
+ family_replacement: 'Ecosia iOS'
492
+ - regex: '(Ecosia) android@(\d+)\.(\d+)\.(\d+)\.(\d+)'
493
+ family_replacement: 'Ecosia Android'
494
+
460
495
  # Chrome Mobile
461
496
  - regex: 'Version/.{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
462
497
  family_replacement: 'Chrome Mobile WebView'
@@ -464,7 +499,7 @@ user_agent_parsers:
464
499
  family_replacement: 'Chrome Mobile WebView'
465
500
  - regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
466
501
  family_replacement: 'Chrome Mobile'
467
- - regex: '(CriOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
502
+ - regex: '(CriOS)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
468
503
  family_replacement: 'Chrome Mobile iOS'
469
504
  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)'
470
505
  family_replacement: 'Chrome Mobile'
@@ -496,6 +531,8 @@ user_agent_parsers:
496
531
  # Yandex Browser
497
532
  - regex: '(YaBrowser)/(\d+)\.(\d+)\.(\d+)'
498
533
  family_replacement: 'Yandex Browser'
534
+ - regex: '(YaSearchBrowser)/(\d+)\.(\d+)\.(\d+)'
535
+ family_replacement: 'Yandex Browser'
499
536
 
500
537
  # Mail.ru Amigo/Internet Browser (Chromium-based)
501
538
  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).{0,100} MRCHROME'
@@ -600,18 +637,14 @@ user_agent_parsers:
600
637
  - regex: 'Superhuman'
601
638
  family_replacement: 'Superhuman'
602
639
 
603
- # Vivaldi uses "Vivaldi"
604
- - regex: '(Vivaldi)/(\d+)\.(\d+)\.(\d+)'
640
+ # Vivaldi
641
+ - regex: '(Vivaldi)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
605
642
 
606
643
  # Edge/major_version.minor_version
607
644
  # Edge with chromium Edg/major_version.minor_version.patch.minor_patch
608
645
  - regex: '(Edge?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)'
609
646
  family_replacement: 'Edge'
610
647
 
611
- # Brave Browser https://brave.com/
612
- - regex: '(brave)/(\d+)\.(\d+)\.(\d+) Chrome'
613
- family_replacement: 'Brave'
614
-
615
648
  # Iron Browser ~since version 50
616
649
  - regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]{0,100} Iron[^/]'
617
650
  family_replacement: 'Iron'
@@ -1022,10 +1055,12 @@ user_agent_parsers:
1022
1055
  # HTTrack crawler
1023
1056
  - regex: '\b(HTTrack) (\d+)\.(\d+)(?:[\.\-](\d+)|)'
1024
1057
 
1025
- # SerenityOS (https://serenityos.org)
1026
- # https://github.com/SerenityOS/serenity/blob/2e1bbcb0faeae92d7595b8e0b022a8cdcecca07e/Userland/Libraries/LibWeb/Loader/ResourceLoader.h#L27
1027
- - regex: 'SerenityOS'
1028
- family_replacement: 'SerenityOS Browser'
1058
+ # Ladybird Browser (https://ladybird.dev)
1059
+ # https://github.com/SerenityOS/serenity/blob/6a662e0d43810c1dbd56fbf0c123f258aa1d694e/Userland/Libraries/LibWeb/Loader/ResourceLoader.h#L64
1060
+ - regex: '(Ladybird)\/(\d+)\.(\d+)'
1061
+
1062
+ # MullvadBrowser (https://mullvad.net/en/browser)
1063
+ - regex: '(MullvadBrowser)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
1029
1064
 
1030
1065
  os_parsers:
1031
1066
  ##########
@@ -1110,6 +1145,29 @@ os_parsers:
1110
1145
  # Special case for new ArcGIS Mobile products
1111
1146
  - regex: 'ArcGISRuntime-(?:Android|iOS)\/\d+\.\d+(?:\.\d+|) \((Android|iOS) (\d+)(?:\.(\d+)(?:\.(\d+)|)|);'
1112
1147
 
1148
+ ##########
1149
+ # Chromecast
1150
+ ##########
1151
+ # 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
1152
+ # These are the newer Android-based "Google TV" Chromecast devices.
1153
+ # 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.
1154
+ - regex: '(Android) (\d+)(?:\.(\d+)).*CrKey'
1155
+ os_replacement: 'Chromecast Android'
1156
+
1157
+ # Ex: Mozilla/5.0 (Fuchsia) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 CrKey/1.56.500000
1158
+ # These are some intermediate "Nest Hub" Chromecast devices running Fuchsia.
1159
+ - regex: 'Fuchsia.*(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|)'
1160
+ os_replacement: 'Chromecast Fuchsia'
1161
+
1162
+ # 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
1163
+ - regex: 'Linux.*(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|).*DeviceType/SmartSpeaker'
1164
+ os_replacement: 'Chromecast SmartSpeaker'
1165
+
1166
+ # 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
1167
+ # These are the oldest Chromecast devices that ran Linux.
1168
+ - regex: 'Linux.*(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|)'
1169
+ os_replacement: 'Chromecast Linux'
1170
+
1113
1171
  ##########
1114
1172
  # Android
1115
1173
  # can actually detect rooted android os. do we care?
@@ -1273,6 +1331,10 @@ os_parsers:
1273
1331
  ##########
1274
1332
  - regex: '(Tizen)[/ ](\d+)\.(\d+)'
1275
1333
 
1334
+ # Chrome and Edge on iOS with desktop mode contains Mac OS X, so it must be before any Mac OS check
1335
+ - regex: 'Intel Mac OS X.+(CriOS|EdgiOS)/\d+'
1336
+ os_replacement: 'iOS'
1337
+
1276
1338
  ##########
1277
1339
  # Mac OS
1278
1340
  # @ref: http://en.wikipedia.org/wiki/Mac_OS_X#Versions
@@ -1787,12 +1849,6 @@ os_parsers:
1787
1849
 
1788
1850
  - regex: '(WebTV)/(\d+).(\d+)'
1789
1851
 
1790
- ##########
1791
- # Chromecast
1792
- ##########
1793
- - regex: '(CrKey)(?:[/](\d+)\.(\d+)(?:\.(\d+)|)|)'
1794
- os_replacement: 'Chromecast'
1795
-
1796
1852
  ##########
1797
1853
  # Misc mobile
1798
1854
  ##########
@@ -2426,6 +2482,39 @@ device_parsers:
2426
2482
  brand_replacement: 'ChangJia'
2427
2483
  model_replacement: '$1'
2428
2484
 
2485
+ ##########
2486
+ # Chromecast
2487
+ # @ref: https://en.wikipedia.org/wiki/Chromecast#Hardware_and_design
2488
+ ##########
2489
+ # 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
2490
+ # 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
2491
+ # 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
2492
+ # These are the newer Chromecast devices, such as smart speakers, Google TVs, etc. that have an explicit device type.
2493
+ - regex: 'CrKey.*DeviceType/([^/]*)'
2494
+ brand_replacement: 'Google'
2495
+ device_replacement: 'Chromecast'
2496
+ model_replacement: '$1'
2497
+
2498
+ # Ex: Mozilla/5.0 (Fuchsia) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 CrKey/1.56.500000
2499
+ # These are some intermediate "Nest Hub" Chromecast devices running Fuchsia.
2500
+ - regex: 'Fuchsia.*CrKey'
2501
+ brand_replacement: 'Google'
2502
+ device_replacement: 'Chromecast'
2503
+ model_replacement: 'Nest Hub'
2504
+
2505
+ # 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
2506
+ # These are the first generation of Chromecast devices that ran Linux. They don't specify a device type.
2507
+ - regex: 'Linux.*CrKey/1.36'
2508
+ brand_replacement: 'Google'
2509
+ device_replacement: 'Chromecast'
2510
+ model_replacement: 'First Generation'
2511
+
2512
+ # We have no data on the user agent strings of other models, except that they all report CrKey/
2513
+ - regex: 'CrKey/'
2514
+ brand_replacement: 'Google'
2515
+ device_replacement: 'Chromecast'
2516
+ model_replacement: 'Chromecast'
2517
+
2429
2518
  #########
2430
2519
  # Cloudfone
2431
2520
  # @ref: http://www.cloudfonemobile.com/
@@ -3582,6 +3671,11 @@ device_parsers:
3582
3671
  # Meta
3583
3672
  # @ref: https://www.meta.com
3584
3673
  #########
3674
+ - regex: 'Quest 3'
3675
+ device_replacement: 'Quest'
3676
+ brand_replacement: 'Meta'
3677
+ model_replacement: 'Quest 3'
3678
+
3585
3679
  - regex: 'Quest 2'
3586
3680
  device_replacement: 'Quest'
3587
3681
  brand_replacement: 'Meta'
@@ -5615,7 +5709,7 @@ device_parsers:
5615
5709
  device_replacement: 'Nintendo Wii U'
5616
5710
  brand_replacement: 'Nintendo'
5617
5711
  model_replacement: 'Wii U'
5618
- - regex: 'Nintendo (DS|3DS|DSi|Wii);'
5712
+ - regex: 'Nintendo (Switch|DS|3DS|DSi|Wii);'
5619
5713
  device_replacement: 'Nintendo $1'
5620
5714
  brand_replacement: 'Nintendo'
5621
5715
  model_replacement: '$1'
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.16.0
4
+ version: 2.18.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: 2023-06-08 00:00:00.000000000 Z
11
+ date: 2024-06-04 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.4.13
51
+ rubygems_version: 3.5.11
52
52
  signing_key:
53
53
  specification_version: 4
54
54
  summary: Parsing user agent strings with the help of BrowserScope's UA database