device_detector 1.0.3 → 1.0.4

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 (76) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +49 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +1 -1
  5. data/CHANGELOG.md +5 -0
  6. data/README.md +4 -4
  7. data/Rakefile +6 -17
  8. data/device_detector.gemspec +1 -0
  9. data/lib/device_detector.rb +17 -28
  10. data/lib/device_detector/bot.rb +2 -2
  11. data/lib/device_detector/client.rb +3 -2
  12. data/lib/device_detector/device.rb +44 -21
  13. data/lib/device_detector/memory_cache.rb +5 -5
  14. data/lib/device_detector/metadata_extractor.rb +7 -8
  15. data/lib/device_detector/model_extractor.rb +3 -3
  16. data/lib/device_detector/name_extractor.rb +2 -2
  17. data/lib/device_detector/os.rb +121 -114
  18. data/lib/device_detector/parser.rb +22 -9
  19. data/lib/device_detector/version.rb +1 -1
  20. data/lib/device_detector/version_extractor.rb +2 -3
  21. data/regexes/bots.yml +228 -12
  22. data/regexes/client/browser_engine.yml +4 -1
  23. data/regexes/client/browsers.yml +358 -34
  24. data/regexes/client/feed_readers.yml +1 -1
  25. data/regexes/client/libraries.yml +16 -1
  26. data/regexes/client/mediaplayers.yml +14 -2
  27. data/regexes/client/mobile_apps.yml +26 -2
  28. data/regexes/client/pim.yml +1 -1
  29. data/regexes/device/cameras.yml +1 -1
  30. data/regexes/device/car_browsers.yml +7 -3
  31. data/regexes/device/consoles.yml +3 -3
  32. data/regexes/device/mobiles.yml +2468 -823
  33. data/regexes/device/portable_media_player.yml +2 -2
  34. data/regexes/device/televisions.yml +1 -1
  35. data/regexes/oss.yml +20 -5
  36. data/regexes/vendorfragments.yml +5 -1
  37. data/spec/device_detector/device_spec.rb +4 -24
  38. data/spec/fixtures/client/browser.yml +632 -2
  39. data/spec/fixtures/client/library.yml +18 -0
  40. data/spec/fixtures/client/mobile_app.yml +24 -0
  41. data/spec/fixtures/detector/bots.yml +533 -67
  42. data/spec/fixtures/detector/camera.yml +20 -0
  43. data/spec/fixtures/detector/car_browser.yml +60 -0
  44. data/spec/fixtures/detector/console.yml +40 -0
  45. data/spec/fixtures/detector/desktop.yml +140 -40
  46. data/spec/fixtures/detector/mediaplayer.yml +43 -0
  47. data/spec/fixtures/detector/mobile_apps.yml +40 -2
  48. data/spec/fixtures/detector/phablet.yml +383 -1
  49. data/spec/fixtures/detector/smart_speaker.yml +55 -0
  50. data/spec/fixtures/detector/smartphone-1.yml +3669 -3695
  51. data/spec/fixtures/detector/smartphone-10.yml +4147 -4094
  52. data/spec/fixtures/detector/smartphone-11.yml +4475 -4473
  53. data/spec/fixtures/detector/smartphone-12.yml +5502 -4251
  54. data/spec/fixtures/detector/smartphone-13.yml +9920 -0
  55. data/spec/fixtures/detector/smartphone-14.yml +2662 -0
  56. data/spec/fixtures/detector/smartphone-2.yml +3738 -3713
  57. data/spec/fixtures/detector/smartphone-3.yml +3970 -3912
  58. data/spec/fixtures/detector/smartphone-4.yml +4518 -4506
  59. data/spec/fixtures/detector/smartphone-5.yml +3645 -3664
  60. data/spec/fixtures/detector/smartphone-6.yml +3868 -3829
  61. data/spec/fixtures/detector/smartphone-7.yml +3992 -3985
  62. data/spec/fixtures/detector/smartphone-8.yml +4510 -4475
  63. data/spec/fixtures/detector/smartphone-9.yml +4226 -4255
  64. data/spec/fixtures/detector/smartphone.yml +3197 -3197
  65. data/spec/fixtures/detector/tablet-1.yml +3940 -3968
  66. data/spec/fixtures/detector/tablet-2.yml +3773 -3764
  67. data/spec/fixtures/detector/tablet-3.yml +5243 -3071
  68. data/spec/fixtures/detector/tablet-4.yml +4528 -0
  69. data/spec/fixtures/detector/tablet.yml +3145 -3125
  70. data/spec/fixtures/detector/tv.yml +1695 -95
  71. data/spec/fixtures/detector/unknown.yml +13 -60
  72. data/spec/fixtures/detector/wearable.yml +61 -0
  73. data/spec/fixtures/device/car_browser.yml +6 -0
  74. data/spec/fixtures/parser/oss.yml +36 -1
  75. data/spec/fixtures/parser/vendorfragments.yml +6 -0
  76. metadata +32 -7
