device_detector 1.0.2 → 1.0.6

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 (112) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +49 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -6
  5. data/CHANGELOG.md +11 -0
  6. data/README.md +8 -7
  7. data/Rakefile +7 -4
  8. data/device_detector.gemspec +1 -0
  9. data/lib/device_detector/bot.rb +2 -2
  10. data/lib/device_detector/browser.rb +364 -0
  11. data/lib/device_detector/client.rb +11 -2
  12. data/lib/device_detector/device.rb +1168 -22
  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 +148 -116
  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 +10 -2
  21. data/lib/device_detector.rb +73 -40
  22. data/regexes/bots.yml +909 -59
  23. data/regexes/client/browser_engine.yml +14 -2
  24. data/regexes/client/browsers.yml +1356 -241
  25. data/regexes/client/feed_readers.yml +10 -10
  26. data/regexes/client/libraries.yml +75 -1
  27. data/regexes/client/mediaplayers.yml +39 -3
  28. data/regexes/client/mobile_apps.yml +524 -45
  29. data/regexes/client/pim.yml +55 -2
  30. data/regexes/device/cameras.yml +6 -6
  31. data/regexes/device/car_browsers.yml +23 -3
  32. data/regexes/device/consoles.yml +9 -3
  33. data/regexes/device/mobiles.yml +16903 -3199
  34. data/regexes/device/notebooks.yml +114 -0
  35. data/regexes/device/portable_media_player.yml +20 -3
  36. data/regexes/device/shell_tv.yml +117 -0
  37. data/regexes/device/televisions.yml +440 -35
  38. data/regexes/oss.yml +603 -165
  39. data/regexes/vendorfragments.yml +6 -2
  40. data/spec/device_detector/concrete_user_agent_spec.rb +38 -51
  41. data/spec/device_detector/detector_fixtures_spec.rb +36 -37
  42. data/spec/device_detector/device_spec.rb +52 -56
  43. data/spec/device_detector/memory_cache_spec.rb +19 -19
  44. data/spec/device_detector/model_extractor_spec.rb +3 -3
  45. data/spec/device_detector/version_extractor_spec.rb +5 -6
  46. data/spec/device_detector_spec.rb +26 -26
  47. data/spec/fixtures/client/browser.yml +2617 -555
  48. data/spec/fixtures/client/feed_reader.yml +34 -52
  49. data/spec/fixtures/client/library.yml +129 -38
  50. data/spec/fixtures/client/mediaplayer.yml +59 -28
  51. data/spec/fixtures/client/mobile_app.yml +589 -20
  52. data/spec/fixtures/client/pim.yml +92 -19
  53. data/spec/fixtures/detector/bots.yml +1749 -458
  54. data/spec/fixtures/detector/camera.yml +30 -24
  55. data/spec/fixtures/detector/car_browser.yml +199 -3
  56. data/spec/fixtures/detector/console.yml +107 -45
  57. data/spec/fixtures/detector/desktop.yml +3216 -758
  58. data/spec/fixtures/detector/feature_phone.yml +935 -181
  59. data/spec/fixtures/detector/feed_reader.yml +181 -193
  60. data/spec/fixtures/detector/mediaplayer.yml +157 -60
  61. data/spec/fixtures/detector/mobile_apps.yml +914 -136
  62. data/spec/fixtures/detector/peripheral.yml +271 -0
  63. data/spec/fixtures/detector/phablet.yml +5593 -1533
  64. data/spec/fixtures/detector/portable_media_player.yml +398 -32
  65. data/spec/fixtures/detector/smart_display.yml +183 -9
  66. data/spec/fixtures/detector/smart_speaker.yml +60 -0
  67. data/spec/fixtures/detector/smartphone-1.yml +3930 -4239
  68. data/spec/fixtures/detector/smartphone-10.yml +3985 -7366
  69. data/spec/fixtures/detector/smartphone-11.yml +5083 -3784
  70. data/spec/fixtures/detector/smartphone-12.yml +8989 -0
  71. data/spec/fixtures/detector/smartphone-13.yml +9412 -0
  72. data/spec/fixtures/detector/smartphone-14.yml +9477 -0
  73. data/spec/fixtures/detector/smartphone-15.yml +9281 -0
  74. data/spec/fixtures/detector/smartphone-16.yml +9678 -0
  75. data/spec/fixtures/detector/smartphone-17.yml +9965 -0
  76. data/spec/fixtures/detector/smartphone-18.yml +9806 -0
  77. data/spec/fixtures/detector/smartphone-19.yml +9965 -0
  78. data/spec/fixtures/detector/smartphone-2.yml +6670 -4375
  79. data/spec/fixtures/detector/smartphone-20.yml +9710 -0
  80. data/spec/fixtures/detector/smartphone-21.yml +8693 -0
  81. data/spec/fixtures/detector/smartphone-22.yml +10178 -0
  82. data/spec/fixtures/detector/smartphone-23.yml +9453 -0
  83. data/spec/fixtures/detector/smartphone-24.yml +9843 -0
  84. data/spec/fixtures/detector/smartphone-25.yml +9703 -0
  85. data/spec/fixtures/detector/smartphone-26.yml +10007 -0
  86. data/spec/fixtures/detector/smartphone-27.yml +4927 -0
  87. data/spec/fixtures/detector/smartphone-3.yml +4656 -4711
  88. data/spec/fixtures/detector/smartphone-4.yml +3518 -4479
  89. data/spec/fixtures/detector/smartphone-5.yml +3805 -4803
  90. data/spec/fixtures/detector/smartphone-6.yml +3745 -4693
  91. data/spec/fixtures/detector/smartphone-7.yml +3721 -4645
  92. data/spec/fixtures/detector/smartphone-8.yml +4564 -4699
  93. data/spec/fixtures/detector/smartphone-9.yml +3897 -4888
  94. data/spec/fixtures/detector/smartphone.yml +3154 -4141
  95. data/spec/fixtures/detector/tablet-1.yml +4742 -4576
  96. data/spec/fixtures/detector/tablet-2.yml +3803 -4731
  97. data/spec/fixtures/detector/tablet-3.yml +6210 -2309
  98. data/spec/fixtures/detector/tablet-4.yml +9062 -0
  99. data/spec/fixtures/detector/tablet-5.yml +9273 -0
  100. data/spec/fixtures/detector/tablet-6.yml +4588 -0
  101. data/spec/fixtures/detector/tablet.yml +3629 -4613
  102. data/spec/fixtures/detector/tv-1.yml +2501 -0
  103. data/spec/fixtures/detector/tv.yml +8856 -2064
  104. data/spec/fixtures/detector/unknown.yml +412 -587
  105. data/spec/fixtures/detector/wearable.yml +915 -0
  106. data/spec/fixtures/device/camera.yml +4 -3
  107. data/spec/fixtures/device/car_browser.yml +9 -2
  108. data/spec/fixtures/device/console.yml +15 -14
  109. data/spec/fixtures/device/notebook.yml +7 -0
  110. data/spec/fixtures/parser/oss.yml +1392 -21
  111. data/spec/fixtures/parser/vendorfragments.yml +57 -51
  112. metadata +70 -4
