device_detector 1.0.5 → 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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -6
  3. data/lib/device_detector/browser.rb +364 -0
  4. data/lib/device_detector/client.rb +8 -0
  5. data/lib/device_detector/device.rb +1124 -4
  6. data/lib/device_detector/os.rb +36 -11
  7. data/lib/device_detector/version.rb +1 -1
  8. data/lib/device_detector/version_extractor.rb +9 -0
  9. data/lib/device_detector.rb +57 -13
  10. data/regexes/bots.yml +551 -58
  11. data/regexes/client/browser_engine.yml +7 -1
  12. data/regexes/client/browsers.yml +594 -71
  13. data/regexes/client/feed_readers.yml +4 -10
  14. data/regexes/client/libraries.yml +47 -2
  15. data/regexes/client/mediaplayers.yml +25 -1
  16. data/regexes/client/mobile_apps.yml +447 -77
  17. data/regexes/client/pim.yml +49 -1
  18. data/regexes/device/cameras.yml +5 -5
  19. data/regexes/device/car_browsers.yml +16 -0
  20. data/regexes/device/consoles.yml +6 -0
  21. data/regexes/device/mobiles.yml +12905 -4561
  22. data/regexes/device/portable_media_player.yml +20 -3
  23. data/regexes/device/shell_tv.yml +117 -0
  24. data/regexes/device/televisions.yml +426 -35
  25. data/regexes/oss.yml +567 -139
  26. data/spec/device_detector/concrete_user_agent_spec.rb +30 -42
  27. data/spec/device_detector/detector_fixtures_spec.rb +9 -5
  28. data/spec/device_detector/device_spec.rb +26 -10
  29. data/spec/fixtures/client/browser.yml +1463 -391
  30. data/spec/fixtures/client/feed_reader.yml +0 -12
  31. data/spec/fixtures/client/library.yml +91 -37
  32. data/spec/fixtures/client/mediaplayer.yml +30 -0
  33. data/spec/fixtures/client/mobile_app.yml +498 -45
  34. data/spec/fixtures/client/pim.yml +60 -0
  35. data/spec/fixtures/detector/bots.yml +1189 -568
  36. data/spec/fixtures/detector/camera.yml +12 -26
  37. data/spec/fixtures/detector/car_browser.yml +151 -15
  38. data/spec/fixtures/detector/console.yml +70 -48
  39. data/spec/fixtures/detector/desktop.yml +2041 -916
  40. data/spec/fixtures/detector/feature_phone.yml +895 -189
  41. data/spec/fixtures/detector/feed_reader.yml +50 -77
  42. data/spec/fixtures/detector/mediaplayer.yml +79 -26
  43. data/spec/fixtures/detector/mobile_apps.yml +726 -72
  44. data/spec/fixtures/detector/peripheral.yml +271 -0
  45. data/spec/fixtures/detector/phablet.yml +3635 -1596
  46. data/spec/fixtures/detector/portable_media_player.yml +355 -46
  47. data/spec/fixtures/detector/smart_display.yml +183 -9
  48. data/spec/fixtures/detector/smart_speaker.yml +13 -8
  49. data/spec/fixtures/detector/smartphone-1.yml +4002 -4286
  50. data/spec/fixtures/detector/smartphone-10.yml +3771 -4763
  51. data/spec/fixtures/detector/smartphone-11.yml +3615 -4692
  52. data/spec/fixtures/detector/smartphone-12.yml +3856 -4764
  53. data/spec/fixtures/detector/smartphone-13.yml +4213 -4713
  54. data/spec/fixtures/detector/smartphone-14.yml +4039 -4497
  55. data/spec/fixtures/detector/smartphone-15.yml +5642 -2956
  56. data/spec/fixtures/detector/smartphone-16.yml +4739 -5082
  57. data/spec/fixtures/detector/smartphone-17.yml +4832 -4275
  58. data/spec/fixtures/detector/smartphone-18.yml +9806 -0
  59. data/spec/fixtures/detector/smartphone-19.yml +9965 -0
  60. data/spec/fixtures/detector/smartphone-2.yml +4842 -2589
  61. data/spec/fixtures/detector/smartphone-20.yml +9710 -0
  62. data/spec/fixtures/detector/smartphone-21.yml +8693 -0
  63. data/spec/fixtures/detector/smartphone-22.yml +10178 -0
  64. data/spec/fixtures/detector/smartphone-23.yml +9453 -0
  65. data/spec/fixtures/detector/smartphone-24.yml +9843 -0
  66. data/spec/fixtures/detector/smartphone-25.yml +9703 -0
  67. data/spec/fixtures/detector/smartphone-26.yml +10007 -0
  68. data/spec/fixtures/detector/smartphone-27.yml +4927 -0
  69. data/spec/fixtures/detector/smartphone-3.yml +4387 -4427
  70. data/spec/fixtures/detector/smartphone-4.yml +3597 -4582
  71. data/spec/fixtures/detector/smartphone-5.yml +4066 -5022
  72. data/spec/fixtures/detector/smartphone-6.yml +3455 -4621
  73. data/spec/fixtures/detector/smartphone-7.yml +3574 -4574
  74. data/spec/fixtures/detector/smartphone-8.yml +4617 -4704
  75. data/spec/fixtures/detector/smartphone-9.yml +4080 -5035
  76. data/spec/fixtures/detector/smartphone.yml +3244 -4234
  77. data/spec/fixtures/detector/tablet-1.yml +4652 -4492
  78. data/spec/fixtures/detector/tablet-2.yml +3515 -4434
  79. data/spec/fixtures/detector/tablet-3.yml +3418 -4351
  80. data/spec/fixtures/detector/tablet-4.yml +5149 -3200
  81. data/spec/fixtures/detector/tablet-5.yml +9273 -0
  82. data/spec/fixtures/detector/tablet-6.yml +4588 -0
  83. data/spec/fixtures/detector/tablet.yml +1621 -2613
  84. data/spec/fixtures/detector/tv-1.yml +2501 -0
  85. data/spec/fixtures/detector/tv.yml +7826 -3114
  86. data/spec/fixtures/detector/unknown.yml +370 -531
  87. data/spec/fixtures/detector/wearable.yml +863 -9
  88. data/spec/fixtures/parser/oss.yml +1350 -21
  89. data/spec/fixtures/parser/vendorfragments.yml +53 -53
  90. metadata +35 -5
