device_detector 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
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'