@@ -1,10 +1,739 @@
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
+ # Secure Browser (https://safertechnologies.io/)
9
+ - regex: 'Secure/(?:(\d+[\.\d]+))?'
10
+ name: 'Secure Browser'
11
+ version: '$1'
12
+ engine:
13
+ default: 'Blink'
14
+
15
+ # Arvin (https://play.google.com/store/apps/details?id=com.browser.arvin.anti.blokir&hl=sv&gl=US)
16
+ - regex: 'Arvin/(\d+[\.\d]+)'
17
+ name: 'Arvin'
18
+ version: '$1'
19
+ engine:
20
+ default: 'Blink'
21
+
22
+ # Edge Webview (https://docs.microsoft.com/en-us/microsoft-edge/webview2/)
23
+ - regex: 'Version/.+Chrome/.+EdgW/(\d+[\.\d]+)'
24
+ name: 'Edge WebView'
25
+ version: '$1'
26
+ engine:
27
+ default: 'WebKit'
28
+
29
+ # Mandarin (https://mandarin-browser.com/)
30
+ - regex: 'Mandarin Browser/(\d+[\.\d]+)'
31
+ name: 'Mandarin'
32
+ version: '$1'
33
+ engine:
34
+ default: 'Blink'
35
+
36
+ # Maelstrom (https://www.bittorrent.com/)
37
+ - regex: 'Torrent/(\d+[\.\d]+)'
38
+ name: 'Maelstrom'
39
+ version: '$1'
40
+ engine:
41
+ default: 'Blink'
42
+
43
+ # Helio (https://developer.magicleap.com/en-us/learn/guides/lumin-os-release-notes-summary)
44
+ - regex: 'Helio/(\d+[\.\d]+)'
45
+ name: 'Helio'
46
+ version: '$1'
47
+ engine:
48
+ default: 'Blink'
49
+
50
+ # 7654 Browser (http://7654browser.shzhanmeng.com/)
51
+ - regex: '7654Browser/(\d+[\.\d]+)'
52
+ name: '7654 Browser'
53
+ version: '$1'
54
+ engine:
55
+ default: 'Blink'
56
+
57
+ # Qazweb (http://www.qazweb.com/)
58
+ - regex: 'Qazweb/(\d+[\.\d]+)'
59
+ name: 'Qazweb'
60
+ version: '$1'
61
+ engine:
62
+ default: 'Gecko'
63
+
64
+ # deg-degan (https://degdegan.com/)
65
+ - regex: 'Degdegan/(\d+[\.\d]+)'
66
+ name: 'deg-degan'
67
+ version: '$1'
68
+ engine:
69
+ default: 'Blink'
70
+
71
+ # JavaFX (https://docs.oracle.com/javase/8/javafx/embedded-browser-tutorial/overview.htm)
72
+ - regex: 'JavaFX/(\d+[\.\d]+)'
73
+ name: 'JavaFX'
74
+ version: '$1'
75
+ engine:
76
+ default: 'WebKit'
77
+
78
+ # Chedot (https://landing.chedot.com/)
79
+ - regex: 'Chedot/(\d+[\.\d]+)'
80
+ name: 'Chedot'
81
+ version: '$1'
82
+ engine:
83
+ default: 'Blink'
84
+
85
+ # Chromium GOST (https://github.com/deemru/chromium-gost)
86
+ - regex: 'Chrome/(\d+[\.\d]+) \(Chromium GOST\)'
87
+ name: 'Chromium GOST'
88
+ version: '$1'
89
+ engine:
90
+ default: 'Blink'
91
+
92
+ # Deledao (https://www.deledao.com/)
93
+ - regex: '(?:DeledaoPersonal|DeledaoFamily)/(\d+[\.\d]+)'
94
+ name: 'Deledao'
95
+ version: '$1'
96
+ engine:
97
+ default: 'Blink'
98
+
99
+ # HasBrowser (https://browser.hascoding.com)
100
+ - regex: 'HasBrowser/(\d+[\.\d]+)'
101
+ name: 'HasBrowser'
102
+ version: '$1'
103
+ engine:
104
+ default: 'Blink'
105
+
106
+ # Byffox (https://byffox.sourceforge.io/index.php)
107
+ - regex: 'Byffox/(\d+[\.\d]+)'
108
+ name: 'Byffox'
109
+ version: '$1'
110
+ engine:
111
+ default: 'Gecko'
112
+
113
+ # CoolBrowser (https://play.google.com/store/apps/details?id=com.easybrowser.browser.coolbrowser)
114
+ - regex: 'Chrome/(\d+[\.\d]+).+AgentWeb.+UCBrowser'
115
+ name: 'CoolBrowser'
116
+ version: '$1'
117
+ engine:
118
+ default: 'Blink'
119
+
120
+ # Dot Browser (https://dothq.co/)
121
+ - regex: 'DotBrowser/(\d+[\.\d]+)'
122
+ name: 'Dot Browser'
123
+ version: '$1'
124
+ engine:
125
+ default: 'Blink'
126
+
127
+ # Craving Explorer (https://www.crav-ing.com/)
128
+ - regex: 'CravingExplorer/(\d+[\.\d]+)'
129
+ name: 'Craving Explorer'
130
+ version: '$1'
131
+ engine:
132
+ default: 'Blink'
133
+
134
+ # DeskBrowse (https://web.archive.org/web/20170614060014/http://deskbrowse.org/)
135
+ - regex: 'DeskBrowse/(\d+[\.\d]+)'
136
+ name: 'DeskBrowse'
137
+ version: '$1'
138
+
139
+ # Lolifox
140
+ - regex: 'Lolifox/(\d+[\.\d]+)'
141
+ name: 'Lolifox'
142
+ version: '$1'
143
+
144
+ # Qutebrowser (https://qutebrowser.org/)
145
+ - regex: 'qutebrowser/(\d+[\.\d]+).+Chrome'
146
+ name: 'Qutebrowser'
147
+ version: '$1'
148
+ engine:
149
+ default: 'Blink'
150
+ - regex: 'qutebrowser(?:/(\d+[\.\d]+))?'
151
+ name: 'Qutebrowser'
152
+ version: '$1'
153
+
154
+ # Flast (https://github.com/FascodeNet/Flast)
155
+ - regex: 'flast/(\d+[\.\d]+)'
156
+ name: 'Flast'
157
+ version: '$1'
158
+ engine:
159
+ default: 'Blink'
160
+
161
+ # PolyBrowser (https://github.com/PolySuite/PolyBrowser)
162
+ - regex: 'PolyBrowser/(\d+[\.\d]+)'
163
+ name: 'PolyBrowser'
164
+ version: '$1'
165
+ engine:
166
+ default: 'Gecko'
167
+
168
+ # BriskBard (https://www.briskbard.com/)
169
+ - regex: 'Chrome.+BriskBard/(\d+[\.\d]+)'
170
+ name: 'BriskBard'
171
+ version: '$1'
172
+ engine:
173
+ default: 'Blink'
174
+ - regex: 'BriskBard(?:/(\d+[\.\d]+))?'
175
+ name: 'BriskBard'
176
+ version: '$1'
177
+
178
+ # GinxDroid Browser (https://play.google.com/store/apps/details?id=ginxdroid.gdm)
179
+ - regex: 'GinxDroidBrowser/(\d+[\.\d]+)'
180
+ name: 'GinxDroid Browser'
181
+ version: '$1'
182
+ engine:
183
+ default: 'Blink'
184
+
185
+ # Avira Scout (http://www.avira.com/en/avira-scout)
186
+ - regex: 'AviraScout/(\d+[\.\d]+)'
187
+ name: 'Avira Scout'
188
+ version: '$1'
189
+ engine:
190
+ default: 'Blink'
191
+
192
+ # Venus Browser (https://play.google.com/store/apps/details?id=com.venus.browser)
193
+ - regex: 'VenusBrowser/(\d+[\.\d]+)'
194
+ name: 'Venus Browser'
195
+ version: '$1'
196
+ engine:
197
+ default: 'Blink'
198
+
199
+ # Otter Browser (https://github.com/OtterBrowser/otter-browser)
200
+ - regex: 'Chrome.+Otter(?:[ /](\d+[\.\d]+))?'
201
+ name: 'Otter Browser'
202
+ version: '$1'
203
+ engine:
204
+ default: 'Blink'
205
+ - regex: 'Otter(?:[ /](\d+[\.\d]+))?'
206
+ name: 'Otter Browser'
207
+ version: '$1'
208
+
209
+ # Smooz (https://smoozapp.com/)
210
+ - regex: 'Chrome.+Smooz/(\d+[\.\d]+)'
211
+ name: 'Smooz'
212
+ version: '$1'
213
+ engine:
214
+ default: 'Blink'
215
+ - regex: 'Smooz/(\d+[\.\d]+)'
216
+ name: 'Smooz'
217
+ version: '$1'
218
+
219
+ # Cornowser (https://github.com/xdevs23/Cornowser)
220
+ - regex: 'Cornowser/(\d+[\.\d]+)'
221
+ name: 'Cornowser'
222
+ version: '$1'
223
+ engine:
224
+ default: 'Blink'
225
+
226
+ # Orca (http://www.orcabrowser.com)
227
+ - regex: 'Orca/(\d+[\.\d]+)'
228
+ name: 'Orca'
229
+ version: '$1'
230
+
231
+ # Flow (https://www.ekioh.com/)
232
+ - regex: 'Flow/(?:(\d+[\.\d]+))'
233
+ name: 'Flow'
234
+ version: '$1'
235
+ engine:
236
+ default: 'EkiohFlow'
237
+ - regex: 'Ekioh/(?:(\d+[\.\d]+))'
238
+ name: 'Flow'
239
+ version: '$1'
240
+ engine:
241
+ default: 'EkiohFlow'
242
+
243
+ # xStand (https://www.adnx.com/)
244
+ - regex: 'xStand/(\d+[\.\d]+)'
245
+ name: 'xStand'
246
+ version: '$1'
247
+ engine:
248
+ default: 'WebKit'
249
+
250
+ # Biyubi (http://www.biyubi.com/)
251
+ - regex: 'Biyubi/(\d+[\.\d]+)'
252
+ name: 'Biyubi'
253
+ version: '$1'
254
+
255
+ # Perfect Browser (http://www.perfectbrowser.com/)
256
+ - regex: '(?:Perfect%20Browser(?:-iPad)?|Perfect(?:BrowserPro)?)/(\d+[\.\d]+)'
257
+ name: 'Perfect Browser'
258
+ version: '$1'
259
+ engine:
260
+ default: 'WebKit'
261
+
262
+ # Phantom Browser (https://www.lg.com/)
263
+ - regex: 'Browser/Phantom/V(\d+[\.\d]+)'
264
+ name: 'Phantom Browser'
265
+ version: '$1'
266
+
267
+ # AwoX (https://www.awox.com.tr/)
268
+ - regex: 'AwoX(?:/(\d+[\.\d]+))? Browser'
269
+ name: 'AwoX'
270
+ version: '$1'
271
+
272
+ # Zetakey (https://www.zetakey.com/)
273
+ - regex: 'Zetakey/(\d+[\.\d]+)'
274
+ name: 'Zetakey'
275
+ version: '$1'
276
+ engine:
277
+ default: 'WebKit'
278
+
279
+ # PlayFree Browser
280
+ - regex: 'PlayFreeBrowser/(?:(\d+[\.\d]+))?'
281
+ name: 'PlayFree Browser'
282
+ version: '$1'
283
+
284
+ # Chim Lac (https://chimlac.com.vn/)
285
+ - regex: '(?:chimlac_browser|chimlac)/(?:(\d+[\.\d]+))'
286
+ name: 'Chim Lac'
287
+ version: '$1'
288
+ engine:
289
+ default: 'Blink'
290
+
291
+ # Odin (https://www.hisense.com/)
292
+ - regex: 'Odin/(?:(\d+[\.\d]+))'
293
+ name: 'Odin'
294
+ version: '$1'
295
+ engine:
296
+ default: 'Blink'
297
+
298
+ # T-Browser (https://play.google.com/store/apps/details?id=com.tcl.browser)
299
+ - regex: 'Tbrowser/(\d+[\.\d]+)'
300
+ name: 'T-Browser'
301
+ version: '$1'
302
+ engine:
303
+ default: 'Blink'
304
+
305
+ # SFive (https://sfive.vn/)
306
+ - regex: 'SFive(?:_Android)?/.+ Chrome/(\d+[\.\d]+)'
307
+ name: 'SFive'
308
+ version: '$1'
309
+ engine:
310
+ default: 'Blink'
311
+ - regex: 'SFive_IOS/(\d+[\.\d]+)'
312
+ name: 'SFive'
313
+ version: '$1'
314
+
315
+ # Navigateur Web
316
+ - regex: 'Navigateur web/(?:(\d+[\.\d]+))?'
317
+ name: 'Navigateur Web'
318
+ version: '$1'
319
+
320
+ #Seraphic Sraf (https://www.seraphic-corp.com/)
321
+ - regex: 'Sraf(?:[/ ](\d+[\.\d]+))?'
322
+ name: 'Seraphic Sraf'
323
+ version: '$1'
324
+ engine:
325
+ default: 'Blink'
326
+
327
+ # Seewo Browser (http://e.seewo.com/)
328
+ - regex: 'SeewoBrowser/(?:(\d+[\.\d]+))?'
329
+ name: 'Seewo Browser'
330
+ version: '$1'
331
+ engine:
332
+ default: 'Blink'
333
+
334
+ # Kode Browser (https://www.kodebrowser.com/ | https://play.google.com/store/apps/details?id=com.app.downloadmanager | https://apps.apple.com/us/app/kode-browser-fast-private/id625458492)
335
+ - regex: '(?:Kode(?:iOS)?/(?:(\d+[\.\d]+))?|TansoDL)'
336
+ name: 'Kode Browser'
337
+ version: '$1'
338
+
339
+ # UR Browser (https://www.ur-browser.com/)
340
+ - regex: 'UR/(?:(\d+[\.\d]+))'
341
+ name: 'UR Browser'
342
+ version: '$1'
343
+ engine:
344
+ default: 'Blink'
345
+
346
+ # OceanHero (https://oceanhero.today)
347
+ - regex: 'OceanHero/([\.\d]+)'
348
+ name: 'OceanHero'
349
+ version: '$1'
350
+ engine:
351
+ default: 'Blink'
352
+
353
+ # Smart Lenovo Browser (https://www.lenovo.com.cn/)
354
+ - regex: 'Chrome/.+ SLBrowser/(?:(\d+[\.\d]+))?'
355
+ name: 'Smart Lenovo Browser'
356
+ version: '$1'
357
+ engine:
358
+ default: 'Blink'
359
+ - regex: 'SLBrowser/(?:(\d+[\.\d]+))?'
360
+ name: 'Smart Lenovo Browser'
361
+ version: '$1'
362
+
363
+ # Browzar (https://www.browzar.com/)
364
+ - regex: 'Browzar'
365
+ name: 'Browzar'
366
+ version: ''
367
+
368
+ # Stargon (http://www.stargon.org/ | https://play.google.com/store/apps/details?id=net.onecook.browser)
369
+ - regex: 'Stargon/(?:(\d+[\.\d]+))?'
370
+ name: 'Stargon'
371
+ version: '$1'
372
+ engine:
373
+ default: 'Blink'
374
+
375
+ # NFS Browser (https://github.com/nfschina/nfs-browser)
376
+ - regex: 'NFSBrowser/(?:(\d+[\.\d]+))?'
377
+ name: 'NFS Browser'
378
+ version: '$1'
379
+ engine:
380
+ default: 'Blink'
381
+
382
+ # Borealis Navigator (https://binaryoutcast.com/projects/borealis/)
383
+ - regex: 'Borealis/(\d+[\.\d]+)'
384
+ name: 'Borealis Navigator'
385
+ version: '$1'
386
+
387
+ # Yolo Browser
388
+ - regex: 'YoloBrowser/(?:(\d+[\.\d]+))?'
389
+ name: 'Yolo Browser'
390
+ version: '$1'
391
+ engine:
392
+ default: 'Blink'
393
+
394
+ # Phoenix Browser (http://phoenix-browser.com/ | https://play.google.com/store/apps/details?id=com.transsion.phoenix)
395
+ - regex: 'PHX/(?:(\d+[\.\d]+))?'
396
+ name: 'Phoenix Browser'
397
+ version: '$1'
398
+
399
+ # PrivacyWall (https://play.google.com/store/apps/details?id=org.privacywall.browser)
400
+ - regex: 'PrivacyWall/(?:(\d+[\.\d]+))?'
401
+ name: 'PrivacyWall'
402
+ version: '$1'
403
+
404
+ # Ghostery Privacy Browser (https://play.google.com/store/apps/details?id=com.ghostery.android.ghostery | https://apps.apple.com/us/app/ghostery-privacy-browser/id472789016)
405
+ - regex: 'Ghostery:?(\d+[\.\d]+)?'
406
+ name: 'Ghostery Privacy Browser'
407
+ version: '$1'
408
+
409
+ # Yaani Browser
410
+ - regex: 'Firefox/.*(?:Turkcell-)?YaaniBrowser(?:/(\d+[\.\d]+))?'
411
+ name: 'Yaani Browser'
412
+ version: '$1'
413
+ engine:
414
+ default: 'Gecko'
415
+ - regex: '(?:Turkcell-)?YaaniBrowser(?:/(\d+[\.\d]+))?'
416
+ name: 'Yaani Browser'
417
+ version: '$1'
418
+ engine:
419
+ default: 'Blink'
420
+
421
+ # Safe Exam Browser (https://safeexambrowser.org/)
422
+ - regex: 'SEB/(?:(\d+[\.\d]+))?'
423
+ name: 'Safe Exam Browser'
424
+ version: '$1'
425
+
426
+ # Colibri (https://colibri.opqr.co/)
427
+ - regex: 'Colibri/(?:(\d+[\.\d]+))?'
428
+ name: 'Colibri'
429
+ version: '$1'
430
+
431
+ # Xvast (https://www.xvast.com/)
432
+ - regex: 'Xvast/(?:(\d+[\.\d]+))?'
433
+ name: 'Xvast'
434
+ version: '$1'
435
+
436
+ # Tungsten (https://en.tungsten-start.net/)
437
+ - regex: 'TungstenBrowser/(?:(\d+[\.\d]+))?'
438
+ name: 'Tungsten'
439
+ version: '$1'
440
+
441
+ # Lulumi (https://github.com/LulumiProject/lulumi-browser)
442
+ - regex: 'Lulumi-browser/(?:(\d+[\.\d]+))?'
443
+ name: 'Lulumi'
444
+ version: '$1'
445
+
446
+ # Yahoo! Japan Browser (https://promo-ybrowser.yahoo.co.jp/)
447
+ - regex: 'ybrowser/(?:(\d+[\.\d]+))?'
448
+ name: 'Yahoo! Japan Browser'
449
+ version: '$1'
450
+
451
+ # Lunascape Lite (https://www.lunascape.tv/)
452
+ - regex: 'iLunascapeLite/(?:(\d+[\.\d]+))?'
453
+ name: 'Lunascape Lite'
454
+ version: '$1'
455
+
456
+ # Polypane (https://polypane.app/)
457
+ - regex: 'Polypane/(?:(\d+[\.\d]+))?'
458
+ name: 'Polypane'
459
+ version: '$1'
460
+
461
+ # OhHai Browser (https://ohhaibrowser.com/)
462
+ - regex: 'OhHaiBrowser/(?:(\d+[\.\d]+))?'
463
+ name: 'OhHai Browser'
464
+ version: '$1'
465
+
466
+ # Sizzy (https://sizzy.co/)
467
+ - regex: 'Sizzy/(?:(\d+[\.\d]+))?'
468
+ name: 'Sizzy'
469
+ version: '$1'
470
+
471
+ # Glass Browser (https://github.com/mitchas/glass-browser)
472
+ - regex: 'GlassBrowser/(?:(\d+[\.\d]+))?'
473
+ name: 'Glass Browser'
474
+ version: '$1'
475
+
476
+ # ToGate (https://tmaxanc.com/#!/product-introduce/ToGate)
477
+ - regex: 'ToGate/(?:(\d+[\.\d]+))?'
478
+ name: 'ToGate'
479
+ version: '$1'
480
+
481
+ # VMware AirWatch (https://www.air-watch.com/)
482
+ - regex: 'AirWatch Browser v(?:(\d+[\.\d]+))?'
483
+ name: 'VMware AirWatch'
484
+ version: '$1'
485
+
486
+ # AOL Desktop (https://beta.aol.com/projects/desktop/windows)
487
+ - regex: 'ADG/(?:(\d+[\.\d]+))?'
488
+ name: 'AOL Desktop'
489
+ version: '$1'
490
+
491
+ # Elements Browser (https://elementsbrowser.com/)
492
+ - regex: 'Elements Browser/(?:(\d+[\.\d]+))?'
493
+ name: 'Elements Browser'
494
+ version: '$1'
495
+
496
+ # Light (https://sourceforge.net/projects/lightfirefox/)
497
+ - regex: 'Light/(\d+[\.\d]+)'
498
+ name: 'Light'
499
+ version: '$1'
500
+
501
+ # Steam (https://www.valvesoftware.com/)
502
+ - regex: 'Valve Steam GameOverlay/(?:(\d+[\.\d]+))?'
503
+ name: 'Steam In-Game Overlay'
504
+ version: '$1'
505
+
506
+ # 115 Browser (https://pc.115.com/)
507
+ - regex: '115Browser/(?:(\d+[\.\d]+))?'
508
+ name: '115 Browser'
509
+ version: '$1'
510
+
511
+ # Atom (https://browser.ru/)
512
+ - regex: 'Atom/(?:(\d+[\.\d]+))?'
513
+ name: 'Atom'
514
+ version: '$1'
515
+
516
+ # Firefox Reality (https://mixedreality.mozilla.org/firefox-reality/)
517
+ - regex: 'Mobile VR.+Firefox'
518
+ name: 'Firefox Reality'
519
+ version: ''
520
+
521
+ # AVG Secure Browser (https://www.avg.com/en-us/secure-browser)
522
+ - regex: 'AVG(?:/(\d+[\.\d]+))?'
523
+ name: 'AVG Secure Browser'
524
+ version: '$1'
525
+
526
+ # START Internet Browser (https://play.google.com/store/apps/details?id=fyi.start.web.browser)
527
+ - regex: 'Start/(?:(\d+[\.\d]+))?'
528
+ name: 'START Internet Browser'
529
+ version: '$1'
530
+
531
+ # Lovense Browser (https://www.lovense.com/cam-model/download)
532
+ - regex: 'Lovense(?:/(\d+[\.\d]+))?'
533
+ name: 'Lovense Browser'
534
+ version: '$1'
535
+
536
+ # Delta Browser (https://play.google.com/store/apps/details?id=com.airfind.deltabrowser)
537
+ - regex: 'com.airfind.deltabrowser(?:/(\d+[\.\d]+))?'
538
+ name: 'Delta Browser'
539
+ version: '$1'
540
+
541
+ # Ordissimo (https://www.ordissimo.fr/)
542
+ - regex: '(?:Ordissimo|webissimo3)(?:/(\d+[\.\d]+))?'
543
+ name: 'Ordissimo'
544
+ version: '$1'
545
+
546
+ # CCleaner (https://www.ccleaner.com/ccleaner/browser)
547
+ - regex: 'CCleaner(?:/(\d+[\.\d]+))?'
548
+ name: 'CCleaner'
549
+ version: '$1'
550
+
551
+ # Aloha Browser Lite (https://play.google.com/store/apps/details?id=com.alohamobile.browser.lite)
552
+ - regex: 'AlohaLite(?:/(\d+[\.\d]+))?'
553
+ name: 'Aloha Browser Lite'
554
+ version: '$1'
555
+ engine:
556
+ default: 'Blink'
557
+
558
+ # Tao Browser (https://browser.taobao.com/)
559
+ - regex: 'TaoBrowser(?:/(\d+[\.\d]+))?'
560
+ name: 'Tao Browser'
561
+ version: '$1'
562
+
563
+ # Falkon (https://www.falkon.org/)
564
+ - regex: 'Falkon(?:/(\d+[\.\d]+))?'
565
+ name: 'Falkon'
566
+ version: '$1'
567
+
568
+ # mCent (http://mcentbrowser.com/)
569
+ - regex: 'mCent(?:/(\d+[\.\d]+))?'
570
+ name: 'mCent'
571
+ version: '$1'
572
+
573
+ # SalamWeb (https://salamweb.com/)
574
+ - regex: 'SalamWeb(?:/(\d+[\.\d]+))?'
575
+ name: 'SalamWeb'
576
+ version: '$1'
577
+
578
+ # BlackHawk (http://www.netgate.sk/blackhawk/)
579
+ - regex: 'BlackHawk(?:/(\d+[\.\d]+))?'
580
+ name: 'BlackHawk'
581
+ version: '$1'
582
+
583
+ # Minimo (https://www-archive.mozilla.org/projects/minimo/)
584
+ - regex: 'Minimo(?:/(\d+[\.\d]+))?'
585
+ name: 'Minimo'
586
+ version: '$1'
587
+
588
+ # Wear Internet Browser (https://play.google.com/store/apps/details?id=com.appfour.wearbrowser)
589
+ - regex: 'WIB(?:/(\d+[\.\d]+))?'
590
+ name: 'Wear Internet Browser'
591
+ version: '$1'
592
+
593
+ # Origyn Web Browser (https://en.wikipedia.org/wiki/Origyn_Web_Browser)
594
+ - regex: 'Origyn Web Browser'
595
+ name: 'Origyn Web Browser'
596
+ version: ''
597
+
598
+ # Kinza (https://www.kinza.jp/en/)
599
+ - regex: 'Kinza(?:/(\d+[\.\d]+))?'
600
+ name: 'Kinza'
601
+ version: '$1'
602
+
603
+ # Beamrise (https://web.archive.org/web/20170520043839/http://beamrise.com/)
604
+ - regex: 'Beamrise(?:/(\d+[\.\d]+))?'
605
+ name: 'Beamrise'
606
+ version: '$1'
607
+
608
+ # Faux Browser (https://apps.apple.com/us/app/faux-browser/id472250940)
609
+ - regex: 'Faux(?:/(\d+[\.\d]+))?'
610
+ name: 'Faux Browser'
611
+ version: '$1'
612
+
613
+ # Splash (https://scrapinghub.com/splash)
614
+ - regex: 'splash Version(?:/(\d+[\.\d]+))?'
615
+ name: 'Splash'
616
+ version: '$1'
617
+
618
+ # Meizu Browser (https://www.meizu.com/)
619
+ - regex: 'MZBrowser(?:/(\d+[\.\d]+))?'
620
+ name: 'Meizu Browser'
621
+ version: '$1'
622
+
623
+ # COS Browser (https://sj.qq.com/myapp/detail.htm?apkName=com.qcloud.cos.client)
624
+ - regex: 'COSBrowser(?:/(\d+[\.\d]+))?'
625
+ name: 'COS Browser'
626
+ version: '$1'
627
+
628
+ # Crusta (https://github.com/Crusta/CrustaBrowser)
629
+ - regex: 'Crusta(?:/(\d+[\.\d]+))?'
630
+ name: 'Crusta'
631
+ version: '$1'
632
+
633
+ # Hawk Turbo Browser
634
+ - regex: 'Hawk/TurboBrowser(?:/v?(\d+[\.\d]+))?'
635
+ name: 'Hawk Turbo Browser'
636
+ version: '$1'
637
+ engine:
638
+ default: 'Blink'
639
+
640
+ # FreeU (https://freeu.online/)
641
+ - regex: 'FreeU(?:/(\d+[\.\d]+))?'
642
+ name: 'FreeU'
643
+ version: '$1'
644
+ engine:
645
+ default: 'Blink'
646
+
647
+ # Nox Browser (https://play.google.com/store/apps/details?id=com.noxgroup.app.browser)
648
+ - regex: 'NoxBrowser(?:/(\d+[\.\d]+))?'
649
+ name: 'Nox Browser'
650
+ version: '$1'
651
+ engine:
652
+ default: 'Blink'
653
+
654
+ # Basilisk (https://www.basilisk-browser.org/)
655
+ - regex: 'Basilisk(?:/(\d+[\.\d]+))?'
656
+ name: 'Basilisk'
657
+ version: '$1'
658
+ engine:
659
+ default: 'Goanna'
660
+
661
+ # Sputnik Browser (https://play.google.com/store/apps/details?id=ru.sputnik.browser)
662
+ - regex: 'SputnikBrowser(?:/(\d+[\.\d]+))?'
663
+ name: 'Sputnik Browser'
664
+ version: '$1'
665
+ engine:
666
+ default: 'Blink'
667
+
668
+ # K.Browser (https://play.google.com/store/apps/details?id=com.tnsua.browser)
669
+ - regex: 'TNSBrowser(?:/(\d+[\.\d]+))?'
670
+ name: 'K.Browser'
671
+ version: '$1'
672
+ engine:
673
+ default: 'Blink'
674
+
675
+ # Oculus Browser (https://developer.oculus.com/documentation/oculus-browser/latest/concepts/)
676
+ - regex: 'OculusBrowser(?:/(\d+[\.\d]+))?'
677
+ name: 'Oculus Browser'
678
+ version: '$1'
679
+
680
+ # Jio Browser (https://play.google.com/store/apps/details?id=com.jio.web)
681
+ - regex: 'Jio(?:Browser|Pages)(?:/(\d+[\.\d]+))?'
682
+ name: 'Jio Browser'
683
+ version: '$1'
684
+ engine:
685
+ default: 'Blink'
686
+
687
+ # https://play.google.com/store/apps/details?id=app.stampy.browser
688
+ - regex: 'SY/(\d+[\.\d]+) Chrome/'
689
+ name: 'Stampy Browser'
690
+ version: '$1'
691
+ engine:
692
+ default: 'Blink'
693
+
694
+ # hola! Browser (https://hola.org/browser)
695
+ - regex: 'Chrome/.+ Hola(?:/(\d+[\.\d]+))?'
696
+ name: 'hola! Browser'
697
+ version: '$1'
698
+ engine:
699
+ default: 'Blink'
700
+
701
+ # Slimjet (https://slimjet.com)
702
+ - regex: 'Slimjet/(?:(\d+[\.\d]+))'
703
+ name: 'Slimjet'
704
+ version: '$1'
705
+ engine:
706
+ default: 'Blink'
707
+
708
+ # 7Star
709
+ - regex: '7Star/(?:(\d+[\.\d]+))'
710
+ name: '7Star'
711
+ version: '$1'
712
+ engine:
713
+ default: 'Blink'
714
+
715
+ # MxNitro
716
+ - regex: 'MxNitro/(?:(\d+[\.\d]+))'
717
+ name: 'MxNitro'
718
+ version: '$1'
719
+ engine:
720
+ default: 'Blink'
721
+
722
+ # Huawei Browser
723
+ - regex: 'HuaweiBrowser(?:/(\d+[\.\d]+))?'
724
+ name: 'Huawei Browser'
725
+ version: '$1'
726
+
727
+ # vivo Browser
728
+ - regex: 'VivoBrowser(?:/(\d+[\.\d]+))?'
729
+ name: 'vivo Browser'
730
+ version: '$1'
731
+
732
+ # Realme Browser
733
+ - regex: 'RealmeBrowser(?:/(\d+[\.\d]+))?'
734
+ name: 'Realme Browser'
735
+ version: '$1'
736
+
8
737
  # Beaker distributed web browser (https://beakerbrowser.com/)
