device_detector 1.0.6 → 1.0.7

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 (103) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +5 -5
  4. data/lib/device_detector/device.rb +82 -3
  5. data/lib/device_detector/os.rb +4 -2
  6. data/lib/device_detector/parser.rb +1 -1
  7. data/lib/device_detector/version.rb +1 -1
  8. data/lib/device_detector/version_extractor.rb +20 -1
  9. data/regexes/bots.yml +49 -6
  10. data/regexes/client/browsers.yml +170 -16
  11. data/regexes/client/libraries.yml +20 -1
  12. data/regexes/client/mediaplayers.yml +2 -2
  13. data/regexes/client/mobile_apps.yml +447 -13
  14. data/regexes/client/pim.yml +16 -1
  15. data/regexes/device/consoles.yml +7 -1
  16. data/regexes/device/mobiles.yml +3169 -912
  17. data/regexes/device/portable_media_player.yml +16 -6
  18. data/regexes/oss.yml +380 -467
  19. metadata +3 -164
  20. data/.gitignore +0 -14
  21. data/.rubocop.yml +0 -49
  22. data/.ruby-version +0 -1
  23. data/.travis.yml +0 -14
  24. data/Gemfile +0 -8
  25. data/Rakefile +0 -86
  26. data/device_detector.gemspec +0 -27
  27. data/spec/device_detector/bot_fixtures_spec.rb +0 -30
  28. data/spec/device_detector/client_fixtures_spec.rb +0 -31
  29. data/spec/device_detector/concrete_user_agent_spec.rb +0 -123
  30. data/spec/device_detector/detector_fixtures_spec.rb +0 -99
  31. data/spec/device_detector/device_fixtures_spec.rb +0 -36
  32. data/spec/device_detector/device_spec.rb +0 -147
  33. data/spec/device_detector/memory_cache_spec.rb +0 -148
  34. data/spec/device_detector/model_extractor_spec.rb +0 -63
  35. data/spec/device_detector/os_fixtures_spec.rb +0 -26
  36. data/spec/device_detector/version_extractor_spec.rb +0 -79
  37. data/spec/device_detector_spec.rb +0 -189
  38. data/spec/fixtures/client/browser.yml +0 -3935
  39. data/spec/fixtures/client/feed_reader.yml +0 -187
  40. data/spec/fixtures/client/library.yml +0 -253
  41. data/spec/fixtures/client/mediaplayer.yml +0 -193
  42. data/spec/fixtures/client/mobile_app.yml +0 -703
  43. data/spec/fixtures/client/pim.yml +0 -175
  44. data/spec/fixtures/detector/bots.yml +0 -4434
  45. data/spec/fixtures/detector/camera.yml +0 -127
  46. data/spec/fixtures/detector/car_browser.yml +0 -217
  47. data/spec/fixtures/detector/console.yml +0 -343
  48. data/spec/fixtures/detector/desktop.yml +0 -7580
  49. data/spec/fixtures/detector/feature_phone.yml +0 -1597
  50. data/spec/fixtures/detector/feed_reader.yml +0 -524
  51. data/spec/fixtures/detector/mediaplayer.yml +0 -306
  52. data/spec/fixtures/detector/mobile_apps.yml +0 -1233
  53. data/spec/fixtures/detector/peripheral.yml +0 -271
  54. data/spec/fixtures/detector/phablet.yml +0 -7366
  55. data/spec/fixtures/detector/portable_media_player.yml +0 -527
  56. data/spec/fixtures/detector/smart_display.yml +0 -235
  57. data/spec/fixtures/detector/smart_speaker.yml +0 -60
  58. data/spec/fixtures/detector/smartphone-1.yml +0 -9622
  59. data/spec/fixtures/detector/smartphone-10.yml +0 -8981
  60. data/spec/fixtures/detector/smartphone-11.yml +0 -8938
  61. data/spec/fixtures/detector/smartphone-12.yml +0 -8989
  62. data/spec/fixtures/detector/smartphone-13.yml +0 -9412
  63. data/spec/fixtures/detector/smartphone-14.yml +0 -9477
  64. data/spec/fixtures/detector/smartphone-15.yml +0 -9281
  65. data/spec/fixtures/detector/smartphone-16.yml +0 -9678
  66. data/spec/fixtures/detector/smartphone-17.yml +0 -9965
  67. data/spec/fixtures/detector/smartphone-18.yml +0 -9806
  68. data/spec/fixtures/detector/smartphone-19.yml +0 -9965
  69. data/spec/fixtures/detector/smartphone-2.yml +0 -12242
  70. data/spec/fixtures/detector/smartphone-20.yml +0 -9710
  71. data/spec/fixtures/detector/smartphone-21.yml +0 -8693
  72. data/spec/fixtures/detector/smartphone-22.yml +0 -10178
  73. data/spec/fixtures/detector/smartphone-23.yml +0 -9453
  74. data/spec/fixtures/detector/smartphone-24.yml +0 -9843
  75. data/spec/fixtures/detector/smartphone-25.yml +0 -9703
  76. data/spec/fixtures/detector/smartphone-26.yml +0 -10007
  77. data/spec/fixtures/detector/smartphone-27.yml +0 -4927
  78. data/spec/fixtures/detector/smartphone-3.yml +0 -9909
  79. data/spec/fixtures/detector/smartphone-4.yml +0 -8954
  80. data/spec/fixtures/detector/smartphone-5.yml +0 -8981
  81. data/spec/fixtures/detector/smartphone-6.yml +0 -8948
  82. data/spec/fixtures/detector/smartphone-7.yml +0 -8975
  83. data/spec/fixtures/detector/smartphone-8.yml +0 -9810
  84. data/spec/fixtures/detector/smartphone-9.yml +0 -8925
  85. data/spec/fixtures/detector/smartphone.yml +0 -9001
  86. data/spec/fixtures/detector/tablet-1.yml +0 -10155
  87. data/spec/fixtures/detector/tablet-2.yml +0 -9064
  88. data/spec/fixtures/detector/tablet-3.yml +0 -9035
  89. data/spec/fixtures/detector/tablet-4.yml +0 -9062
  90. data/spec/fixtures/detector/tablet-5.yml +0 -9273
  91. data/spec/fixtures/detector/tablet-6.yml +0 -4588
  92. data/spec/fixtures/detector/tablet.yml +0 -8979
  93. data/spec/fixtures/detector/tv-1.yml +0 -2501
  94. data/spec/fixtures/detector/tv.yml +0 -10045
  95. data/spec/fixtures/detector/unknown.yml +0 -3071
  96. data/spec/fixtures/detector/wearable.yml +0 -915
  97. data/spec/fixtures/device/camera.yml +0 -19
  98. data/spec/fixtures/device/car_browser.yml +0 -13
  99. data/spec/fixtures/device/console.yml +0 -79
  100. data/spec/fixtures/device/notebook.yml +0 -7
  101. data/spec/fixtures/parser/oss.yml +0 -2418
  102. data/spec/fixtures/parser/vendorfragments.yml +0 -168
  103. data/spec/spec_helper.rb +0 -9