@@ -5,6 +5,419 @@
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
+
8
421
  # Safe Exam Browser (https://safeexambrowser.org/)
9
422
  - regex: 'SEB/(?:(\d+[\.\d]+))?'
10
423
  name: 'Safe Exam Browser'
@@ -139,6 +552,8 @@
139
552
  - regex: 'AlohaLite(?:/(\d+[\.\d]+))?'
140
553
  name: 'Aloha Browser Lite'
141
554
  version: '$1'
555
+ engine:
556
+ default: 'Blink'
142
557
 
143
558
  # Tao Browser (https://browser.taobao.com/)
144
559
  - regex: 'TaoBrowser(?:/(\d+[\.\d]+))?'
@@ -263,12 +678,19 @@
263
678
  version: '$1'
264
679
 
265
680
  # Jio Browser (https://play.google.com/store/apps/details?id=com.jio.web)
266
- - regex: 'JioBrowser(?:/(\d+[\.\d]+))?'
681
+ - regex: 'Jio(?:Browser|Pages)(?:/(\d+[\.\d]+))?'
267
682
  name: 'Jio Browser'
268
683
  version: '$1'
269
684
  engine:
270
685
  default: 'Blink'
271
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
+
272
694
  # hola! Browser (https://hola.org/browser)
273
695
  - regex: 'Chrome/.+ Hola(?:/(\d+[\.\d]+))?'
274
696
  name: 'hola! Browser'
@@ -276,6 +698,27 @@
276
698
  engine:
277
699
  default: 'Blink'
278
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
+
279
722
  # Huawei Browser
280
723
  - regex: 'HuaweiBrowser(?:/(\d+[\.\d]+))?'
281
724
  name: 'Huawei Browser'
@@ -299,6 +742,11 @@
299
742
  default: 'Blink'
300
743
 
301
744
  # Qwant Mobile
745
+ - regex: 'QwantiOS/(\d+[\.\d]+)'
746
+ name: 'Qwant Mobile'
747
+ version: '$1'
748
+ engine:
749
+ default: 'WebKit'
302
750
  - regex: 'QwantMobile(?:/(\d+[\.\d]+))?'