9
738
  - regex: 'Beaker ?Browser(?:[/ ](\d+[\.\d]+))?'
10
739
  name: 'Beaker Browser'
@@ -13,11 +742,21 @@
13
742
  default: 'Blink'
14
743
 
15
744
  # Qwant Mobile
745
+ - regex: 'QwantiOS/(\d+[\.\d]+)'
746
+ name: 'Qwant Mobile'
747
+ version: '$1'
748
+ engine:
749
+ default: 'WebKit'
16
750
  - regex: 'QwantMobile(?:/(\d+[\.\d]+))?'
17
751
  name: 'Qwant Mobile'
18
752
  version: '$1'
19
753
  engine:
20
754
  default: 'Gecko'
755
+ - regex: 'Qwant/(\d+[\.\d]+)'
756
+ name: 'Qwant Mobile'
757
+ version: '$1'
758
+ engine:
759
+ default: 'Gecko'
21
760
 
22
761
  # TenFourFox
23
762
  - regex: 'TenFourFox(?:/(\d+[\.\d]+))?'
@@ -34,7 +773,7 @@
34
773
  default: 'Gecko'
35
774
 
36
775
  # Microsoft Edge (Spartan Edge)
37
- - regex: 'Edge[ /](\d+[\.\d]+)'
776
+ - regex: '(?<!motorola )Edge[ /](\d+[\.\d]+)'
38
777
  name: 'Microsoft Edge'