@@ -1,7 +1,7 @@
1
1
  ###############
2
2
  # Device Detector - The Universal Device Detection library for parsing User Agents
3
3
  #
4
- # @link http://piwik.org
4
+ # @link https://matomo.org
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  ###############
7
7
 
@@ -34,3 +34,6 @@
34
34
 
35
35
  - regex: 'Servo'
36
36
  name: 'Servo'
37
+
38
+ - regex: 'Goanna'
39
+ name: 'Goanna'
@@ -1,10 +1,220 @@
1
1
  ###############
2
2
  # Device Detector - The Universal Device Detection library for parsing User Agents
3
3
  #
4
- # @link http://piwik.org
4
+ # @link https://matomo.org
5
5
  # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
6
  ###############
7
7
 
8
+ # Safe Exam Browser (https://safeexambrowser.org/)
9
+ - regex: 'SEB/(?:(\d+[\.\d]+))?'
10
+ name: 'Safe Exam Browser'
11
+ version: '$1'
12
+
13
+ # Colibri (https://colibri.opqr.co/)
14
+ - regex: 'Colibri/(?:(\d+[\.\d]+))?'
15
+ name: 'Colibri'
16
+ version: '$1'
17
+
18
+ # Xvast (https://www.xvast.com/)
19
+ - regex: 'Xvast/(?:(\d+[\.\d]+))?'
20
+ name: 'Xvast'
21
+ version: '$1'
22
+
23
+ # Tungsten (https://en.tungsten-start.net/)
24
+ - regex: 'TungstenBrowser/(?:(\d+[\.\d]+))?'
25
+ name: 'Tungsten'
26
+ version: '$1'
27
+
28
+ # Lulumi (https://github.com/LulumiProject/lulumi-browser)
29
+ - regex: 'Lulumi-browser/(?:(\d+[\.\d]+))?'
30
+ name: 'Lulumi'
31
+ version: '$1'
32
+
33
+ # Yahoo! Japan Browser (https://promo-ybrowser.yahoo.co.jp/)
34
+ - regex: 'ybrowser/(?:(\d+[\.\d]+))?'
35
+ name: 'Yahoo! Japan Browser'
36
+ version: '$1'
37
+
38
+ # Lunascape Lite (https://www.lunascape.tv/)
39
+ - regex: 'iLunascapeLite/(?:(\d+[\.\d]+))?'
40
+ name: 'Lunascape Lite'
41
+ version: '$1'
42
+
43
+ # Polypane (https://polypane.app/)
44
+ - regex: 'Polypane/(?:(\d+[\.\d]+))?'
45
+ name: 'Polypane'
46
+ version: '$1'
47
+
48
+ # OhHai Browser (https://ohhaibrowser.com/)
49
+ - regex: 'OhHaiBrowser/(?:(\d+[\.\d]+))?'
50
+ name: 'OhHai Browser'
51
+ version: '$1'
52
+
53
+ # Sizzy (https://sizzy.co/)
54
+ - regex: 'Sizzy/(?:(\d+[\.\d]+))?'
55
+ name: 'Sizzy'
56
+ version: '$1'
57
+
58
+ # Glass Browser (https://github.com/mitchas/glass-browser)
59
+ - regex: 'GlassBrowser/(?:(\d+[\.\d]+))?'
60
+ name: 'Glass Browser'
61
+ version: '$1'
62
+
63
+ # ToGate (https://tmaxanc.com/#!/product-introduce/ToGate)
64
+ - regex: 'ToGate/(?:(\d+[\.\d]+))?'
65
+ name: 'ToGate'
66
+ version: '$1'
67
+
68
+ # VMware AirWatch (https://www.air-watch.com/)
69
+ - regex: 'AirWatch Browser v(?:(\d+[\.\d]+))?'
70
+ name: 'VMware AirWatch'
71
+ version: '$1'
72
+
73
+ # AOL Desktop (https://beta.aol.com/projects/desktop/windows)
74
+ - regex: 'ADG/(?:(\d+[\.\d]+))?'
75
+ name: 'AOL Desktop'
76
+ version: '$1'
77
+
78
+ # Elements Browser (https://elementsbrowser.com/)
79
+ - regex: 'Elements Browser/(?:(\d+[\.\d]+))?'
80
+ name: 'Elements Browser'
81
+ version: '$1'
82
+
83
+ # Light (https://sourceforge.net/projects/lightfirefox/)
84
+ - regex: 'Light/(\d+[\.\d]+)'
85
+ name: 'Light'
86
+ version: '$1'
87
+
88
+ # Steam (https://www.valvesoftware.com/)
89
+ - regex: 'Valve Steam GameOverlay/(?:(\d+[\.\d]+))?'
90
+ name: 'Steam In-Game Overlay'
91
+ version: '$1'
92
+
93
+ # 115 Browser (https://pc.115.com/)
94
+ - regex: '115Browser/(?:(\d+[\.\d]+))?'
95
+ name: '115 Browser'
96
+ version: '$1'
97
+
98
+ # Atom (https://browser.ru/)
99
+ - regex: 'Atom/(?:(\d+[\.\d]+))?'
100
+ name: 'Atom'
101
+ version: '$1'
102
+
103
+ # Firefox Reality (https://mixedreality.mozilla.org/firefox-reality/)
104
+ - regex: 'Mobile VR.+Firefox'
105
+ name: 'Firefox Reality'
106
+ version: ''
107
+
108
+ # AVG Secure Browser (https://www.avg.com/en-us/secure-browser)
109
+ - regex: 'AVG(?:/(\d+[\.\d]+))?'
110
+ name: 'AVG Secure Browser'
111
+ version: '$1'
112
+
113
+ # START Internet Browser (https://play.google.com/store/apps/details?id=fyi.start.web.browser)
114
+ - regex: 'Start/(?:(\d+[\.\d]+))?'
115
+ name: 'START Internet Browser'
116
+ version: '$1'
117
+
118
+ # Lovense Browser (https://www.lovense.com/cam-model/download)
119
+ - regex: 'Lovense(?:/(\d+[\.\d]+))?'
120
+ name: 'Lovense Browser'
121
+ version: '$1'
122
+
123
+ # Delta Browser (https://play.google.com/store/apps/details?id=com.airfind.deltabrowser)
124
+ - regex: 'com.airfind.deltabrowser(?:/(\d+[\.\d]+))?'
125
+ name: 'Delta Browser'
126
+ version: '$1'
127
+
128
+ # Ordissimo (https://www.ordissimo.fr/)
129
+ - regex: '(?:Ordissimo|webissimo3)(?:/(\d+[\.\d]+))?'
130
+ name: 'Ordissimo'
131
+ version: '$1'
132
+
133
+ # CCleaner (https://www.ccleaner.com/ccleaner/browser)
134
+ - regex: 'CCleaner(?:/(\d+[\.\d]+))?'
135
+ name: 'CCleaner'
136
+ version: '$1'
137
+
138
+ # Aloha Browser Lite (https://play.google.com/store/apps/details?id=com.alohamobile.browser.lite)
139
+ - regex: 'AlohaLite(?:/(\d+[\.\d]+))?'
140
+ name: 'Aloha Browser Lite'
141
+ version: '$1'
142
+
143
+ # Tao Browser (https://browser.taobao.com/)
144
+ - regex: 'TaoBrowser(?:/(\d+[\.\d]+))?'
145
+ name: 'Tao Browser'
146
+ version: '$1'
147
+
148
+ # Falkon (https://www.falkon.org/)
149
+ - regex: 'Falkon(?:/(\d+[\.\d]+))?'
150
+ name: 'Falkon'
151
+ version: '$1'
152
+
153
+ # mCent (http://mcentbrowser.com/)
154
+ - regex: 'mCent(?:/(\d+[\.\d]+))?'
155
+ name: 'mCent'
156
+ version: '$1'
157
+
158
+ # SalamWeb (https://salamweb.com/)
159
+ - regex: 'SalamWeb(?:/(\d+[\.\d]+))?'
160
+ name: 'SalamWeb'
161
+ version: '$1'
162
+
163
+ # BlackHawk (http://www.netgate.sk/blackhawk/)
164
+ - regex: 'BlackHawk(?:/(\d+[\.\d]+))?'
165
+ name: 'BlackHawk'
166
+ version: '$1'
167
+
168
+ # Minimo (https://www-archive.mozilla.org/projects/minimo/)
169
+ - regex: 'Minimo(?:/(\d+[\.\d]+))?'
170
+ name: 'Minimo'
171
+ version: '$1'
172
+
173
+ # Wear Internet Browser (https://play.google.com/store/apps/details?id=com.appfour.wearbrowser)
174
+ - regex: 'WIB(?:/(\d+[\.\d]+))?'
175
+ name: 'Wear Internet Browser'
176
+ version: '$1'
177
+
178
+ # Origyn Web Browser (https://en.wikipedia.org/wiki/Origyn_Web_Browser)
179
+ - regex: 'Origyn Web Browser'
180
+ name: 'Origyn Web Browser'
181
+ version: ''
182
+
183
+ # Kinza (https://www.kinza.jp/en/)
184
+ - regex: 'Kinza(?:/(\d+[\.\d]+))?'
185
+ name: 'Kinza'
186
+ version: '$1'
187
+
188
+ # Beamrise (https://web.archive.org/web/20170520043839/http://beamrise.com/)
189
+ - regex: 'Beamrise(?:/(\d+[\.\d]+))?'
190
+ name: 'Beamrise'
191
+ version: '$1'
192
+
193
+ # Faux Browser (https://apps.apple.com/us/app/faux-browser/id472250940)
194
+ - regex: 'Faux(?:/(\d+[\.\d]+))?'
195
+ name: 'Faux Browser'
196
+ version: '$1'
197
+
198
+ # Splash (https://scrapinghub.com/splash)
199
+ - regex: 'splash Version(?:/(\d+[\.\d]+))?'
200
+ name: 'Splash'
201
+ version: '$1'
202
+
203
+ # Meizu Browser (https://www.meizu.com/)
204
+ - regex: 'MZBrowser(?:/(\d+[\.\d]+))?'
205
+ name: 'Meizu Browser'
206
+ version: '$1'
207
+
208
+ # COS Browser (https://sj.qq.com/myapp/detail.htm?apkName=com.qcloud.cos.client)
209
+ - regex: 'COSBrowser(?:/(\d+[\.\d]+))?'
210
+ name: 'COS Browser'
211
+ version: '$1'
212
+
213
+ # Crusta (https://github.com/Crusta/CrustaBrowser)
214
+ - regex: 'Crusta(?:/(\d+[\.\d]+))?'
215
+ name: 'Crusta'
216
+ version: '$1'
217
+
8
218
  # Hawk Turbo Browser