303
751
  name: 'Qwant Mobile'
304
752
  version: '$1'
@@ -325,7 +773,7 @@
325
773
  default: 'Gecko'
326
774
 
327
775
  # Microsoft Edge (Spartan Edge)
328
- - regex: 'Edge[ /](\d+[\.\d]+)'
776
+ - regex: '(?<!motorola )Edge[ /](\d+[\.\d]+)'
329
777
  name: 'Microsoft Edge'
330
778
  version: '$1'
331
779
  engine:
@@ -400,6 +848,11 @@
400
848
  default: 'Gecko'
401
849
 
402
850
  #AlohaBrowser
851
+ - regex: 'Chrome/.+ AlohaBrowser(?:/(\d+[\.\d]+))?'
852
+ name: 'Aloha Browser'
853
+ version: '$1'
854
+ engine:
855
+ default: 'Blink'
403
856
  - regex: 'AlohaBrowser(?:/(\d+[\.\d]+))?'
404
857
  name: 'Aloha Browser'
405
858
  version: '$1'
@@ -442,7 +895,7 @@
442
895
 
443
896
 
444
897
  #Avant Browser
445
- - regex: 'Avant Browser'
898
+ - regex: 'Avant ?Browser'
446
899
  name: 'Avant Browser'
447
900
  version: ''
448
901
  engine:
@@ -460,7 +913,7 @@
460
913
  engine:
461
914
  default: 'WebKit'
462
915
  versions:
463
- 28: 'Blink'
916
+ '28': 'Blink'
464
917
 
465
918
  #Atomic Web Browser
466
919
  - regex: 'AtomicBrowser(?:/(\d+[\.\d]+))?'
@@ -532,7 +985,7 @@
532
985
  engine:
533
986
  default: 'Gecko'
534
987
  versions:
535
- 3: 'WebKit'
988
+ '3': 'WebKit'
536
989
 
537
990
  # Jig Browser Plus (https://jig.jp/)
538
991
  - regex: 'JigBrowserPlus/(?:(\d+[\.\d]+))?'
@@ -569,7 +1022,7 @@
569
1022
  version: '$1'
570
1023
 
571
1024
  # t-online.de Browser (https://www.t-online.de/computer/browser/)
572
- - regex: 'TO-Browser(?:/TOB(\d+[\.\d]+))?'
1025
+ - regex: '(?:TO-Browser/TOB|DT-Browser/DTB)(\d+[\.\d]+)'
573
1026
  name: 't-online.de Browser'
574
1027
  version: '$1'
575
1028
 
@@ -723,6 +1176,11 @@
723
1176
  name: 'Obigo'
724
1177
  version: ''
725
1178
 
1179
+ # UC Browser HD
1180
+ - regex: 'UCBrowserHD/(\d[\d\.]+)'
1181
+ name: 'UC Browser HD'
1182
+ version: '$1'
1183
+
726
1184
  #UC Browser Mini
727
1185
  - regex: 'UCMini(?:[ /]?(\d+[\.\d]+))?'
728
1186
  name: 'UC Browser Mini'
@@ -764,6 +1222,11 @@
764
1222
  version: '$1'
765
1223
  engine:
766
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'
767
1230
  - regex: 'OPT/(\d+[\.\d]+)'
768
1231
  name: 'Opera Touch'
769
1232
  version: '$1'
@@ -791,6 +1254,12 @@
791
1254
  version: '$1'
792
1255
  engine:
793
1256
  default: 'WebKit'
1257
+ - regex: 'Opera%20Mini/(\d+[\.\d]+) CFNetwork'
1258
+ name: 'Opera Mini iOS'
1259
+ version: '$1'
1260
+ engine:
1261
+ default: 'WebKit'
1262
+
794
1263
  - regex: 'Opera.+Edition Next.+Version/(\d+[\.\d]+)'
795
1264
  name: 'Opera Next'
796
1265
  version: '$1'
@@ -812,8 +1281,8 @@
812
1281
  default: ''
813
1282
  versions:
814
1283
  '3.5': 'Elektra'
815
- 7: 'Presto'
816
- 15: 'Blink'
1284
+ '7': 'Presto'
1285
+ '15': 'Blink'
817
1286
 