data/regexes/bots.yml CHANGED
@@ -482,7 +482,7 @@
482
482
  name: 'SEOmoz, Inc.'
483
483
  url: 'http://moz.com/'
484
484
 
485
- - regex: 'facebookexternalhit|facebookplatform|facebookexternalua'
485
+ - regex: 'facebookexternalhit|facebookplatform|facebookexternalua|facebookcatalog'
486
486
  name: 'Facebook External Hit'
487
487
  category: 'Social Media Agent'
488
488
  url: 'https://www.facebook.com/externalhit_uatext.php'
@@ -688,7 +688,7 @@
688
688
  name: 'Visual Meta'
689
689
  url: 'https://www.shopalike.cz/'
690
690
 
691
- - regex: 'AdsBot-Google|Adwords-(DisplayAds|Express|Instant)|Google Web Preview|Google[ -]Publisher[ -]Plugin|Google-(Ads-Qualify|Adwords|AMPHTML|Assess|HotelAdsVerifier|Read-Aloud|Shopping-Quality|Site-Verification|speakr|Test|Youtube-Links)|(APIs|DuplexWeb|Feedfetcher|Mediapartners)-Google|Googlebot|GoogleProducer|Google.*/\+/web/snippet'
691
+ - regex: 'AdsBot-Google|Adwords-(DisplayAds|Express|Instant)|Google Web Preview|Google[ -]Publisher[ -]Plugin|Google-(Ads-Qualify|Adwords|AMPHTML|Assess|HotelAdsVerifier|Read-Aloud|Shopping-Quality|Site-Verification|speakr|Stale-Content-Probe|Test|Youtube-Links)|(APIs|DuplexWeb|Feedfetcher|Mediapartners)-Google|Googlebot|GoogleProducer|Google.*/\+/web/snippet'
692
692
  name: 'Googlebot'