39
778
  version: '$1'
40
779
  engine:
@@ -80,10 +819,17 @@
80
819
  engine:
81
820
  default: 'Gecko'
82
821
 
83
- # SeaMonkey
84
- - regex: '(Iceape|SeaMonkey|gnuzilla)(?:/(\d+[\.\d]+))?'
85
- name: '$1'
86
- version: '$2'
822
+ # IceCat
823
+ - regex: 'IceCat(?:/(\d+[\.\d]+))?'
824
+ name: 'IceCat'
825
+ version: '$1'
826
+ engine:
827
+ default: 'Gecko'
828
+
829
+ # Mobicip
830
+ - regex: 'Mobicip'
831
+ name: 'Mobicip'
832
+ version: ''
87
833
  engine:
88
834
  default: 'Gecko'
89
835
 
@@ -102,17 +848,22 @@
102
848
  default: 'Gecko'
103
849
 
104
850
  #AlohaBrowser
851
+ - regex: 'Chrome/.+ AlohaBrowser(?:/(\d+[\.\d]+))?'
852
+ name: 'Aloha Browser'
853
+ version: '$1'
854
+ engine:
855
+ default: 'Blink'
105
856
  - regex: 'AlohaBrowser(?:/(\d+[\.\d]+))?'
106
857
  name: 'Aloha Browser'
107
858
  version: '$1'
108
859
 
109
- #Avast Secure Browser
110
- - regex: 'Avast(?:/(\d+[\.\d]+))?'
860
+ # Avast Secure Browser | Avast SafeZone Browser (https://www.avast.com/)
861
+ - regex: '(?:Avast|ASW|Safer)(?:/(\d+[\.\d]+))?'
111
862
  name: 'Avast Secure Browser'
112
863
  version: '$1'
113
864
 
114
865
  #Epic
115
- - regex: 'Epic(?:/(\d+[\.\d]+))?'
866
+ - regex: 'Epic(?:/(\d+[\.\d]+))'
116
867
  name: 'Epic'
117
868
  version: '$1'
118
869
  engine:
@@ -144,7 +895,7 @@
144
895
 
145
896
 
146
897
  #Avant Browser
147
- - regex: 'Avant Browser'
898
+ - regex: 'Avant ?Browser'
148
899
  name: 'Avant Browser'
149
900
  version: ''
150
901
  engine:
@@ -162,7 +913,7 @@
162
913
  engine:
163
914
  default: 'WebKit'
164
915
  versions:
165
- 28: 'Blink'
916
+ '28': 'Blink'
166
917
 
167
918
  #Atomic Web Browser
168
919
  - regex: 'AtomicBrowser(?:/(\d+[\.\d]+))?'
@@ -202,6 +953,11 @@
202
953
 
203
954
 
204
955
  #Pale Moon
956
+ - regex: '.*Goanna.*PaleMoon(?:/(\d+[\.\d]+))?'
957
+ name: 'Pale Moon'
958
+ version: '$1'
959
+ engine:
960
+ default: 'Goanna'
205
961
  - regex: 'PaleMoon(?:/(\d+[\.\d]+))?'
206
962
  name: 'Pale Moon'
207
963
  version: '$1'
@@ -229,7 +985,12 @@
229
985
  engine:
230
986
  default: 'Gecko'
231
987
  versions:
232
- 3: 'WebKit'
988
+ '3': 'WebKit'
989
+
990
+ # Jig Browser Plus (https://jig.jp/)
991
+ - regex: 'JigBrowserPlus/(?:(\d+[\.\d]+))?'
992
+ name: 'Jig Browser Plus'
993
+ version: '$1'
233
994
 
234
995
  #Jig Browser
235
996
  - regex: 'jig browser(?: web;|9i?)?(?:[/ ](\d+[\.\d]+))?'
@@ -241,19 +1002,57 @@
241
1002
  name: 'Kapiko'
242
1003
  version: '$1'
243
1004
  engine:
244
- default: 'Gecko'
1005
+ default: 'Gecko'
1006
+
1007
+ #Kylo
1008
+ - regex: 'Kylo(?:/(\d+[\.\d]+))?'
1009
+ name: 'Kylo'
1010
+ version: '$1'
1011
+ engine:
1012
+ default: 'Gecko'
1013
+
1014
+ # Origin (https://www.origin.com/)
1015
+ - regex: 'Origin/(?:(\d+[\.\d]+))?'
1016
+ name: 'Origin In-Game Overlay'
1017
+ version: '$1'
1018
+
1019
+ #Cunaguaro
1020
+ - regex: 'Cunaguaro(?:/(\d+[\.\d]+))?'
1021
+ name: 'Cunaguaro'
1022
+ version: '$1'
1023
+
1024
+ # t-online.de Browser (https://www.t-online.de/computer/browser/)
1025
+ - regex: '(?:TO-Browser/TOB|DT-Browser/DTB)(\d+[\.\d]+)'
1026
+ name: 't-online.de Browser'
1027
+ version: '$1'
1028
+
1029
+ #Kazehakase
1030
+ - regex: 'Kazehakase(?:/(\d+[\.\d]+))?'
1031
+ name: 'Kazehakase'
1032
+ version: '$1'
1033
+ engine:
1034
+ default: '' # multi engine
1035
+
1036
+ # ArcticFox (https://github.com/wicknix/Arctic-Fox)
1037
+ - regex: 'ArcticFox(?:/(\d+[\.\d]+))?'
1038
+ name: 'Arctic Fox'
1039
+ version: '$1'
1040
+ engine:
1041
+ default: 'Goanna'
245
1042
 
246
- #Kylo
247
- - regex: 'Kylo(?:/(\d+[\.\d]+))?'
248
- name: 'Kylo'
1043
+ # Mypal (https://github.com/Feodor2/Mypal)
1044
+ - regex: 'Mypal(?:/(\d+[\.\d]+))?'
1045
+ name: 'Mypal'
249
1046
  version: '$1'
250
1047
  engine:
251
- default: 'Gecko'
1048
+ default: 'Goanna'
252
1049
 