9
219
  - regex: 'Hawk/TurboBrowser(?:/v?(\d+[\.\d]+))?'
10
220
  name: 'Hawk Turbo Browser'
@@ -31,7 +241,7 @@
31
241
  name: 'Basilisk'
32
242
  version: '$1'
33
243
  engine:
34
- default: 'Gecko'
244
+ default: 'Goanna'
35
245
 
36
246
  # Sputnik Browser (https://play.google.com/store/apps/details?id=ru.sputnik.browser)
37
247
  - regex: 'SputnikBrowser(?:/(\d+[\.\d]+))?'
@@ -194,8 +404,8 @@
194
404
  name: 'Aloha Browser'
195
405
  version: '$1'
196
406
 
197
- #Avast Secure Browser
198
- - regex: 'Avast(?:/(\d+[\.\d]+))?'
407
+ # Avast Secure Browser | Avast SafeZone Browser (https://www.avast.com/)
408
+ - regex: '(?:Avast|ASW|Safer)(?:/(\d+[\.\d]+))?'
199
409
  name: 'Avast Secure Browser'
200
410
  version: '$1'
201
411
 
@@ -290,6 +500,11 @@
290
500
 
291
501
 
292
502
  #Pale Moon
503
+ - regex: '.*Goanna.*PaleMoon(?:/(\d+[\.\d]+))?'
504
+ name: 'Pale Moon'
505
+ version: '$1'
506
+ engine:
507
+ default: 'Goanna'
293
508
  - regex: 'PaleMoon(?:/(\d+[\.\d]+))?'