693
693
  category: 'Search bot'
694
694
  url: 'http://www.google.com/bot.html'
@@ -1722,7 +1722,7 @@
1722
1722
  name: 'Yandex LLC'
1723
1723
  url: 'http://company.yandex.com'
1724
1724
 
1725
- - regex: 'Yeti|NaverJapan'
1725
+ - regex: 'Yeti|NaverJapan|AdsBot-Naver'
1726
1726
  name: 'Yeti/Naverbot'
1727
1727
  category: 'Search bot'
1728
1728
  url: 'http://help.naver.com/robots/'
@@ -1926,7 +1926,7 @@
1926
1926
  - regex: 'RSSRadio \(Push Notification Scanner;support@dorada\.co\.uk\)'
1927
1927
  name: 'RSSRadio Bot'
1928
1928
 
1929
- - regex: '(A6-Indexer|nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr.com|tweetedtimes.com|TrendsmapResolver|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex(?! Build)|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|RackspaceBot|robots|SeopultContentAnalyzer|7Siters|centuryb.o.t9|InterNaetBoten|EasyBib AutoCite|Bidtellect|tomnomnom/meg|My User Agent)'
1929
+ - regex: '(A6-Indexer|nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr.com|tweetedtimes.com|TrendsmapResolver|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex(?! Build)|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|RackspaceBot|robots|SeopultContentAnalyzer|7Siters|centuryb.o.t9|InterNaetBoten|EasyBib AutoCite|Bidtellect|tomnomnom/meg|My User Agent|cortex)'
1930
1930
  name: 'Generic Bot'
1931
1931
 
1932
1932
  - regex: '^sentry'
@@ -2576,7 +2576,6 @@
2576
2576
  category: 'Crawler'
2577
2577
  url: 'https://github.com/VIPnytt/SitemapParser/'
2578
2578
 
2579
-
2580
2579
  - regex: '^Turnitin'
2581
2580
  name: 'Turnitin'
2582
2581
  category: 'Crawler'
@@ -2596,6 +2595,50 @@
2596
2595
  category: 'Crawler'
2597
2596
  url: 'https://dataforseo.com/dataforseo-bot'
2598
2597
 