253
- #Cunaguaro
254
- - regex: 'Cunaguaro(?:/(\d+[\.\d]+))?'
255
- name: 'Cunaguaro'
1050
+ # Centaury (https://github.com/Feodor2/Centaury)
1051
+ - regex: 'Centaury(?:/(\d+[\.\d]+))?'
1052
+ name: 'Centaury'
256
1053
  version: '$1'
1054
+ engine:
1055
+ default: 'Goanna'
257
1056
 
258
1057
  #Firefox Focus / Firefox Klar
259
1058
  - regex: '(?:Focus|Klar)(?:/(\d+[\.\d]+))?'
@@ -275,28 +1074,38 @@
275
1074
  default: 'Gecko'
276
1075
 
277
1076
  #Firefox Mobile
278
- - regex: '(Mobile|Tablet).*Firefox(?:/(\d+[\.\d]+))?'
1077
+ - regex: '(?:Mobile|Tablet).*Servo.*Firefox(?:/(\d+[\.\d]+))?'
1078
+ name: 'Firefox Mobile'
1079
+ version: '$1'
1080
+ engine:
1081
+ default: 'Servo'
1082
+ - regex: '(?:Mobile|Tablet).*Firefox(?:/(\d+[\.\d]+))?'
279
1083
  name: 'Firefox Mobile'
280
- version: '$2'
1084
+ version: '$1'
281
1085
  engine:
282
1086
  default: 'Gecko'
1087
+ - regex: 'FxiOS/(\d+[\.\d]+)'
1088
+ name: 'Firefox Mobile iOS'
1089
+ version: '$1'
1090
+ engine:
1091
+ default: 'WebKit'
283
1092
 
284
1093
  #Firefox
285
- - regex: 'Firefox(?:/(\d+[\.\d]+))?'
1094
+ - regex: '.*Servo.*Firefox(?:/(\d+[\.\d]+))?'
286
1095
  name: 'Firefox'
287
1096
  version: '$1'
288
1097
  engine:
289
- default: 'Gecko'
290
- - regex: '(BonEcho|GranParadiso|Lorentz|Minefield|Namoroka|Shiretoko)/(\d+[\.\d]+)'
1098
+ default: 'Servo'
1099
+ - regex: '(?!.*Opera[ /])Firefox(?:/(\d+[\.\d]+))?'
291
1100
  name: 'Firefox'
292
- version: '$1 ($2)'
1101
+ version: '$1'
293
1102
  engine:
294
1103
  default: 'Gecko'
295
- - regex: 'FxiOS/(\d+[\.\d]+)'
296
- name: 'Firefox Mobile'
297
- version: 'iOS $1'
1104
+ - regex: '(?:BonEcho|GranParadiso|Lorentz|Minefield|Namoroka|Shiretoko)/(\d+[\.\d]+)'
1105
+ name: 'Firefox'
1106
+ version: '$1'
298
1107
  engine:
299
- default: 'WebKit'
1108
+ default: 'Gecko'
300
1109
 
301
1110
  #ANT Fresco
302
1111
  - regex: 'ANTFresco(?:[/ ](\d+[\.\d]+))?'
@@ -352,6 +1161,49 @@
352
1161
  name: 'Dooble'
353
1162
  version: '$1'
354
1163
 
1164
+ # Whale
1165
+ - regex: 'Whale/(\d+[\.\d]+)'
1166
+ name: 'Whale Browser'
1167
+ version: '$1'
1168
+ engine:
1169
+ default: 'Blink'
1170
+
1171
+ #Obigo
1172
+ - regex: 'Obigo[ ]?(?:InternetBrowser|Browser)?(?:[ /]([a-z0-9]*))?'
1173
+ name: 'Obigo'
1174
+ version: '$1'
1175
+ - regex: 'Obigo|Teleca'
1176
+ name: 'Obigo'
1177
+ version: ''
1178
+
1179
+ # UC Browser HD
1180
+ - regex: 'UCBrowserHD/(\d[\d\.]+)'
1181
+ name: 'UC Browser HD'
1182
+ version: '$1'
1183
+
1184
+ #UC Browser Mini
1185
+ - regex: 'UCMini(?:[ /]?(\d+[\.\d]+))?'
1186
+ name: 'UC Browser Mini'
1187
+ version: '$1'
1188
+ - regex: 'UC[ ]?Browser.* \(UCMini\)'
1189
+ name: 'UC Browser Mini'
1190
+ version: ''
1191
+
1192
+ # UC Browser Turbo
1193
+ - regex: 'UCTurbo(?:[ /]?(\d+[\.\d]+))?'
1194
+ name: 'UC Browser Turbo'
1195
+ version: '$1'
1196
+ - regex: 'UC[ ]?Browser.* \(UCTurbo\)'
1197
+ name: 'UC Browser Turbo'
1198
+ version: ''
1199
+
1200
+ # Opera GX (https://www.opera.com/gx#start | http://ftp.opera.com/pub/opera_gx/)
1201
+ - regex: 'OPRGX(?:/(\d+[\.\d]+))?'
1202
+ name: 'Opera GX'
1203
+ version: '$1'
1204
+ engine:
1205
+ default: 'Blink'
1206
+
355
1207
  #Opera
356
1208
  - regex: '(?:Opera Tablet.*Version|Opera/.+Opera Mobi.+Version|Mobile.+OPR)/(\d+[\.\d]+)'
357
1209
  name: 'Opera Mobile'
@@ -360,9 +1212,26 @@
360
1212
  default: 'Presto'
361
1213
  versions:
362
1214
  15: 'Blink'
363
- - regex: '(?:OPT)/(\d+[\.\d]+)'
1215
+ - regex: 'MMS/(\d+[\.\d]+)'
1216
+ name: 'Opera Neon'
1217
+ version: '$1'
1218
+ engine:
1219
+ default: 'Blink'
1220
+ - regex: 'OMI/(\d+[\.\d]+)'
1221
+ name: 'Opera Devices'
1222
+ version: '$1'
1223
+ engine:
1224
+ default: 'Blink'
1225
+ - regex: 'Opera%20Touch/(\d+[\.\d]+)? CFNetwork/.+Darwin/.+(?!.*x86_64)'
1226
+ name: 'Opera Touch'
1227
+ version: '$1'
1228
+ engine:
1229
+ default: 'WebKit'
1230
+ - regex: 'OPT/(\d+[\.\d]+)'
364
1231
  name: 'Opera Touch'
365
1232
  version: '$1'
1233
+ engine:
1234
+ default: 'Blink'
366
1235
  - regex: 'Opera/(\d+[\.\d]+).+Opera Mobi'
367
1236
  name: 'Opera Mobile'
368
1237
  version: '$1'
@@ -380,6 +1249,17 @@
380
1249
  version: '$1'
381
1250
  engine:
382
1251
  default: 'Presto'
1252
+ - regex: 'OPiOS/(\d+[\.\d]+)'
1253
+ name: 'Opera Mini iOS'
1254
+ version: '$1'
1255
+ engine:
1256
+ default: 'WebKit'
1257
+ - regex: 'Opera%20Mini/(\d+[\.\d]+) CFNetwork'
1258
+ name: 'Opera Mini iOS'
1259
+ version: '$1'
1260
+ engine:
1261
+ default: 'WebKit'
1262
+
383
1263
  - regex: 'Opera.+Edition Next.+Version/(\d+[\.\d]+)'
384
1264
  name: 'Opera Next'
385
1265
  version: '$1'
@@ -401,8 +1281,8 @@
401
1281
  default: ''
402
1282
  versions:
403
1283
  '3.5': 'Elektra'
404
- 7: 'Presto'
405
- 15: 'Blink'
1284
+ '7': 'Presto'
1285
+ '15': 'Blink'
406
1286
 
407
1287
  #Rekonq
408
1288
  - regex: 'rekonq(?:/(\d+[\.\d]+))?'
@@ -419,13 +1299,13 @@
419
1299
  default: '' # multi engine
420
1300
 
421
1301
  #Comodo Dragon
422
- - regex: 'Comodo[ _]Dragon(?:/(\d+[\.\d]+))?'
1302
+ - regex: '(?:Comodo[ _])?Dragon(?!fruit)(?:/(\d+[\.\d]+))?'
423
1303
  name: 'Comodo Dragon'
424
1304
  version: '$1'
425
1305
  engine:
426
1306
  default: 'WebKit'
427
1307
  versions:
428
- 28: 'Blink'
1308
+ '28': 'Blink'
429
1309
 
430
1310
  #ChromePlus
431
1311
  - regex: 'ChromePlus(?:/(\d+[\.\d]+))?'
@@ -451,165 +1331,438 @@
451
1331
  4: '' # multiple (KHTML or WebKit)
452
1332
 
453
1333
  #Baidu Browser
454
- - regex: 'baidubrowser(?:[/ ](\d+[\.\d]*))?'
1334
+ - regex: '(?:baidubrowser|bdbrowser(?:(?:hd)?_i18n)?|FlyFlow|BaiduHD)(?:[/ ](\d+[\.\d]*))?'
455
1335
  name: 'Baidu Browser'
456
1336
  version: '$1'
457
1337
 
458
1338
  #Baidu Spark
459
- - regex: '(?:(?:BD)?Spark|BIDUBrowser)[/ ](\d+[\.\d]*)'
1339
+ - regex: '(?:(?:BD)?Spark(?:Safe)?|BIDUBrowser)[/ ](\d+[\.\d]*)'
460
1340
  name: 'Baidu Spark'
461
1341
  version: '$1'
462
1342
 
1343
+ # Yandex Browser Lite
1344
+ - regex: 'YaBrowser(?:/(\d+[\.\d]*)) \(lite\)?'
1345
+ name: 'Yandex Browser Lite'
1346
+ version: '$1'
1347
+ engine:
1348
+ default: 'Blink'
463
1349
  #Yandex Browser
464
- - regex: 'YaBrowser(?:/(\d+[\.\d]*))?'
1350
+ - regex: 'YaBrowser(?:/(\d+[\.\d]*))(?: \((alpha|beta)\))?'
1351
+ name: 'Yandex Browser'
1352
+ version: '$1 $2'
1353
+ engine:
1354
+ default: 'Blink'
1355
+ # Yandex Browser + voice assistant alisa
1356
+ - regex: 'Ya(?:ndex)?SearchBrowser(?:/(\d+[\.\d]*))'
465
1357
  name: 'Yandex Browser'
466
1358
  version: '$1'
467
1359
  engine:
468
1360
  default: 'Blink'
469
1361
 