294
509
  name: 'Pale Moon'
295
510
  version: '$1'
@@ -319,6 +534,11 @@
319
534
  versions:
320
535
  3: 'WebKit'
321
536
 
537
+ # Jig Browser Plus (https://jig.jp/)
538
+ - regex: 'JigBrowserPlus/(?:(\d+[\.\d]+))?'
539
+ name: 'Jig Browser Plus'
540
+ version: '$1'
541
+
322
542
  #Jig Browser
323
543
  - regex: 'jig browser(?: web;|9i?)?(?:[/ ](\d+[\.\d]+))?'
324
544
  name: 'Jig Browser'
@@ -338,11 +558,49 @@
338
558
  engine:
339
559
  default: 'Gecko'
340
560
 
561
+ # Origin (https://www.origin.com/)
562
+ - regex: 'Origin/(?:(\d+[\.\d]+))?'
563
+ name: 'Origin In-Game Overlay'
564
+ version: '$1'
565
+
341
566
  #Cunaguaro
342
567
  - regex: 'Cunaguaro(?:/(\d+[\.\d]+))?'
343
568
  name: 'Cunaguaro'
344
569
  version: '$1'
345
570
 
571
+ # t-online.de Browser (https://www.t-online.de/computer/browser/)
572
+ - regex: 'TO-Browser(?:/TOB(\d+[\.\d]+))?'
573
+ name: 't-online.de Browser'
574
+ version: '$1'
575
+
576
+ #Kazehakase
577
+ - regex: 'Kazehakase(?:/(\d+[\.\d]+))?'
578
+ name: 'Kazehakase'
579
+ version: '$1'
580
+ engine:
581
+ default: '' # multi engine
582
+
583
+ # ArcticFox (https://github.com/wicknix/Arctic-Fox)
584
+ - regex: 'ArcticFox(?:/(\d+[\.\d]+))?'
585
+ name: 'Arctic Fox'
586
+ version: '$1'
587
+ engine:
588
+ default: 'Goanna'
589
+
590
+ # Mypal (https://github.com/Feodor2/Mypal)
591
+ - regex: 'Mypal(?:/(\d+[\.\d]+))?'
592
+ name: 'Mypal'
593
+ version: '$1'
594
+ engine:
595
+ default: 'Goanna'
596
+
597
+ # Centaury (https://github.com/Feodor2/Centaury)
598
+ - regex: 'Centaury(?:/(\d+[\.\d]+))?'
599
+ name: 'Centaury'
600
+ version: '$1'
601
+ engine:
602
+ default: 'Goanna'
603
+
346
604
  #Firefox Focus / Firefox Klar