818
1287
  #Rekonq
819
1288
  - regex: 'rekonq(?:/(\d+[\.\d]+))?'
@@ -836,7 +1305,7 @@
836
1305
  engine:
837
1306
  default: 'WebKit'
838
1307
  versions:
839
- 28: 'Blink'
1308
+ '28': 'Blink'
840
1309
 
841
1310
  #ChromePlus
842
1311
  - regex: 'ChromePlus(?:/(\d+[\.\d]+))?'
@@ -862,15 +1331,12 @@
862
1331
  4: '' # multiple (KHTML or WebKit)
863
1332
 
864
1333
  #Baidu Browser
865
- - regex: '(?:baidubrowser|bdbrowser_i18n|bdbrowser)(?:[/ ](\d+[\.\d]*))?'
866
- name: 'Baidu Browser'
867
- version: '$1'
868
- - regex: 'FlyFlow(?:[/ ](\d+[\.\d]*))?'
1334
+ - regex: '(?:baidubrowser|bdbrowser(?:(?:hd)?_i18n)?|FlyFlow|BaiduHD)(?:[/ ](\d+[\.\d]*))?'
869
1335
  name: 'Baidu Browser'
870
1336
  version: '$1'
871
1337
 
872
1338
  #Baidu Spark
873
- - regex: '(?:(?:BD)?Spark|BIDUBrowser)[/ ](\d+[\.\d]*)'
1339
+ - regex: '(?:(?:BD)?Spark(?:Safe)?|BIDUBrowser)[/ ](\d+[\.\d]*)'
874
1340
  name: 'Baidu Spark'
875
1341
  version: '$1'
876
1342
 
@@ -880,17 +1346,15 @@
880
1346
  version: '$1'
881
1347
  engine:
882
1348
  default: 'Blink'
883
-
884
1349
  #Yandex Browser
885
1350
  - regex: 'YaBrowser(?:/(\d+[\.\d]*))(?: \((alpha|beta)\))?'
886
1351
  name: 'Yandex Browser'
887
1352
  version: '$1 $2'
888
1353
  engine:
889
1354
  default: 'Blink'
890
-
891
- # Yaani Browser
892
- - regex: 'YaaniBrowser(?:/(\d+[\.\d]+))?'
893
- name: 'Yaani Browser'
1355
+ # Yandex Browser + voice assistant alisa
1356
+ - regex: 'Ya(?:ndex)?SearchBrowser(?:/(\d+[\.\d]*))'
1357
+ name: 'Yandex Browser'
894
1358
  version: '$1'
895
1359
  engine:
896
1360
  default: 'Blink'
@@ -910,6 +1374,11 @@
910
1374
  default: 'Blink'
911
1375
 
912
1376
  #Midori
1377
+ - regex: 'Chrome.+Midori Browser/(\d+[\.\d]+)'
1378
+ name: 'Midori'
1379
+ version: '$1'
1380
+ engine:
1381
+ default: 'Blink'
913
1382
  - regex: 'Midori(?:/(\d+[\.\d]+))?'
914
1383
  name: 'Midori'
915
1384
  version: '$1'
@@ -917,12 +1386,19 @@
917
1386
  default: 'WebKit'
918
1387
 
919
1388
  #Mercury
920
- - regex: 'Mercury(?:/(\d+[\.\d]+))?'
1389
+ - regex: 'Mercury/(?:(\d+[\.\d]+))?'
921
1390
  name: 'Mercury'
922
1391
  version: '$1'
923
1392
 
924
1393
  #Maxthon
925
- - regex: '(?:Maxthon|MxBrowser)[ /](\d+[\.\d]+)'
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]+)'
926
1402
  name: 'Maxthon'
927
1403
  version: '$1'
928
1404
  engine:
@@ -988,6 +1464,11 @@
988
1464
  name: 'Sogou Explorer'
989
1465
  version: '$1'
990
1466
 
1467
+ # QQ Browser Lite
1468
+ - regex: 'QQBrowserLite/([\d\.]+)'
1469
+ name: 'QQ Browser Lite'
1470
+ version: '$1'
1471
+
991
1472
  # QQ Browser Mini
992
1473
  - regex: 'M?QQBrowser/Mini([\.\d]+)?'