470
- #Vivaldi
471
- - regex: 'Vivaldi(?:/(\d+[\.\d]+))?'
472
- name: 'Vivaldi'
1362
+ #Vivaldi
1363
+ - regex: 'Vivaldi(?:/(\d+[\.\d]+))?'
1364
+ name: 'Vivaldi'
1365
+ version: '$1'
1366
+ engine:
1367
+ default: 'Blink'
1368
+
1369
+ #TweakStyle
1370
+ - regex: 'TweakStyle(?:/(\d+[\.\d]+))?'
1371
+ name: 'TweakStyle'
1372
+ version: '$1'
1373
+ engine:
1374
+ default: 'Blink'
1375
+
1376
+ #Midori
1377
+ - regex: 'Chrome.+Midori Browser/(\d+[\.\d]+)'
1378
+ name: 'Midori'
1379
+ version: '$1'
1380
+ engine:
1381
+ default: 'Blink'
1382
+ - regex: 'Midori(?:/(\d+[\.\d]+))?'
1383
+ name: 'Midori'
1384
+ version: '$1'
1385
+ engine:
1386
+ default: 'WebKit'
1387
+
1388
+ #Mercury
1389
+ - regex: 'Mercury/(?:(\d+[\.\d]+))?'
1390
+ name: 'Mercury'
1391
+ version: '$1'
1392
+
1393
+ #Maxthon
1394
+ - regex: 'Chrome.+Maxthon(?:.+\(portable\))?/(\d+[\.\d]+)'
1395
+ name: 'Maxthon'
1396
+ version: '$1'
1397
+ engine:
1398
+ default: 'WebKit'
1399
+ versions:
1400
+ '5.2': 'Blink'
1401
+ - regex: '(?:Maxthon(?:%20Browser)?|MxBrowser(?:-inhouse|-iPhone)?)[ /](\d+[\.\d]+)'
1402
+ name: 'Maxthon'
1403
+ version: '$1'
1404
+ engine:
1405
+ default: '' # Trident and WebKit
1406
+ versions:
1407
+ 3: 'WebKit'
1408
+
1409
+ - regex: '(?:Maxthon|MyIE2)'
1410
+ name: 'Maxthon'
1411
+ version: ''
1412
+ engine:
1413
+ default: '' # Trident and WebKit
1414
+
1415
+ #Puffin
1416
+ - regex: 'Puffin(?:/(\d+[\.\d]+))?'
1417
+ name: 'Puffin'
1418
+ version: '$1'
1419
+
1420
+ #MobileIron
1421
+ - regex: 'MobileIron(?:/(\d+[\.\d]+))?'
1422
+ name: 'Iron Mobile'
1423
+ version: '$1'
1424
+ engine:
1425
+ default: 'Blink'
1426
+
1427
+ # Iron
1428
+ - regex: 'Chrome(?:/(\d+[\.\d]+))?.*Iron'
1429
+ name: 'Iron'
1430
+ version: '$1'
1431
+ engine:
1432
+ default: 'WebKit'
1433
+
1434
+ - regex: 'Iron(?:/(\d+[\.\d]+))?'
1435
+ name: 'Iron'
1436
+ version: '$1'
1437
+ engine:
1438
+ default: 'WebKit'
1439
+ versions:
1440
+ 28: 'Blink'
1441
+
1442
+ #GNOME Web
1443
+ - regex: 'Epiphany(?:/(\d+[\.\d]+))?'
1444
+ name: 'GNOME Web'
1445
+ version: '$1'
1446
+ engine:
1447
+ default: 'Gecko'
1448
+ versions:
1449
+ '2.9.16': '' # multi engine
1450
+ '2.28': 'WebKit'
1451
+
1452
+ # LieBaoFast
1453
+ - regex: 'LieBaoFast(?:[ /](\d+[\.\d]+))?'
1454
+ name: 'LieBaoFast'
1455
+ version: '$1'
1456
+
1457
+ # Cheetah Browser
1458
+ - regex: 'LBBrowser(?:[ /](\d+[\.\d]+))?'
1459
+ name: 'Cheetah Browser'
1460
+ version: '$1'
1461
+
1462
+ # Sogou Explorer
1463
+ - regex: 'SE (\d+[\.\d]+)'
1464
+ name: 'Sogou Explorer'
1465
+ version: '$1'
1466
+
1467
+ # QQ Browser Lite
1468
+ - regex: 'QQBrowserLite/([\d\.]+)'
1469
+ name: 'QQ Browser Lite'
1470
+ version: '$1'
1471
+
1472
+ # QQ Browser Mini
1473
+ - regex: 'M?QQBrowser/Mini([\.\d]+)?'
1474
+ name: 'QQ Browser Mini'
1475
+ version: '$1'
1476
+ engine:
1477
+ default: '' # multi engine -- WebKit or Blink
1478
+
1479
+ # QQ Browser
1480
+ - regex: 'M?QQBrowser(?:/([\.\d]+))?'
1481
+ name: 'QQ Browser'
1482
+ version: '$1'
1483
+ engine:
1484
+ default: '' # multi engine -- WebKit or Blink
1485
+
1486
+ # MIUI Browser
1487
+ - regex: '(?:MIUIBrowser|MiuiBrowser)(?:/(\d+[\.\d]+))?'
1488
+ name: 'MIUI Browser'
1489
+ version: '$1'
1490
+ engine:
1491
+ default: '' # multi engine -- WebKit or Blink
1492
+
1493
+ # Coc Coc
1494
+ # This browser (http://coccoc.vn/) is built on top of Chromium with
1495
+ # additional features for Vietnamese users. Its regex has to be placed
1496
+ # before generic Chrome regex, or Chrome regex will match first and
1497
+ # the browser is mistaken as 'Chrome".
1498
+ - regex: '(?:coc_coc_browser|coccocbrowser|CocCoc)(?:/(\d+[\.\d]+))?'
1499
+ name: 'Coc Coc'
1500
+ version: '$1'
1501
+ engine:
1502
+ default: 'WebKit'
1503
+ versions:
1504
+ 28: 'Blink'
1505
+
1506
+ - regex: 'DuckDuckGo/(\d+[\.\d]*)'
1507
+ name: 'DuckDuckGo Privacy Browser'
1508
+ version: '$1'
1509
+ engine:
1510
+ default: 'Blink'
1511
+
1512
+ #Samsung Browser
1513
+ - regex: 'Samsung ?Browser(?:[/ ](\d+[\.\d]+))?'
1514
+ name: 'Samsung Browser'
1515
+ version: '$1'
1516
+
1517
+ # Super Fast Browser (https://play.google.com/store/apps/details?id=com.browser.tssomas)
1518
+ - regex: '(?:SFB(?:rowser)?)/(\d+[\.\d]+)'
1519
+ name: 'Super Fast Browser'
1520
+ version: '$1'
1521
+ - regex: 'com.browser.tssomas(?:/(\d+[\.\d]+))?'
1522
+ name: 'Super Fast Browser'
1523
+ version: '$1'
1524
+
1525
+ # EUI Browser
1526
+ - regex: 'EUI Browser(?:/(\d+[\.\d]+))?'
1527
+ name: 'EUI Browser'
1528
+ version: '$1'
1529
+
1530
+ # UBrowser (https://callumprentice.github.io/)
1531
+ - regex: 'UBrowser(?:/(\d+[\.\d]+))?'
1532
+ name: 'UBrowser'
1533
+ version: '$1'
1534
+
1535
+ #Streamy (Chromium based)
1536
+ - regex: 'Streamy(?:/(\d+[\.\d]+))?'
1537
+ name: 'Streamy'
1538
+ version: '$1'
1539
+ engine:
1540
+ default: 'WebKit'
1541
+
1542
+ #Isivioo (Android version is Chrome based)
1543
+ - regex: 'isivioo'
1544
+ name: 'Isivioo'
1545
+ version: ''
1546
+ engine:
1547
+ default: 'WebKit'
1548
+
1549
+ #UC Browser
1550
+ - regex: 'UC[ ]?Browser(?:[ /]?(\d+[\.\d]+))?'
1551
+ name: 'UC Browser'
1552
+ version: '$1'
1553
+ - regex: 'UCWEB(?:[ /]?(\d+[\.\d]+))?'
1554
+ name: 'UC Browser'
1555
+ version: '$1'
1556
+ - regex: 'UC AppleWebKit'
1557
+ name: 'UC Browser'
1558
+ version: ''
1559
+
1560
+ #It should be checked before Chrome since the UA contains the Chrome
1561
+
1562
+ #Tenta Browser (https://play.google.com/store/apps/details?id=com.tenta.android)
1563
+ - regex: 'Chrome/.+Tenta/(\d+[\.\d]+)'
1564
+ name: 'Tenta Browser'
1565
+ version: '$1'
1566
+ engine:
1567
+ default: 'Blink'
1568
+ - regex: 'Tenta/(\d+[\.\d]+)'
1569
+ name: 'Tenta Browser'
1570
+ version: '$1'
1571
+ engine:
1572
+ default: 'WebKit'
1573
+
1574
+ # Firefox Rocket
1575
+ - regex: 'Rocket/(\d+[\.\d]+)'
1576
+ name: 'Firefox Rocket'
1577
+ version: '$1'
1578
+ engine:
1579
+ default: 'WebKit'
1580
+
1581
+ # Web Explorer
1582
+ - regex: 'Web Explorer/(\d+[\.\d]+).*Chrome'
1583
+ name: 'Web Explorer'
1584
+ version: '$1'
1585
+ engine:
1586
+ default: 'WebKit'
1587
+
1588
+ # Seznam Browser
1589
+ - regex: 'SznProhlizec/(\d+[\.\d]+)'
1590
+ name: 'Seznam Browser'
1591
+ version: '$1'
1592
+ engine:
1593
+ default: 'Blink'
1594
+
1595
+ # SogouMobileBrowser
1596
+ - regex: 'SogouMobileBrowser/(\d+[\.\d]+)'
1597
+ name: 'Sogou Mobile Browser'
473
1598
  version: '$1'
474
1599
  engine:
475
- default: 'Blink'
1600
+ default: '' # multi engine -- WebKit or Blink
476
1601
 
477
- #TweakStyle
478
- - regex: 'TweakStyle(?:/(\d+[\.\d]+))?'
479
- name: 'TweakStyle'
1602
+ # Mint Browser
1603
+ - regex: 'Mint Browser/(\d+[\.\d]+)'
1604
+ name: 'Mint Browser'
480
1605
  version: '$1'
481
1606
  engine:
482
- default: 'Blink'
1607
+ default: '' # multi engine -- WebKit or Blink
483
1608
 
484
- #Midori
485
- - regex: 'Midori(?:/(\d+[\.\d]+))?'
486
- name: 'Midori'
1609
+ # Ecosia
1610
+ - regex: 'Ecosia (?:android|ios)@(\d+[\.\d]+)'
1611
+ name: 'Ecosia'
487
1612
  version: '$1'
488
1613
  engine:
489
- default: 'WebKit'
1614
+ default: '' # multi engine -- WebKit or Blink
490
1615
 
491
- #Mercury
492
- - regex: 'Mercury(?:/(\d+[\.\d]+))?'
493
- name: 'Mercury'
1616
+ # CM Browser
1617
+ - regex: 'ACHEETAHI'
1618
+ name: 'CM Browser'
1619
+ version: ''
1620
+ engine:
1621
+ default: '' # multi engine -- WebKit or Blink
1622
+
1623
+ # Kiwi Browser
1624
+ - regex: 'Kiwi Chrome'
1625
+ name: 'Kiwi'
1626
+ version: ''
1627
+ engine:
1628
+ default: '' # multi engine -- WebKit or Blink
1629
+
1630
+ # 2345 Browser
1631
+ - regex: 'Mb2345Browser/(\d+[\.\d]+)'
1632
+ name: '2345 Browser'
494
1633
  version: '$1'
1634
+ engine:
1635
+ default: '' # multi engine -- WebKit or Blink
495
1636
 
496
- #Maxthon
497
- - regex: '(?:Maxthon|MxBrowser)[ /](\d+[\.\d]+)'
498
- name: 'Maxthon'
1637
+ # QtWebEngine
1638
+ - regex: 'QtWebEngine/(\d+[\.\d]+)'
1639
+ name: 'QtWebEngine'
499
1640
  version: '$1'
500
1641
  engine:
501
- default: '' # Trident and WebKit
502
- versions:
503
- 3: 'WebKit'
1642
+ default: '' # multi engine -- WebKit or Blink
504
1643
 
505
- - regex: '(?:Maxthon|MyIE2|Uzbl)'
506
- name: 'Maxthon'
507
- version: ''
1644
+ #Mobile Silk
1645
+ - regex: 'Silk/(\d+[\.\d]+) like Chrome'
1646
+ name: 'Mobile Silk'
1647
+ version: '$1'
508
1648
  engine:
509
- default: '' # Trident and WebKit
1649
+ default: 'Blink'
1650
+ - regex: 'Silk(?:/(\d+[\.\d]+))?'
1651
+ name: 'Mobile Silk'
1652
+ version: '$1'
1653
+ engine:
1654
+ default: 'WebKit'
510
1655
 
511
- #Puffin
512
- - regex: 'Puffin(?:/(\d+[\.\d]+))?'
513
- name: 'Puffin'
1656
+ #IBrowse
1657
+ - regex: 'IBrowse(?:[ /](\d+[\.\d]+))?'
1658
+ name: 'IBrowse'
514
1659
  version: '$1'
515
1660
 
516
- #Iron
517
- - regex: 'Iron(?:/(\d+[\.\d]+))?'
518
- name: 'Iron'
1661
+ #Openwave Mobile Browser
1662
+ - regex: 'UP.Browser(?:/(\d+[\.\d]+))?'
1663
+ name: 'Openwave Mobile Browser'
1664
+ version: '$1'
1665
+ - regex: 'Openwave(?:/(\d+[\.\d]+))?'
1666
+ name: 'Openwave Mobile Browser'
1667
+ version: '$1'
1668
+
1669
+ #ONE Browser
1670
+ - regex: 'OneBrowser(?:[ /](\d+[\.\d]+))?'
1671
+ name: 'ONE Browser'
519
1672
  version: '$1'
520
1673
  engine:
521
1674
  default: 'WebKit'
522
- versions:
523
- 28: 'Blink'
524
1675
 
525
- #GNOME Web
526
- - regex: 'Epiphany(?:/(\d+[\.\d]+))?'
527
- name: 'GNOME Web'
1676
+ # GoBrowser
1677
+ - regex: 'GoBrowser(?:/(\d+[\.\d]+))?'
1678
+ name: 'GoBrowser'
528
1679
  version: '$1'
529
- engine:
530
- default: 'Gecko'
531
- versions:
532
- '2.9.16': '' # multi engine
533
- '2.28': 'WebKit'
534
1680
 
535
- # Liebao
536
- - regex: 'LBBrowser(?:[ /](\d+[\.\d]+))?'
537
- name: 'Liebao'
1681
+ #Nokia Browser
1682
+ - regex: '(?:NokiaBrowser|BrowserNG)(?:/(\d+[\.\d]+))?'
1683
+ name: 'Nokia Browser'
1684
+ version: '$1'
1685
+ - regex: 'Series60/5\.0'
1686
+ name: 'Nokia Browser'
1687
+ version: '7.0'
1688
+ - regex: 'Series60/(\d+[\.\d]+)'
1689
+ name: 'Nokia OSS Browser'
1690
+ version: '$1'
1691
+ - regex: 'S40OviBrowser/(\d+[\.\d]+)'
1692
+ name: 'Nokia Ovi Browser'
538
1693
  version: '$1'
1694
+ - regex: '^Nokia|Nokia[EN]?\d+'
1695
+ name: 'Nokia Browser'
1696
+ version: ''
539
1697
 
540
- # Sogou Explorer
541
- - regex: 'SE (\d+[\.\d]+)'
542
- name: 'Sogou Explorer'
1698
+ #Sleipnir
1699
+ - regex: 'Sleipnir(?:(?:%20Browser)?[ /](\d+[\.\d]+))?'
1700
+ name: 'Sleipnir'
543
1701
  version: '$1'
1702
+ engine:
1703
+ default: '' # multi engine
544
1704
 
545
- # QQ Browser
546
- - regex: 'M?QQBrowser(?:/(?:Mini)?([\.\d]+))?'
547
- name: 'QQ Browser'
1705
+ # NTENT Browser
1706
+ - regex: 'NTENTBrowser(?:/(\d+[\.\d]+))?'
1707
+ name: 'NTENT Browser'
548
1708
  version: '$1'
549
1709
 
550
- # MIUI Browser
551
- - regex: 'MIUIBrowser(?:/(\d+[\.\d]+))?'
552
- name: 'MIUI Browser'
1710
+ # TV Bro
1711
+ - regex: 'TV Bro/(\d+[\.\d]+)'
1712
+ name: 'TV Bro'
553
1713
  version: '$1'
554
1714
 
555
- # Coc Coc
556
- # This browser (http://coccoc.vn/) is built on top of Chromium with
557
- # additional features for Vietnamese users. Its regex has to be placed
558
- # before generic Chrome regex, or Chrome regex will match first and
559
- # the browser is mistaken as "Chrome".
560
- - regex: 'coc_coc_browser(?:/(\d+[\.\d]+))?'
561
- name: 'Coc Coc'
1715
+ # Quark
1716
+ - regex: 'Chrome/.+ Quark(?:/(\d+[\.\d]+))?'
1717
+ name: 'Quark'
562
1718
  version: '$1'
563
1719
  engine:
564
1720
  default: 'WebKit'
565
- versions:
566
- 28: 'Blink'
567
1721
 
568
- #Samsung Browser
569
- - regex: 'Samsung ?Browser(?:[/ ](\d+[\.\d]+))?'
570
- name: 'Samsung Browser'
1722
+ # Monument Browser
1723
+ - regex: 'MonumentBrowser(?:/(\d+[\.\d]+))?'
1724
+ name: 'Monument Browser'
571
1725
  version: '$1'
1726
+ engine:
1727
+ default: 'WebKit'
572
1728
 
573
- #Streamy
574
- #This browser is built on top of Chromium.
575
- #It should be checked first.
576
- - regex: 'Streamy(?:/(\d+[\.\d]+))?'
577
- name: 'Streamy'
1729
+ # Blue Browser
1730
+ - regex: 'BlueBrowser(?:/(\d+[\.\d]+))?'
1731
+ name: 'Blue Browser'
578
1732
  version: '$1'
579
1733
  engine:
580
1734
  default: 'WebKit'
581
1735
 
582
- #Isivioo
583
- #Andorid version of the browser is built on top of Chrome Mobile.
584
- #It should be checked first.
585
- - regex: 'isivioo'
586
- name: 'Isivioo'
587
- version: ''
1736
+ # Japan Browser (https://play.google.com/store/apps/details?id=com.japan.browser.anti.blokir)
1737
+ - regex: 'JAPAN Browser(?:/(\d+[\.\d]+))?'
1738
+ name: 'Japan Browser'
1739
+ version: '$1'
588
1740
  engine:
589
1741
  default: 'WebKit'
590
1742
 
591
- #UC Browser
592
- - regex: 'UC[ ]?Browser(?:[ /]?(\d+[\.\d]+))?'
593
- name: 'UC Browser'
594
- version: '$1'
595
- - regex: 'UCWEB(?:[ /]?(\d+[\.\d]+))?'
596
- name: 'UC Browser'
1743
+ - regex: 'OpenFin/(?:(\d+[\.\d]+))'
1744
+ name: 'OpenFin'
597
1745
  version: '$1'
1746
+ engine:
1747
+ default: 'Blink'
598
1748
 
599
- #Tenta Browser
600
- #It should be checked before Chrome since the UA contains the Chrome
601
- - regex: 'Tenta/(\d+[\.\d]+)'
602
- name: 'Tenta Browser'
1749
+ # SuperBird
1750
+ - regex: 'SuperBird(?:/(\d+[\.\d]+))?'
1751
+ name: 'SuperBird'
603
1752
  version: '$1'
604
1753
  engine:
605
- default: 'Webkit'
1754
+ default: 'WebKit'
1755
+ versions:
1756
+ 28: 'Blink'
606
1757
 
607
- # Firefox Rocket
608
- - regex: 'Rocket/(\d+[\.\d]+)'
609
- name: 'Firefox Rocket'
1758
+ # Chrome Webview
1759
+ - regex: 'Version/.* Chrome(?:/(\d+[\.\d]+))?'
1760
+ name: 'Chrome Webview'
610
1761
  version: '$1'
611
1762
  engine:
612
- default: 'Webkit'
1763
+ default: 'WebKit'
1764
+ versions:
1765
+ 28: 'Blink'
613
1766
 
614
1767
  #Chrome
615
1768
  - regex: 'CrMo(?:/(\d+[\.\d]+))?'
@@ -648,7 +1801,7 @@
648
1801
  version: '$1'
649
1802
  engine:
650
1803
  default: 'Blink'
651
- - regex: 'Chrome(?:/(\d+[\.\d]+))?'
1804
+ - regex: 'Chrome(?!book)(?:/(\d+[\.\d]+))?'
652
1805
  name: 'Chrome'
653
1806
  version: '$1'
654
1807
  engine:
@@ -660,6 +1813,13 @@
660
1813
  - regex: '(?:Tizen|SLP) Browser(?:/(\d+[\.\d]+))?'
661
1814
  name: 'Tizen Browser'
662
1815
  version: '$1'
1816
+ - regex: 'Tizen (?:\d+[\.\d]+).+ Version/(\d+[\.\d]+) (?:TV|Mobile)'
1817
+ name: 'Tizen Browser'
1818
+ version: '$1'
1819
+ engine:
1820
+ default: 'WebKit'
1821
+ versions:
1822
+ '4': 'Blink'
663
1823
 
664
1824
  #Palm Blazer
665
1825
  - regex: 'Blazer(?:/(\d+[\.\d]+))?'
@@ -790,6 +1950,11 @@
790
1950
  name: 'Element Browser'
791
1951
  version: '$1'
792
1952
 
1953
+ # eZ Browser (https://play.google.com/store/apps/details?id=com.asc.csbrowser)
1954
+ - regex: 'eZBrowser(?:/(\d+[\.\d]+))?'
1955
+ name: 'eZ Browser'
1956
+ version: '$1'
1957
+
793
1958
  #Firebird
794
1959
  - regex: 'Firebird(?! Build)(?:/(\d+[\.\d]+))?'
795
1960
  name: 'Firebird'
@@ -823,17 +1988,12 @@
823
1988
  name: 'HotJava'
824
1989
  version: '$1'
825
1990
 
826
- #IBrowse
827
- - regex: 'IBrowse(?:[ /](\d+[\.\d]+))?'
828
- name: 'IBrowse'
829
- version: '$1'
830
-
831
1991
  #iCabMobile
832
1992
  - regex: 'iCabMobile(?:[ /](\d+[\.\d]+))?'
833
1993
  name: 'iCab Mobile'
834
1994
  version: '$1'
835
1995
  engine:
836
- default: 'WebKit'
1996
+ default: 'WebKit'
837
1997
 
838
1998
  #iCab
839
1999
  - regex: 'iCab(?:[ /](\d+[\.\d]+))?'
@@ -844,19 +2004,19 @@
844
2004
  versions:
845
2005
  4: 'WebKit'
846
2006
 
847
- #Sleipnir
848
- - regex: 'Sleipnir(?:[ /](\d+[\.\d]+))?'
849
- name: 'Sleipnir'
2007
+ #Lunascape
2008
+ - regex: 'i?Lunascape(?:[/ ](\d+[\.\d]+))?'
2009
+ name: 'Lunascape'
850
2010
  version: '$1'
851
2011
  engine:
852
2012
  default: '' # multi engine
853
2013
 
854
- #Lunascape
855
- - regex: 'Lunascape(?:[/ ](\d+[\.\d]+))?'
856
- name: 'Lunascape'
2014
+ # Crazy Browser
2015
+ - regex: 'Crazy Browser (\d+[\.\d]+)'
2016
+ name: 'Crazy Browser'
857
2017
  version: '$1'
858
2018
  engine:
859
- default: '' # multi engine
2019
+ default: 'Trident'
860
2020
 
861
2021
  #Internet Explorer