347
605
  - regex: '(?:Focus|Klar)(?:/(\d+[\.\d]+))?'
348
606
  name: 'Firefox Focus'
@@ -473,6 +731,21 @@
473
731
  name: 'UC Browser Mini'
474
732
  version: ''
475
733
 
734
+ # UC Browser Turbo
735
+ - regex: 'UCTurbo(?:[ /]?(\d+[\.\d]+))?'
736
+ name: 'UC Browser Turbo'
737
+ version: '$1'
738
+ - regex: 'UC[ ]?Browser.* \(UCTurbo\)'
739
+ name: 'UC Browser Turbo'
740
+ version: ''
741
+
742
+ # Opera GX (https://www.opera.com/gx#start | http://ftp.opera.com/pub/opera_gx/)
743
+ - regex: 'OPRGX(?:/(\d+[\.\d]+))?'
744
+ name: 'Opera GX'
745
+ version: '$1'
746
+ engine:
747
+ default: 'Blink'
748
+
476
749
  #Opera
477
750
  - regex: '(?:Opera Tablet.*Version|Opera/.+Opera Mobi.+Version|Mobile.+OPR)/(\d+[\.\d]+)'
478
751
  name: 'Opera Mobile'
@@ -589,7 +862,7 @@
589
862
  4: '' # multiple (KHTML or WebKit)
590
863
 
591
864
  #Baidu Browser