993
1474
  name: 'QQ Browser Mini'
@@ -1013,8 +1494,8 @@
1013
1494
  # This browser (http://coccoc.vn/) is built on top of Chromium with
1014
1495
  # additional features for Vietnamese users. Its regex has to be placed
1015
1496
  # before generic Chrome regex, or Chrome regex will match first and
1016
- # the browser is mistaken as "Chrome".
1017
- - regex: 'coc_coc_browser(?:/(\d+[\.\d]+))?'
1497
+ # the browser is mistaken as 'Chrome".
1498
+ - regex: '(?:coc_coc_browser|coccocbrowser|CocCoc)(?:/(\d+[\.\d]+))?'
1018
1499
  name: 'Coc Coc'
1019
1500
  version: '$1'
1020
1501
  engine:
@@ -1034,7 +1515,10 @@
1034
1515
  version: '$1'
1035
1516
 
1036
1517
  # Super Fast Browser (https://play.google.com/store/apps/details?id=com.browser.tssomas)
1037
- - regex: '(?:SFBrowser|com.browser.tssomas)(?:/(\d+[\.\d]+))?'
1518
+ - regex: '(?:SFB(?:rowser)?)/(\d+[\.\d]+)'
1519
+ name: 'Super Fast Browser'
1520
+ version: '$1'
1521
+ - regex: 'com.browser.tssomas(?:/(\d+[\.\d]+))?'
1038
1522
  name: 'Super Fast Browser'
1039
1523
  version: '$1'
1040
1524
 
@@ -1073,27 +1557,33 @@
1073
1557
  name: 'UC Browser'
1074
1558
  version: ''
1075
1559
 
1076
- #Tenta Browser
1077
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'
1078
1568
  - regex: 'Tenta/(\d+[\.\d]+)'
1079
1569
  name: 'Tenta Browser'
1080
1570
  version: '$1'
1081
1571
  engine:
1082
- default: 'Webkit'
1572
+ default: 'WebKit'
1083
1573
 
1084
1574
  # Firefox Rocket
1085
1575
  - regex: 'Rocket/(\d+[\.\d]+)'
1086
1576
  name: 'Firefox Rocket'
1087
1577
  version: '$1'
1088
1578
  engine:
1089
- default: 'Webkit'
1579
+ default: 'WebKit'
1090
1580
 
1091
1581
  # Web Explorer
1092
1582
  - regex: 'Web Explorer/(\d+[\.\d]+).*Chrome'
1093
1583
  name: 'Web Explorer'
1094
1584
  version: '$1'
1095
1585
  engine:
1096
- default: 'Webkit'
1586
+ default: 'WebKit'
1097
1587
 
1098
1588
  # Seznam Browser
1099
1589
  - regex: 'SznProhlizec/(\d+[\.\d]+)'
@@ -1183,6 +1673,11 @@
1183
1673
  engine:
1184
1674
  default: 'WebKit'
1185
1675
 
1676
+ # GoBrowser
1677
+ - regex: 'GoBrowser(?:/(\d+[\.\d]+))?'
1678
+ name: 'GoBrowser'
1679
+ version: '$1'
1680
+
1186
1681
  #Nokia Browser
1187
1682
  - regex: '(?:NokiaBrowser|BrowserNG)(?:/(\d+[\.\d]+))?'
1188
1683
  name: 'Nokia Browser'
@@ -1201,7 +1696,7 @@
1201
1696
  version: ''
1202
1697
 
1203
1698
  #Sleipnir
1204
- - regex: 'Sleipnir(?:[ /](\d+[\.\d]+))?'
1699
+ - regex: 'Sleipnir(?:(?:%20Browser)?[ /](\d+[\.\d]+))?'
1205
1700
  name: 'Sleipnir'
1206
1701
  version: '$1'
1207
1702
  engine:
@@ -1224,12 +1719,42 @@
1224
1719
  engine:
1225
1720
  default: 'WebKit'
1226
1721
 
1722
+ # Monument Browser
1723
+ - regex: 'MonumentBrowser(?:/(\d+[\.\d]+))?'
1724
+ name: 'Monument Browser'
1725
+ version: '$1'
1726
+ engine:
1727
+ default: 'WebKit'
1728
+
1729
+ # Blue Browser
1227
1730
  - regex: 'BlueBrowser(?:/(\d+[\.\d]+))?'