862
2022
  - regex: 'IEMobile[ /](\d+[\.\d]+)'
@@ -871,22 +2031,22 @@
871
2031
  default: 'Trident'
872
2032
  - regex: 'MSIE.*Trident/4.0'
873
2033
  name: 'Internet Explorer'
874
- version: 8.0
2034
+ version: '8.0'
875
2035
  engine:
876
2036
  default: 'Trident'
877
2037
  - regex: 'MSIE.*Trident/5.0'
878
2038
  name: 'Internet Explorer'
879
- version: 9.0
2039
+ version: '9.0'
880
2040
  engine:
881
2041
  default: 'Trident'
882
2042
  - regex: 'MSIE.*Trident/6.0'
883
2043
  name: 'Internet Explorer'
884
- version: 10.0
2044
+ version: '10.0'
885
2045
  engine:
886
2046
  default: 'Trident'
887
- - regex: 'Trident/7.0'
2047
+ - regex: 'Trident/[78].0'
888
2048
  name: 'Internet Explorer'
889
- version: 11.0
2049
+ version: '11.0'
890
2050
  engine:
891
2051
  default: 'Trident'
892
2052
  - regex: 'MSIE (\d+[\.\d]+)'
@@ -900,13 +2060,6 @@
900
2060
  engine:
901
2061
  default: 'Trident'
902
2062
 
903
- #Kazehakase
904
- - regex: 'Kazehakase(?:/(\d+[\.\d]+))?'
905
- name: 'Kazehakase'
906
- version: '$1'
907
- engine:
908
- default: '' # multi engine
909
-
910
2063
  #Kindle Browser
911
2064
  - regex: 'Kindle/(\d+[\.\d]+)'
912
2065
  name: 'Kindle Browser'
@@ -936,14 +2089,6 @@
936
2089
  name: 'LuaKit'
937
2090
  version: '$1'
938
2091
 
939
- #Openwave Mobile Browser
940
- - regex: 'UP.Browser(?:/(\d+[\.\d]+))?'
941
- name: 'Openwave Mobile Browser'
942
- version: '$1'
943
- - regex: 'Openwave(?:/(\d+[\.\d]+))?'
944
- name: 'Openwave Mobile Browser'
945
- version: '$1'
946
-
947
2092
  #OmniWeb
948
2093
  - regex: 'OmniWeb(?:/[v]?(\d+[\.\d]+))?'
949
2094
  name: 'OmniWeb'
@@ -956,13 +2101,6 @@
956
2101
  name: 'Phoenix'
957
2102
  version: '$1'
958
2103
 
959
- #Mobile Silk
960
- - regex: 'Silk(?:/(\d+[\.\d]+))?'
961
- name: 'Mobile Silk'
962
- version: '$1'
963
- engine:
964
- default: 'Blink'
965
-
966
2104
  #NetFront
967
2105
  - regex: 'NetFrontLifeBrowser(?:/(\d+[\.\d]+))?'
968
2106
  name: 'NetFront Life'
@@ -974,7 +2112,7 @@
974
2112
  version: '$1'
975
2113
  engine:
976
2114
  default: 'NetFront'
977
- - regex: 'PLAYSTATION|NINTENDO 3|AppleWebKit.+ NX/\d+\.\d+\.\d+'
2115
+ - regex: 'PLAYSTATION|NINTENDO 3|AppleWebKit.+ N[XF]/\d+\.\d+\.\d+'
978
2116
  name: 'NetFront'
979
2117
  version: ''
980
2118
 
@@ -983,19 +2121,6 @@
983
2121
  name: 'NetPositive'
984
2122
  version: '$1'
985
2123
 
986
- # NTENT Browser
987
- - regex: 'NTENTBrowser(?:/(\d+[\.\d]+))?'
988
- name: 'NTENT Browser'
989
- version: '$1'
990
-
991
- #Obigo
992
- - regex: 'Obigo[ ]?(?:InternetBrowser|Browser)?(?:[ /]([a-z0-9]*))?'
993
- name: 'Obigo'
994
- version: '$1'
995
- - regex: 'Obigo|Teleca'
996
- name: 'Obigo'
997
- version: ''
998
-
999
2124
  #Odyssey Web Browser
1000
2125
  - regex: 'Odyssey Web Browser(?:.*OWB/(\d+[\.\d]+))?'
1001
2126
  name: 'Odyssey Web Browser'
@@ -1006,23 +2131,11 @@
1006
2131
  name: 'Off By One'
1007
2132
  version: ''
1008
2133
 
1009
- #ONE Browser
1010
- - regex: 'OneBrowser(?:[ /](\d+[\.\d]+))?'
1011
- name: 'ONE Browser'
1012
- version: '$1'
1013
- engine:
1014
- default: 'WebKit'
1015
-
1016
- #Oregano
1017
- - regex: 'Oregano(?:[ /](\d+[\.\d]+))?'
2134
+ #Oregano (https://oregan.net/)
2135
+ - regex: '(?:Oregano|OreganMediaBrowser)(?:[ /](\d+[\.\d]+))?'
1018
2136
  name: 'Oregano'
1019
2137
  version: '$1'
1020
2138
 
1021
- #Otter Browser
1022
- - regex: 'Otter(?:[ /](\d+[\.\d]+))?'
1023
- name: 'Otter Browser'
1024
- version: '$1'
1025
-
1026
2139
  #Polaris
1027
2140
  - regex: '(?:Polaris|Embider)(?:[/ ](\d+[\.\d]+))?'
1028
2141
  name: 'Polaris'
@@ -1033,13 +2146,6 @@
1033
2146
  name: 'SEMC-Browser'
1034
2147
  version: '$1'
1035
2148
 
1036
- #Seraphic Sraf
1037
- - regex: 'Sraf(?:[/ ](\d+[\.\d]+))?'
1038
- name: 'Seraphic Sraf'
1039
- version: '$1'
1040
- engine:
1041
- default: 'Blink'
1042
-
1043
2149
  #Shiira
1044
2150
  - regex: 'Shiira(?:[/ ](\d+[\.\d]+))?'
1045
2151
  name: 'Shiira'
@@ -1064,11 +2170,6 @@
1064
2170
  name: 'Sunrise'
1065
2171
  version: '$1'
1066
2172
 
1067
- #SuperBird
1068
- - regex: 'SuperBird(?:/(\d+[\.\d]+))?'
1069
- name: 'SuperBird'
1070
- version: '$1'
1071
-
1072
2173
  #Vision Mobile Browser
1073
2174
  - regex: 'Vision-Browser(?:/(\d+[\.\d]+))'
1074
2175
  name: 'Vision Mobile Browser'
@@ -1084,33 +2185,11 @@
1084
2185
  name: 'Xiino'
1085
2186
  version: '$1'
1086
2187
 
1087
- #Nokia Browser
1088
- - regex: '(?:NokiaBrowser|BrowserNG)(?:/(\d+[\.\d]+))?'
1089
- name: 'Nokia Browser'
1090
- version: '$1'
1091
- - regex: 'Series60/5\.0'
1092
- name: 'Nokia Browser'
1093
- version: '7.0'
1094
- - regex: 'Series60/(\d+[\.\d]+)'
1095
- name: 'Nokia OSS Browser'
1096
- version: '$1'
1097
- - regex: 'S40OviBrowser/(\d+[\.\d]+)'
1098
- name: 'Nokia Ovi Browser'
1099
- version: '$1'
1100
- - regex: '^Nokia|Nokia[EN]?\d+'
1101
- name: 'Nokia Browser'
1102
- version: ''
1103
-
1104
2188
  #BlackBerry Browser
1105
2189
  - regex: 'BlackBerry|PlayBook|BB10'
1106
2190
  name: 'BlackBerry Browser'
1107
2191
  version: ''
1108
2192
 
1109
- #BriskBard
1110
- - regex: 'BriskBard(?:/(\d+[\.\d]+))?'
1111
- name: 'BriskBard'
1112
- version: '$1'
1113
-
1114
2193
  #Android Browser
1115
2194
  - regex: 'Android'
1116
2195
  name: 'Android Browser'
@@ -1123,10 +2202,12 @@
1123
2202
  name: 'Coast'
1124
2203
  version: '$1'
1125
2204
 
1126
- #Qutebrowser
1127
- - regex: 'qutebrowser(?:/(\d+[\.\d]+))?'
1128
- name: 'Qutebrowser'
2205
+ # surf (https://surf.suckless.org/)
2206
+ - regex: 'Surf(?:/(\d+[\.\d]+))?'
2207
+ name: 'surf'
1129
2208
  version: '$1'
2209
+ engine:
2210
+ default: 'WebKit'
1130
2211
 
1131
2212
  #Safari
1132
2213
  - regex: '(?:(?:iPod|iPad|iPhone).+Version|MobileSafari)/(\d+[\.\d]+)'
@@ -1139,25 +2220,59 @@
1139
2220
  version: '$1'
1140
2221
  engine:
1141
2222
  default: 'WebKit'
1142
- - regex: '(?:iPod|iPhone|iPad)'
2223
+ - regex: '(?:iPod|(?<!Apple TV; U; CPU )iPhone|iPad)'
1143
2224
  name: 'Mobile Safari'
1144
2225
  version: ''
1145
2226
  engine:
1146
2227
  default: 'WebKit'
1147
- - regex: 'Version/(\d+[\.\d]+).*Safari/|Safari/\d+'
2228
+ - regex: 'Version/(\d+[\.\d]+).*Safari/|Safari/?\d+'
1148
2229
  name: 'Safari'
1149
2230
  version: '$1'
1150
2231
  engine:
1151
2232
  default: 'WebKit'
1152
-
1153
- #Dorado
1154
- - regex: 'Dorado WAP-Browser[/ ](\d+[\.\d]+)'
2233
+
2234
+ # Dorado
2235
+ - regex: 'Dorado WAP-Browser(?:[/ ](\d+[\.\d]+))?'
1155
2236
  name: 'Dorado'
1156
2237
  version: '$1'
1157
2238
 
1158
- #NetSurf
2239
+ # NetSurf
1159
2240
  - regex: 'NetSurf(?:/(\d+[\.\d]+))?'
1160
2241
  name: 'NetSurf'
1161
2242
  version: '$1'
1162
2243
  engine:
1163
2244
  default: 'NetSurf'
2245
+
2246
+ # Uzbl (https://www.uzbl.org/)
2247
+ - regex: 'Uzbl'
2248
+ name: 'Uzbl'
2249
+ version: ''
2250
+
2251
+ # SimpleBrowser (https://github.com/SimpleBrowserDotNet/SimpleBrowser)
2252
+ - regex: 'SimpleBrowser'
2253
+ name: 'SimpleBrowser'
2254
+ version: ''
2255
+
2256
+ # Zvu
2257
+ - regex: 'Zvu(?:/(\d+[\.\d]+))?'
2258
+ name: 'Zvu'
2259
+ version: '$1'
2260
+ engine:
2261
+ default: 'Gecko'
2262
+
2263
+ # GOG Galaxy
2264
+ - regex: 'GOGGalaxyClient/(\d+[\.\d]+)?'
2265
+ name: 'GOG Galaxy'
2266
+ version: '$1'
2267
+
2268
+ # MAUI Wap Browser
2269
+ - regex: 'WAP Browser/MAUI|(?:\w+)?Maui Wap Browser|MAUI[- ]Browser'
2270
+ name: 'MAUI WAP Browser'
2271
+ version: ''
2272
+
2273
+ # SP Browser
2274
+ - regex: 'SP%20Browser/(\d+[\.\d]+)'
2275
+ name: 'SP Browser'
2276
+ version: '$1'
2277
+ engine:
2278
+ default: 'WebKit'