2598
+ - regex: 'Discordbot/([\d+.]+)'
2599
+ name: 'Discord Bot'
2600
+ category: 'Service Agent'
2601
+ url: 'https://discordapp.com'
2602
+
2603
+ - regex: 'Linespider/([\d+.]+)'
2604
+ name: 'Linespider'
2605
+ category: 'Crawler'
2606
+ url: 'https://lin.ee/4dwXkTH'
2607
+
2608
+ - regex: 'Cincraw/([\d+.]+)'
2609
+ name: 'Cincraw'
2610
+ category: 'Crawler'
2611
+ url: 'http://cincrawdata.net/bot/'
2612
+
2613
+ - regex: 'CISPA Web Analyzer'
2614
+ name: 'CISPA Web Analyzer'
2615
+ category: 'Crawler'
2616
+ url: 'https://notify.cispa.de/'
2617
+ producer:
2618
+ name: 'CISPA - Helmholtz-Zentrum für Informationssicherheit gGmbH'
2619
+ url: 'https://cispa.de/en'
2620
+
2621
+ - regex: 'IonCrawl'
2622
+ name: 'IONOS Crawler'
2623
+ category: 'Crawler'
2624
+ url: 'https://www.ionos.de/terms-gtc/faq-crawler-en/'
2625
+ producer:
2626
+ name: 'IONOS SE'
2627
+ url: 'https://www.ionos.de/'
2628
+
2629
+ - regex: 'Crawldad'
2630
+ name: 'Crawldad'
2631
+ category: 'Crawler'
2632
+ url: 'https://gist.github.com/jayhardee9/2f2a2c4dba26564ee040ae32e0dd0972'
2633
+
2634
+ - regex: 'https://securitytxt-scan.cs.hm.edu/'
2635
+ name: 'security.txt scanserver'
2636
+ category: 'Security Checker'
2637
+ url: 'https://securitytxt-scan.cs.hm.edu/'
2638
+ producer:
2639
+ name: 'Hochschule für angewandte Wissenschaften München'
2640
+ url: 'https://www.hm.edu/'
2641
+
2599
2642
  # Generic detections
2600
- - regex: '[a-z0-9\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9])|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)'
2643
+ - regex: '[a-z0-9\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9]|[ _]Senior|[ _]Junior)|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)'
2601
2644
  name: 'Generic Bot'
@@ -5,6 +5,83 @@
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  ###############
7
7
 
8
+ # T+Browser (https://t.chanjet.com/tplus/view/login/downloadBrowser.html | https://dad.chanapp.chanjet.com/tplusapp/TPlusBrowser.exe)
9
+ - regex: 'T\+Browser/(\d+[\.\d]+)'
10
+ name: 'T+Browser'
11
+ version: '$1'
12
+ engine:
13
+ default: 'Blink'
14
+
15
+ # ChanjetCloud (https://dad.chanapp.chanjet.com/tplusapp/HsySetup.exe)
16
+ - regex: 'ChanjetCloud/(\d+[\.\d]+)'
17
+ name: 'ChanjetCloud'
18
+ version: '$1'
19
+ engine:
20
+ default: 'Blink'
21
+
22
+ # Sushi Browser (https://sushi-browser.com/)
23
+ - regex: 'SushiBrowser/(\d+[\.\d]+)'
24
+ name: 'Sushi Browser'
25
+ version: '$1'
26
+ engine:
27
+ default: 'Blink'
28
+
29
+ # Peeps dBrowser (https://peepsx.com/dbrowser.html)
30
+ - regex: 'dBrowser/(\d+[\.\d]+)'
31
+ name: 'Peeps dBrowser'
32
+ version: '$1'
33
+ engine:
34
+ default: 'Blink'
35
+
36
+ # LT Browser (https://www.lambdatest.com/lt-browser)
37
+ - regex: 'LTBrowser/(\d+[\.\d]+)'
38
+ name: 'LT Browser'
39
+ version: '$1'
40
+ engine:
41
+ default: 'Blink'
42
+
43
+ # Lagatos Browser (https://lagatos.com/)
44
+ - regex: 'lagatos-browser/(\d+[\.\d]+)'
45
+ name: 'Lagatos Browser'
46
+ version: '$1'
47
+ engine:
48
+ default: 'Blink'
49
+
50
+ # PSI Secure Browser (https://tca.psiexams.com/portal/testdelivery/sb_rpnow_download.jsp?)
51
+ - regex: 'psi-secure-browser/(\d+[\.\d]+)'
52
+ name: 'PSI Secure Browser'
53
+ version: '$1'
54
+ engine:
55
+ default: 'Blink'
56
+
57
+ # Harman Browser (https://www.harman.com/)
58
+ - regex: 'Harman_Browser/(\d+[\.\d]+)'
59
+ name: 'Harman Browser'
60
+ version: '$1'
61
+ engine:
62
+ default: 'Blink'
63
+
64
+ # Bonsai (https://bonsaibrowser.com/)
65
+ - regex: 'bonsai-browser/(\d+[\.\d]+)'
66
+ name: 'Bonsai'
67
+ version: '$1'
68
+ engine:
69
+ default: 'Blink'
70
+
71
+ # Spectre Browser (https://spectrebots.com/products/spectre-desktop-browser)
72
+ - regex: 'spectre-browser/(\d+[\.\d]+)'
73
+ name: 'Spectre Browser'
74
+ version: '$1'
75
+ engine:
76
+ default: 'Blink'
77
+
78
+ # Flash Browser (https://github.com/asteroid-dev/FlashBrowser or https://github.com/radubirsan/FlashBrowser)
79
+ - regex: 'FlashBrowser/(\d+[\.\d]+)'
80
+ name: 'Flash Browser'
81
+ version: '$1'
82
+ engine:
83
+ default: 'Blink'
84
+
8
85
  # Secure Browser (https://safertechnologies.io/)