1228
1731
  name: 'Blue Browser'
1229
1732
  version: '$1'
1230
1733
  engine:
1231
1734
  default: 'WebKit'
1232
1735
 
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'
1740
+ engine:
1741
+ default: 'WebKit'
1742
+
1743
+ - regex: 'OpenFin/(?:(\d+[\.\d]+))'
1744
+ name: 'OpenFin'
1745
+ version: '$1'
1746
+ engine:
1747
+ default: 'Blink'
1748
+
1749
+ # SuperBird
1750
+ - regex: 'SuperBird(?:/(\d+[\.\d]+))?'
1751
+ name: 'SuperBird'
1752
+ version: '$1'
1753
+ engine:
1754
+ default: 'WebKit'
1755
+ versions:
1756
+ 28: 'Blink'
1757
+
1233
1758
  # Chrome Webview
1234
1759
  - regex: 'Version/.* Chrome(?:/(\d+[\.\d]+))?'
1235
1760
  name: 'Chrome Webview'
@@ -1288,6 +1813,13 @@
1288
1813
  - regex: '(?:Tizen|SLP) Browser(?:/(\d+[\.\d]+))?'
1289
1814
  name: 'Tizen Browser'
1290
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'
1291
1823
 
1292
1824
  #Palm Blazer
1293
1825
  - regex: 'Blazer(?:/(\d+[\.\d]+))?'
@@ -1461,7 +1993,7 @@
1461
1993
  name: 'iCab Mobile'
1462
1994
  version: '$1'
1463
1995
  engine:
1464
- default: 'WebKit'
1996
+ default: 'WebKit'
1465
1997
 
1466
1998
  #iCab
1467
1999
  - regex: 'iCab(?:[ /](\d+[\.\d]+))?'
@@ -1479,6 +2011,13 @@
1479
2011
  engine:
1480
2012
  default: '' # multi engine
1481
2013
 
2014
+ # Crazy Browser
2015
+ - regex: 'Crazy Browser (\d+[\.\d]+)'
2016
+ name: 'Crazy Browser'
2017
+ version: '$1'
2018
+ engine:
2019
+ default: 'Trident'
2020
+
1482
2021
  #Internet Explorer
1483
2022
  - regex: 'IEMobile[ /](\d+[\.\d]+)'
1484
2023
  name: 'IE Mobile'
@@ -1492,22 +2031,22 @@
1492
2031
  default: 'Trident'
1493
2032
  - regex: 'MSIE.*Trident/4.0'
1494
2033
  name: 'Internet Explorer'
1495
- version: 8.0
2034
+ version: '8.0'
1496
2035
  engine:
1497
2036
  default: 'Trident'
1498
2037
  - regex: 'MSIE.*Trident/5.0'
1499
2038
  name: 'Internet Explorer'
1500
- version: 9.0
2039
+ version: '9.0'
1501
2040
  engine:
1502
2041
  default: 'Trident'
1503
2042
  - regex: 'MSIE.*Trident/6.0'
1504
2043
  name: 'Internet Explorer'
1505
- version: 10.0
2044
+ version: '10.0'
1506
2045
  engine:
1507
2046
  default: 'Trident'
1508
2047
  - regex: 'Trident/[78].0'
1509
2048
  name: 'Internet Explorer'
1510
- version: 11.0
2049
+ version: '11.0'
1511
2050
  engine:
1512
2051
  default: 'Trident'
1513
2052
  - regex: 'MSIE (\d+[\.\d]+)'
@@ -1592,16 +2131,11 @@
1592
2131
  name: 'Off By One'
1593
2132
  version: ''
1594
2133
 
1595
- #Oregano
1596
- - regex: 'Oregano(?:[ /](\d+[\.\d]+))?'
2134
+ #Oregano (https://oregan.net/)
2135
+ - regex: '(?:Oregano|OreganMediaBrowser)(?:[ /](\d+[\.\d]+))?'
1597
2136
  name: 'Oregano'
1598
2137
  version: '$1'
1599
2138
 
1600
- #Otter Browser
1601
- - regex: 'Otter(?:[ /](\d+[\.\d]+))?'
1602
- name: 'Otter Browser'
1603
- version: '$1'
1604
-
1605
2139
  #Polaris