592
- - regex: 'baidubrowser(?:[/ ](\d+[\.\d]*))?'
865
+ - regex: '(?:baidubrowser|bdbrowser_i18n|bdbrowser)(?:[/ ](\d+[\.\d]*))?'
593
866
  name: 'Baidu Browser'
594
867
  version: '$1'
595
868
  - regex: 'FlyFlow(?:[/ ](\d+[\.\d]*))?'
@@ -650,7 +923,7 @@
650
923
  versions:
651
924
  3: 'WebKit'
652
925
 
653
- - regex: '(?:Maxthon|MyIE2|Uzbl)'
926
+ - regex: '(?:Maxthon|MyIE2)'
654
927
  name: 'Maxthon'
655
928
  version: ''
656
929
  engine:
@@ -668,7 +941,13 @@
668
941
  engine:
669
942
  default: 'Blink'
670
943
 
671
- #Iron
944
+ # Iron
945
+ - regex: 'Chrome(?:/(\d+[\.\d]+))?.*Iron'
946
+ name: 'Iron'
947
+ version: '$1'
948
+ engine:
949
+ default: 'WebKit'
950
+
672
951
  - regex: 'Iron(?:/(\d+[\.\d]+))?'
673
952
  name: 'Iron'
674
953
  version: '$1'
@@ -747,18 +1026,29 @@
747
1026
  name: 'Samsung Browser'
748
1027
  version: '$1'
749
1028
 
750
- #Streamy
751
- #This browser is built on top of Chromium.
752
- #It should be checked first.
1029
+ # Super Fast Browser (https://play.google.com/store/apps/details?id=com.browser.tssomas)
1030
+ - regex: '(?:SFBrowser|com.browser.tssomas)(?:/(\d+[\.\d]+))?'
1031
+ name: 'Super Fast Browser'
1032
+ version: '$1'
1033
+
1034
+ # EUI Browser
1035
+ - regex: 'EUI Browser(?:/(\d+[\.\d]+))?'
1036
+ name: 'EUI Browser'
1037
+ version: '$1'
1038
+
1039
+ # UBrowser (https://callumprentice.github.io/)
1040
+ - regex: 'UBrowser(?:/(\d+[\.\d]+))?'
1041
+ name: 'UBrowser'
1042
+ version: '$1'
1043
+
1044
+ #Streamy (Chromium based)
753
1045
  - regex: 'Streamy(?:/(\d+[\.\d]+))?'
754
1046
  name: 'Streamy'
755
1047
  version: '$1'
756
1048
  engine:
757
1049
  default: 'WebKit'
758
1050
 
759
- #Isivioo
760
- #Andorid version of the browser is built on top of Chrome Mobile.
761
- #It should be checked first.
1051
+ #Isivioo (Android version is Chrome based)
762
1052
  - regex: 'isivioo'
763
1053
  name: 'Isivioo'
764
1054
  version: ''
@@ -903,6 +1193,30 @@
903
1193
  name: 'Nokia Browser'
904
1194
  version: ''
905
1195
 
1196
+ #Sleipnir
1197
+ - regex: 'Sleipnir(?:[ /](\d+[\.\d]+))?'
1198
+ name: 'Sleipnir'
1199
+ version: '$1'
1200
+ engine:
1201
+ default: '' # multi engine
1202
+
1203
+ # NTENT Browser
1204
+ - regex: 'NTENTBrowser(?:/(\d+[\.\d]+))?'
1205
+ name: 'NTENT Browser'
1206
+ version: '$1'
1207
+
1208
+ # TV Bro
1209
+ - regex: 'TV Bro/(\d+[\.\d]+)'
1210
+ name: 'TV Bro'
1211
+ version: '$1'
1212
+
1213
+ # Quark
1214
+ - regex: 'Chrome/.+ Quark(?:/(\d+[\.\d]+))?'
1215
+ name: 'Quark'
1216
+ version: '$1'
1217
+ engine:
1218
+ default: 'WebKit'
1219
+
906
1220
  # Chrome Webview
907
1221
  - regex: 'Version/.* Chrome(?:/(\d+[\.\d]+))?'
908
1222
  name: 'Chrome Webview'
@@ -1091,6 +1405,11 @@
1091
1405
  name: 'Element Browser'
1092
1406
  version: '$1'
1093
1407
 