9
86
  - regex: 'Secure/(?:(\d+[\.\d]+))?'
10
87
  name: 'Secure Browser'
@@ -449,10 +526,22 @@
449
526
  version: '$1'
450
527
 
451
528
  # Lunascape Lite (https://www.lunascape.tv/)
452
- - regex: 'iLunascapeLite/(?:(\d+[\.\d]+))?'
529
+ - regex: 'iLunascapeLite/(?:(\d+\.[.\d]+))?'
453
530
  name: 'Lunascape Lite'
454
531
  version: '$1'
455
532
 
533
+ # Lunascape
534
+ - regex: 'Chrome/.+ i?Lunascape(?:[/ ](\d+\.[.\d]+))?'
535
+ name: 'Lunascape'
536
+ version: '$1'
537
+ engine:
538
+ default: 'Blink'
539
+ - regex: 'i?Lunascape(?:[/ ](\d+\.[.\d]+))?'
540
+ name: 'Lunascape'
541
+ version: '$1'
542
+ engine:
543
+ default: '' # multi engine
544
+
456
545
  # Polypane (https://polypane.app/)
457
546
  - regex: 'Polypane/(?:(\d+[\.\d]+))?'
458
547
  name: 'Polypane'
@@ -604,6 +693,10 @@
604
693
  - regex: 'Beamrise(?:/(\d+[\.\d]+))?'
605
694
  name: 'Beamrise'
606
695
  version: '$1'
696
+ engine:
697
+ default: 'WebKit'
698
+ versions:
699
+ 28: 'Blink'
607
700
 
608
701
  # Faux Browser (https://apps.apple.com/us/app/faux-browser/id472250940)
609
702
  - regex: 'Faux(?:/(\d+[\.\d]+))?'
@@ -637,6 +730,13 @@
637
730
  engine:
638
731
  default: 'Blink'
639
732
 
733
+ # Hawk Quick Browser
734
+ - regex: 'Hawk/QuickBrowser(?:/v?(\d+[\.\d]+))?'
735
+ name: 'Hawk Quick Browser'
736
+ version: '$1'
737
+ engine:
738
+ default: 'Blink'
739
+
640
740
  # FreeU (https://freeu.online/)
641
741
  - regex: 'FreeU(?:/(\d+[\.\d]+))?'
642
742
  name: 'FreeU'
@@ -719,10 +819,19 @@
719
819
  engine:
720
820
  default: 'Blink'
721
821
 
722
- # Huawei Browser
822
+ # Huawei Browser Mobile
723
823
  - regex: 'HuaweiBrowser(?:/(\d+[\.\d]+))?'
824
+ name: 'Huawei Browser Mobile'
825
+ version: '$1'
826
+ engine:
827
+ default: 'Blink'
828
+
829
+ # Huawei Browser
830
+ - regex: 'HBPC/(\d+[\.\d]+)'
724
831
  name: 'Huawei Browser'
725
832
  version: '$1'
833
+ engine:
834
+ default: 'Blink'
726
835
 
727
836
  # vivo Browser
728
837
  - regex: 'VivoBrowser(?:/(\d+[\.\d]+))?'
@@ -858,7 +967,7 @@
858
967
  version: '$1'
859
968
 
860
969
  # Avast Secure Browser | Avast SafeZone Browser (https://www.avast.com/)
861
- - regex: '(?:Avast|ASW|Safer)(?:/(\d+[\.\d]+))?'
970
+ - regex: '(?:Avast(?:SecureBrowser)?|ASW|Safer)(?:/(\d+[\.\d]+))?'
862
971
  name: 'Avast Secure Browser'
863
972
  version: '$1'
864
973
 
@@ -1055,7 +1164,7 @@
1055
1164
  default: 'Goanna'
1056
1165
 
1057
1166
  #Firefox Focus / Firefox Klar
1058
- - regex: '(?:Focus|Klar)(?:/(\d+[\.\d]+))?'
1167
+ - regex: '(?:Focus|Klar)(?:/(\d+[\.\d]+))'
1059
1168
  name: 'Firefox Focus'
1060
1169
  version: '$1'
1061
1170
 
@@ -1198,12 +1307,18 @@
1198
1307
  version: ''
1199
1308
 
1200
1309
  # Opera GX (https://www.opera.com/gx#start | http://ftp.opera.com/pub/opera_gx/)
1201
- - regex: 'OPRGX(?:/(\d+[\.\d]+))?'
1310
+ - regex: 'Chrome/.+ OP(?:RG)?X(?:/(\d+[\.\d]+))?'
1202
1311
  name: 'Opera GX'
1203
1312
  version: '$1'
1204
1313
  engine:
1205
1314
  default: 'Blink'
1206
1315
 
1316
+ - regex: 'OP(?:RG)?X(?:/(\d+[\.\d]+))?'
1317
+ name: 'Opera GX'
1318
+ version: '$1'
1319
+ engine:
1320
+ default: 'WebKit'
1321
+
1207
1322
  #Opera
1208
1323
  - regex: '(?:Opera Tablet.*Version|Opera/.+Opera Mobi.+Version|Mobile.+OPR)/(\d+[\.\d]+)'
1209
1324
  name: 'Opera Mobile'
@@ -1227,6 +1342,11 @@
1227
1342
  version: '$1'
1228
1343
  engine:
1229
1344
  default: 'WebKit'
1345
+ - regex: 'Opera%20Touch/.+CFNetwork/.+Darwin/.+(?!.*x86_64)'
1346
+ name: 'Opera Touch'
1347
+ version: ''
1348
+ engine:
1349
+ default: 'WebKit'
1230
1350
  - regex: 'OPT/(\d+[\.\d]+)'
1231
1351
  name: 'Opera Touch'
1232
1352
  version: '$1'
@@ -1398,7 +1518,7 @@
1398
1518
  default: 'WebKit'
1399
1519
  versions:
1400
1520
  '5.2': 'Blink'
1401
- - regex: '(?:Maxthon(?:%20Browser)?|MxBrowser(?:-inhouse|-iPhone)?)[ /](\d+[\.\d]+)'
1521
+ - regex: '(?:Maxthon(?:%20Browser)?|MxBrowser(?:-inhouse|-iPhone)?|MXiOS)[ /](\d+[\.\d]+)'
1402
1522
  name: 'Maxthon'