1606
2140
  - regex: '(?:Polaris|Embider)(?:[/ ](\d+[\.\d]+))?'
1607
2141
  name: 'Polaris'
@@ -1612,13 +2146,6 @@
1612
2146
  name: 'SEMC-Browser'
1613
2147
  version: '$1'
1614
2148
 
1615
- #Seraphic Sraf
1616
- - regex: 'Sraf(?:[/ ](\d+[\.\d]+))?'
1617
- name: 'Seraphic Sraf'
1618
- version: '$1'
1619
- engine:
1620
- default: 'Blink'
1621
-
1622
2149
  #Shiira
1623
2150
  - regex: 'Shiira(?:[/ ](\d+[\.\d]+))?'
1624
2151
  name: 'Shiira'
@@ -1643,11 +2170,6 @@
1643
2170
  name: 'Sunrise'
1644
2171
  version: '$1'
1645
2172
 
1646
- #SuperBird
1647
- - regex: 'SuperBird(?:/(\d+[\.\d]+))?'
1648
- name: 'SuperBird'
1649
- version: '$1'
1650
-
1651
2173
  #Vision Mobile Browser
1652
2174
  - regex: 'Vision-Browser(?:/(\d+[\.\d]+))'
1653
2175
  name: 'Vision Mobile Browser'
@@ -1668,11 +2190,6 @@
1668
2190
  name: 'BlackBerry Browser'
1669
2191
  version: ''
1670
2192
 
1671
- #BriskBard
1672
- - regex: 'BriskBard(?:/(\d+[\.\d]+))?'
1673
- name: 'BriskBard'
1674
- version: '$1'
1675
-
1676
2193
  #Android Browser
1677
2194
  - regex: 'Android'
1678
2195
  name: 'Android Browser'
@@ -1685,11 +2202,6 @@
1685
2202
  name: 'Coast'
1686
2203
  version: '$1'
1687
2204
 
1688
- #Qutebrowser
1689
- - regex: 'qutebrowser(?:/(\d+[\.\d]+))?'
1690
- name: 'Qutebrowser'
1691
- version: '$1'
1692
-
1693
2205
  # surf (https://surf.suckless.org/)
1694
2206
  - regex: 'Surf(?:/(\d+[\.\d]+))?'
1695
2207
  name: 'surf'
@@ -1708,23 +2220,23 @@
1708
2220
  version: '$1'
1709
2221
  engine:
1710
2222
  default: 'WebKit'
1711
- - regex: '(?:iPod|iPhone|iPad)'
2223
+ - regex: '(?:iPod|(?<!Apple TV; U; CPU )iPhone|iPad)'
1712
2224
  name: 'Mobile Safari'
1713
2225
  version: ''
1714
2226
  engine:
1715
2227
  default: 'WebKit'
1716
- - regex: 'Version/(\d+[\.\d]+).*Safari/|Safari/\d+'
2228
+ - regex: 'Version/(\d+[\.\d]+).*Safari/|Safari/?\d+'
1717
2229
  name: 'Safari'
1718
2230
  version: '$1'
1719
2231
  engine:
1720
2232
  default: 'WebKit'
1721
-
1722
- #Dorado
1723
- - regex: 'Dorado WAP-Browser[/ ](\d+[\.\d]+)'
2233
+
2234
+ # Dorado
2235
+ - regex: 'Dorado WAP-Browser(?:[/ ](\d+[\.\d]+))?'
1724
2236
  name: 'Dorado'
1725
2237
  version: '$1'
1726
2238
 
1727
- #NetSurf
2239
+ # NetSurf
1728
2240
  - regex: 'NetSurf(?:/(\d+[\.\d]+))?'
1729
2241
  name: 'NetSurf'
1730
2242
  version: '$1'
@@ -1749,7 +2261,18 @@
1749
2261
  default: 'Gecko'
1750
2262
 
1751
2263
  # GOG Galaxy
1752
- - regex: 'GOGGalaxyClient/(?:(\d+[\.\d]+))?'
2264
+ - regex: 'GOGGalaxyClient/(\d+[\.\d]+)?'
1753
2265
  name: 'GOG Galaxy'
1754
2266
  version: '$1'
1755
-
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'