1408
+ # eZ Browser (https://play.google.com/store/apps/details?id=com.asc.csbrowser)
1409
+ - regex: 'eZBrowser(?:/(\d+[\.\d]+))?'
1410
+ name: 'eZ Browser'
1411
+ version: '$1'
1412
+
1094
1413
  #Firebird
1095
1414
  - regex: 'Firebird(?! Build)(?:/(\d+[\.\d]+))?'
1096
1415
  name: 'Firebird'
@@ -1140,15 +1459,8 @@
1140
1459
  versions:
1141
1460
  4: 'WebKit'
1142
1461
 
1143
- #Sleipnir
1144
- - regex: 'Sleipnir(?:[ /](\d+[\.\d]+))?'
1145
- name: 'Sleipnir'
1146
- version: '$1'
1147
- engine:
1148
- default: '' # multi engine
1149
-
1150
1462
  #Lunascape
1151
- - regex: 'Lunascape(?:[/ ](\d+[\.\d]+))?'
1463
+ - regex: 'i?Lunascape(?:[/ ](\d+[\.\d]+))?'
1152
1464
  name: 'Lunascape'
1153
1465
  version: '$1'
1154
1466
  engine:
@@ -1196,13 +1508,6 @@
1196
1508
  engine:
1197
1509
  default: 'Trident'
1198
1510
 
1199
- #Kazehakase
1200
- - regex: 'Kazehakase(?:/(\d+[\.\d]+))?'
1201
- name: 'Kazehakase'
1202
- version: '$1'
1203
- engine:
1204
- default: '' # multi engine
1205
-
1206
1511
  #Kindle Browser
1207
1512
  - regex: 'Kindle/(\d+[\.\d]+)'
1208
1513
  name: 'Kindle Browser'
@@ -1255,7 +1560,7 @@
1255
1560
  version: '$1'
1256
1561
  engine:
1257
1562
  default: 'NetFront'
1258
- - regex: 'PLAYSTATION|NINTENDO 3|AppleWebKit.+ NX/\d+\.\d+\.\d+'
1563
+ - regex: 'PLAYSTATION|NINTENDO 3|AppleWebKit.+ N[XF]/\d+\.\d+\.\d+'
1259
1564
  name: 'NetFront'
1260
1565
  version: ''
1261
1566
 
@@ -1264,11 +1569,6 @@
1264
1569
  name: 'NetPositive'
1265
1570
  version: '$1'
1266
1571
 
1267
- # NTENT Browser
1268
- - regex: 'NTENTBrowser(?:/(\d+[\.\d]+))?'
1269
- name: 'NTENT Browser'
1270
- version: '$1'
1271
-
1272
1572
  #Odyssey Web Browser
1273
1573
  - regex: 'Odyssey Web Browser(?:.*OWB/(\d+[\.\d]+))?'
1274
1574
  name: 'Odyssey Web Browser'
@@ -1377,6 +1677,13 @@
1377
1677
  name: 'Qutebrowser'
1378
1678
  version: '$1'
1379
1679
 
1680
+ # surf (https://surf.suckless.org/)
1681
+ - regex: 'Surf(?:/(\d+[\.\d]+))?'
1682
+ name: 'surf'
1683
+ version: '$1'
1684
+ engine:
1685
+ default: 'WebKit'
1686
+
1380
1687
  #Safari
1381
1688
  - regex: '(?:(?:iPod|iPad|iPhone).+Version|MobileSafari)/(\d+[\.\d]+)'
1382
1689
  name: 'Mobile Safari'
@@ -1410,3 +1717,20 @@
1410
1717
  version: '$1'
1411
1718
  engine:
1412
1719
  default: 'NetSurf'
1720
+
1721
+ # Uzbl (https://www.uzbl.org/)
1722
+ - regex: 'Uzbl'
1723
+ name: 'Uzbl'
1724
+ version: ''
1725
+
1726
+ # SimpleBrowser (https://github.com/SimpleBrowserDotNet/SimpleBrowser)
1727
+ - regex: 'SimpleBrowser'
1728
+ name: 'SimpleBrowser'
1729
+ version: ''
1730
+
1731
+ # Zvu
1732
+ - regex: 'Zvu(?:/(\d+[\.\d]+))?'
1733
+ name: 'Zvu'
1734
+ version: '$1'
1735
+ engine:
1736
+ default: 'Gecko'