1403
1523
  version: '$1'
1404
1524
  engine:
@@ -1430,6 +1550,8 @@
1430
1550
  version: '$1'
1431
1551
  engine:
1432
1552
  default: 'WebKit'
1553
+ versions:
1554
+ 28: 'Blink'
1433
1555
 
1434
1556
  - regex: 'Iron(?:/(\d+[\.\d]+))?'
1435
1557
  name: 'Iron'
@@ -1531,6 +1653,8 @@
1531
1653
  - regex: 'UBrowser(?:/(\d+[\.\d]+))?'
1532
1654
  name: 'UBrowser'
1533
1655
  version: '$1'
1656
+ engine:
1657
+ default: 'Blink'
1534
1658
 
1535
1659
  #Streamy (Chromium based)
1536
1660
  - regex: 'Streamy(?:/(\d+[\.\d]+))?'
@@ -1556,6 +1680,11 @@
1556
1680
  - regex: 'UC AppleWebKit'
1557
1681
  name: 'UC Browser'
1558
1682
  version: ''
1683
+ - regex: 'UC%20Browser/(\d+[\.\d]+)? CFNetwork/.+Darwin/.+(?!.*x86_64)'
1684
+ name: 'UC Browser'
1685
+ version: '$1'
1686
+ engine:
1687
+ default: 'WebKit'
1559
1688
 
1560
1689
  #It should be checked before Chrome since the UA contains the Chrome
1561
1690
 
@@ -1584,6 +1713,11 @@
1584
1713
  version: '$1'
1585
1714
  engine:
1586
1715
  default: 'WebKit'
1716
+ - regex: 'webexplorer/(\d+)'
1717
+ name: 'Web Explorer'
1718
+ version: '$1'
1719
+ engine:
1720
+ default: 'WebKit'
1587
1721
 
1588
1722
  # Seznam Browser
1589
1723
  - regex: 'SznProhlizec/(\d+[\.\d]+)'
@@ -1653,6 +1787,16 @@
1653
1787
  engine:
1654
1788
  default: 'WebKit'
1655
1789
 
1790
+ # iBrowser Mini
1791
+ - regex: 'iBrowser/Mini(\d+\.\d+)'
1792
+ name: 'iBrowser Mini'
1793
+ version: '$1'
1794
+
1795
+ # iBrowser
1796
+ - regex: 'iBrowser/(\d+\.[.\d]+)?'
1797
+ name: 'iBrowser'
1798
+ version: '$1'
1799
+
1656
1800
  #IBrowse
1657
1801
  - regex: 'IBrowse(?:[ /](\d+[\.\d]+))?'
1658
1802
  name: 'IBrowse'
@@ -1976,8 +2120,20 @@
1976
2120
  engine:
1977
2121
  default: 'Gecko'
1978
2122
 
1979
- #Google Earth
1980
- - regex: 'Google Earth(?:/(\d+[\.\d]+))?'
2123
+ # Google Earth Pro (https://www.google.se/intl/en/earth/versions/)
2124
+ - regex: 'Google Earth Pro(?:/(\d+[\.\d]+))?'
2125
+ name: 'Google Earth Pro'
2126
+ version: '$1'
2127
+ engine:
2128
+ default: 'WebKit'
2129
+ - regex: 'GoogleEarth/(\d+[\.\d]+).+client:(?:Plus|Pro)'
2130
+ name: 'Google Earth Pro'
2131
+ version: '$1'
2132
+ engine:
2133
+ default: 'WebKit'
2134
+
2135
+ # Google Earth (https://www.google.se/intl/en/earth/versions/)
2136
+ - regex: 'Google ?Earth(?:/v?(\d+[\.\d]+))?'
1981
2137
  name: 'Google Earth'
1982
2138
  version: '$1'
1983
2139
  engine:
@@ -2004,13 +2160,6 @@
2004
2160
  versions:
2005
2161
  4: 'WebKit'
2006
2162
 
2007
- #Lunascape
2008
- - regex: 'i?Lunascape(?:[/ ](\d+[\.\d]+))?'
2009
- name: 'Lunascape'
2010
- version: '$1'
2011
- engine:
2012
- default: '' # multi engine
2013
-
2014
2163
  # Crazy Browser
2015
2164
  - regex: 'Crazy Browser (\d+[\.\d]+)'
2016
2165
  name: 'Crazy Browser'
@@ -2201,6 +2350,11 @@
2201
2350
  - regex: 'Coast(?:/(\d+[\.\d]+))?'
2202
2351
  name: 'Coast'
2203
2352
  version: '$1'
2353
+ - regex: 'Opera%20Coast/(\d+[\.\d]+)? CFNetwork/.+Darwin/.+(?!.*x86_64)'
2354
+ name: 'Coast'
2355
+ version: '$1'
2356
+ engine:
2357
+ default: 'WebKit'
2204
2358
 
2205
2359
  # surf (https://surf.suckless.org/)
2206
2360
  - regex: 'Surf(?:/(\d+[\.\d]+))?'
@@ -2266,7 +2420,7 @@
2266
2420
  version: '$1'
2267
2421
 
2268
2422
  # MAUI Wap Browser
2269
- - regex: 'WAP Browser/MAUI|(?:\w+)?Maui Wap Browser|MAUI[- ]Browser'
2423
+ - regex: 'WAP Browser/MAUI|(?:\w*)Maui Wap Browser|MAUI[- ]Browser'
2270
2424
  name: 'MAUI WAP Browser'
2271
2425
  version: ''
2272
2426
 
@@ -55,7 +55,7 @@
55
55
  name: 'aiohttp'
56
56
  version: '$1'
57
57
 
58
- - regex: 'Google-HTTP-Java-Client(?:/(\d+[\.\d\w-]+))?'
58
+ - regex: 'Google-HTTP-Java-Client(?:/(\d+[\.\w-]+))?'
59
59
  name: 'Google HTTP Java Client'
60
60
  version: '$1'
61
61
 
@@ -156,3 +156,22 @@
156
156
  - regex: 'gvfs/(?:(\d+[\.\d]+))?'
157
157
  name: 'gvfs'
158
158
  version: '$1'
159
+
160
+ # https://openwrt.org/packages/pkgdata/uclient-fetch
161
+ - regex: 'uclient-fetch'
162
+ name: 'uclient-fetch'
163
+ version: ''
164
+
165
+ # https://github.com/microsoft/cpprestsdk
166
+ - regex: 'cpprestsdk/([\.\d]+)'
167
+ name: 'C++ REST SDK'
168
+ version: '$1'
169
+
170
+ - regex: 'lua-resty-http/([\.\d]+).+ngx_'
171
+ name: 'LUA OpenResty NGINX'
172
+ version: '$1'
173
+
174
+ # https://github.com/Kong/unirest-java
175
+ - regex: 'unirest-java/([\.\d]+)'
176
+ name: 'Unirest for Java'
177
+ version: '$1'
@@ -105,7 +105,7 @@
105
105
  name: 'mpv'
106
106
  version: '$1'
107
107
 
108
- - regex: 'foobar2000(?:/([\d\w_\.]+))?'
108
+ - regex: 'foobar2000(?:/([\w\.]+))?'
109
109
  name: 'foobar2000'
110
110
  version: '$1'
111
111
 
@@ -113,7 +113,7 @@
113
113
  name: 'HTC Streaming Player'
114
114
  version: ''
115
115
 
116
- - regex: 'MediaGo(?:/([\d\w_\.]+))?'
116
+ - regex: 'MediaGo(?:/([\w\.]+))?'
117
117
  name: 'Sony Media Go'
118
118
  version: '$1'
119
119