device_detector 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,7 @@
2
2
 
3
3
  class DeviceDetector
4
4
  class Browser
5
+ # https://github.com/matomo-org/device-detector/blob/75d88bbefb0182f9207c9f48dc39b1bc8c7cc43f/Parser/Client/Browser.php#L48-L680
5
6
  AVAILABLE_BROWSERS = {
6
7
  'V1' => 'Via',
7
8
  '1P' => 'Pure Mini Browser',
@@ -25,18 +26,21 @@ class DeviceDetector
25
26
  '1D' => 'Dragon Browser',
26
27
  '1E' => 'Easy Browser',
27
28
  'DW' => 'Dark Web Browser',
29
+ 'D6' => 'Dark Browser',
28
30
  '18' => '18+ Privacy Browser',
29
31
  '1B' => '115 Browser',
30
32
  'DM' => '1DM Browser',
31
33
  '1M' => '1DM+ Browser',
32
34
  '2B' => '2345 Browser',
33
- '3B' => '360 Browser',
35
+ '3B' => '360 Secure Browser',
34
36
  '36' => '360 Phone Browser',
35
37
  '7B' => '7654 Browser',
36
38
  'AA' => 'Avant Browser',
37
39
  'AB' => 'ABrowse',
40
+ '4A' => 'Acoo Browser',
38
41
  'BW' => 'AdBlock Browser',
39
42
  'A7' => 'Adult Browser',
43
+ 'A9' => 'Airfind Secure Browser',
40
44
  'AF' => 'ANT Fresco',
41
45
  'AG' => 'ANTGalio',
42
46
  'AL' => 'Aloha Browser',
@@ -47,9 +51,11 @@ class DeviceDetector
47
51
  'A5' => 'Amerigo',
48
52
  'AO' => 'Amigo',
49
53
  'AN' => 'Android Browser',
54
+ '3A' => 'AOL Explorer',
50
55
  'AE' => 'AOL Desktop',
51
56
  'AD' => 'AOL Shield',
52
57
  'A4' => 'AOL Shield Pro',
58
+ '2A' => 'Aplix',
53
59
  'A6' => 'AppBrowzer',
54
60
  'AP' => 'APUS Browser',
55
61
  'AR' => 'Arora',
@@ -57,6 +63,8 @@ class DeviceDetector
57
63
  'AV' => 'Amiga Voyager',
58
64
  'AW' => 'Amiga Aweb',
59
65
  'PN' => 'APN Browser',
66
+ '6A' => 'Arachne',
67
+ 'RA' => 'Arc',
60
68
  'AI' => 'Arvin',
61
69
  'AK' => 'Ask.com',
62
70
  'AU' => 'Asus Browser',
@@ -67,13 +75,17 @@ class DeviceDetector
67
75
  'VG' => 'AVG Secure Browser',
68
76
  'AC' => 'Avira Secure Browser',
69
77
  'A1' => 'AwoX',
78
+ '5B' => 'Basic Web Browser',
70
79
  'BA' => 'Beaker Browser',
71
80
  'BM' => 'Beamrise',
81
+ 'F7' => 'BF Browser',
72
82
  'BB' => 'BlackBerry Browser',
83
+ '6B' => 'Bluefy',
73
84
  'H1' => 'BrowseHere',
74
85
  'B8' => 'Browser Hup Pro',
75
86
  'BD' => 'Baidu Browser',
76
87
  'BS' => 'Baidu Spark',
88
+ 'BG' => 'Bang',
77
89
  'B9' => 'Bangla Browser',
78
90
  'BI' => 'Basilisk',
79
91
  'BV' => 'Belva Browser',
@@ -81,6 +93,7 @@ class DeviceDetector
81
93
  'BE' => 'Beonex',
82
94
  'B2' => 'Berry Browser',
83
95
  'BT' => 'Bitchute Browser',
96
+ '9B' => 'BizBrowser',
84
97
  'BH' => 'BlackHawk',
85
98
  'B0' => 'Bloket',
86
99
  'BJ' => 'Bunjalloo',
@@ -91,6 +104,7 @@ class DeviceDetector
91
104
  'BN' => 'Borealis Navigator',
92
105
  'BR' => 'Brave',
93
106
  'BK' => 'BriskBard',
107
+ 'K2' => 'BroKeep Browser',
94
108
  'B3' => 'Browspeed Browser',
95
109
  'BX' => 'BrowseX',
96
110
  'BZ' => 'Browzar',
@@ -98,17 +112,22 @@ class DeviceDetector
98
112
  '4B' => 'BrowsBit',
99
113
  'BY' => 'Biyubi',
100
114
  'BF' => 'Byffox',
101
- 'B4' => 'BF Browser',
115
+ 'B4' => 'BXE Browser',
102
116
  'CA' => 'Camino',
117
+ '5C' => 'Catalyst',
118
+ 'XP' => 'Catsxp',
119
+ '0C' => 'Cave Browser',
103
120
  'CL' => 'CCleaner',
104
121
  'C8' => 'CG Browser',
105
122
  'CJ' => 'ChanjetCloud',
106
123
  'C6' => 'Chedot',
107
124
  'C9' => 'Cherry Browser',
108
125
  'C0' => 'Centaury',
126
+ 'CQ' => 'Cliqz',
109
127
  'CC' => 'Coc Coc',
110
128
  'C4' => 'CoolBrowser',
111
129
  'C2' => 'Colibri',
130
+ '6C' => 'Columbus Browser',
112
131
  'CD' => 'Comodo Dragon',
113
132
  'C1' => 'Coast',
114
133
  'CX' => 'Charon',
@@ -121,7 +140,9 @@ class DeviceDetector
121
140
  'CK' => 'Conkeror',
122
141
  'CM' => 'Chrome Mobile',
123
142
  '3C' => 'Chowbo',
143
+ '7C' => 'Classilla',
124
144
  'CN' => 'CoolNovo',
145
+ '4C' => 'Colom Browser',
125
146
  'CO' => 'CometBird',
126
147
  '2C' => 'Comfort Browser',
127
148
  'CB' => 'COS Browser',
@@ -132,6 +153,7 @@ class DeviceDetector
132
153
  'C5' => 'Chromium GOST',
133
154
  'CY' => 'Cyberfox',
134
155
  'CS' => 'Cheshire',
156
+ 'RC' => 'Crow Browser',
135
157
  'CT' => 'Crusta',
136
158
  'CG' => 'Craving Explorer',
137
159
  'CZ' => 'Crazy Browser',
@@ -140,6 +162,8 @@ class DeviceDetector
140
162
  'YC' => 'CyBrowser',
141
163
  'DB' => 'dbrowser',
142
164
  'PD' => 'Peeps dBrowser',
165
+ 'DK' => 'Dark Web',
166
+ 'DP' => 'Dark Web Private',
143
167
  'D1' => 'Debuggable Browser',
144
168
  'DC' => 'Decentr',
145
169
  'DE' => 'Deepnet Explorer',
@@ -148,6 +172,9 @@ class DeviceDetector
148
172
  'DT' => 'Delta Browser',
149
173
  'D0' => 'Desi Browser',
150
174
  'DS' => 'DeskBrowse',
175
+ 'D3' => 'Dezor',
176
+ 'II' => 'Diigo Browser',
177
+ 'D2' => 'DoCoMo',
151
178
  'DF' => 'Dolphin',
152
179
  'DZ' => 'Dolphin Zero',
153
180
  'DO' => 'Dorado',
@@ -156,21 +183,27 @@ class DeviceDetector
156
183
  'DI' => 'Dillo',
157
184
  'DU' => 'DUC Browser',
158
185
  'DD' => 'DuckDuckGo Privacy Browser',
186
+ 'E1' => 'East Browser',
159
187
  'EC' => 'Ecosia',
160
188
  'EW' => 'Edge WebView',
189
+ 'EV' => 'Every Browser',
161
190
  'EI' => 'Epic',
162
191
  'EL' => 'Elinks',
163
192
  'EN' => 'EinkBro',
164
193
  'EB' => 'Element Browser',
165
194
  'EE' => 'Elements Browser',
195
+ 'EO' => 'Eolie',
166
196
  'EX' => 'Explore Browser',
167
197
  'EZ' => 'eZ Browser',
198
+ 'E2' => 'EudoraWeb',
168
199
  'EU' => 'EUI Browser',
169
200
  'EP' => 'GNOME Web',
170
201
  'G1' => 'G Browser',
171
202
  'ES' => 'Espial TV Browser',
203
+ 'FG' => 'fGet',
172
204
  'FA' => 'Falkon',
173
205
  'FX' => 'Faux Browser',
206
+ 'F8' => 'Fire Browser',
174
207
  'F4' => 'Fiery Browser',
175
208
  'F1' => 'Firefox Mobile iOS',
176
209
  'FB' => 'Firebird',
@@ -193,6 +226,8 @@ class DeviceDetector
193
226
  'FS' => 'Flast',
194
227
  'F5' => 'Flyperlink',
195
228
  'FU' => 'FreeU',
229
+ 'F6' => 'Freedom Browser',
230
+ 'FT' => 'Frost',
196
231
  'F3' => 'Frost+',
197
232
  'FI' => 'Fulldive',
198
233
  'GA' => 'Galeon',
@@ -200,10 +235,16 @@ class DeviceDetector
200
235
  'GH' => 'Ghostery Privacy Browser',
201
236
  'GI' => 'GinxDroid Browser',
202
237
  'GB' => 'Glass Browser',
238
+ 'GD' => 'Godzilla Browser',
239
+ 'G3' => 'Good Browser',
203
240
  'GE' => 'Google Earth',
204
241
  'GP' => 'Google Earth Pro',
205
242
  'GO' => 'GOG Galaxy',
206
243
  'GR' => 'GoBrowser',
244
+ 'GK' => 'GoKu',
245
+ 'G2' => 'GO Browser',
246
+ 'RN' => 'GreenBrowser',
247
+ 'HW' => 'Habit Browser',
207
248
  'HB' => 'Harman Browser',
208
249
  'HS' => 'HasBrowser',
209
250
  'HA' => 'Hawk Turbo Browser',
@@ -212,6 +253,8 @@ class DeviceDetector
212
253
  'HX' => 'Hexa Web Browser',
213
254
  'HI' => 'Hi Browser',
214
255
  'HO' => 'hola! Browser',
256
+ 'H4' => 'Holla Web Browser',
257
+ 'H5' => 'HotBrowser',
215
258
  'HJ' => 'HotJava',
216
259
  'HT' => 'HTC Browser',
217
260
  'HU' => 'Huawei Browser Mobile',
@@ -230,10 +273,16 @@ class DeviceDetector
230
273
  'IV' => 'Isivioo',
231
274
  'I8' => 'IVVI Browser',
232
275
  'IW' => 'Iceweasel',
276
+ '2I' => 'Impervious Browser',
277
+ 'N3' => 'Incognito Browser',
233
278
  'IN' => 'Inspect Browser',
279
+ 'I9' => 'Insta Browser',
234
280
  'IE' => 'Internet Explorer',
235
281
  'I7' => 'Internet Browser Secure',
282
+ '3I' => 'Intune Managed Browser',
236
283
  'I5' => 'Indian UC Mini Browser',
284
+ 'Z0' => 'InBrowser',
285
+ 'IG' => 'Involta Go',
237
286
  'IM' => 'IE Mobile',
238
287
  'IR' => 'Iron',
239
288
  'JB' => 'Japan Browser',
@@ -242,32 +291,41 @@ class DeviceDetector
242
291
  'JL' => 'Jelly',
243
292
  'JI' => 'Jig Browser',
244
293
  'JP' => 'Jig Browser Plus',
245
- 'JO' => 'Jio Browser',
246
- 'J1' => 'JioPages',
294
+ 'JO' => 'JioSphere',
295
+ 'JZ' => 'JUZI Browser',
247
296
  'KB' => 'K.Browser',
248
297
  'KF' => 'Keepsafe Browser',
249
298
  'KS' => 'Kids Safe Browser',
250
299
  'KI' => 'Kindle Browser',
251
300
  'KM' => 'K-meleon',
301
+ 'KJ' => 'K-Ninja',
252
302
  'KO' => 'Konqueror',
253
303
  'KP' => 'Kapiko',
304
+ 'KE' => 'Keyboard Browser',
254
305
  'KN' => 'Kinza',
306
+ 'K4' => 'Kitt',
255
307
  'KW' => 'Kiwi',
256
308
  'KD' => 'Kode Browser',
309
+ 'KU' => 'KUN',
257
310
  'KT' => 'KUTO Mini Browser',
258
311
  'KY' => 'Kylo',
259
312
  'KZ' => 'Kazehakase',
260
313
  'LB' => 'Cheetah Browser',
314
+ 'LD' => 'Ladybird',
261
315
  'LA' => 'Lagatos Browser',
316
+ 'GN' => 'Legan Browser',
262
317
  'LR' => 'Lexi Browser',
263
318
  'LV' => 'Lenovo Browser',
264
319
  'LF' => 'LieBaoFast',
265
320
  'LG' => 'LG Browser',
266
321
  'LH' => 'Light',
322
+ 'L4' => 'Lightning Browser Plus',
267
323
  'L1' => 'Lilo',
268
324
  'LI' => 'Links',
325
+ 'RI' => 'Liri Browser',
269
326
  'LC' => 'LogicUI TV Browser',
270
327
  'IF' => 'Lolifox',
328
+ 'L3' => 'Lotus',
271
329
  'LO' => 'Lovense Browser',
272
330
  'LT' => 'LT Browser',
273
331
  'LU' => 'LuaKit',
@@ -278,6 +336,8 @@ class DeviceDetector
278
336
  'LX' => 'Lynx',
279
337
  'L2' => 'Lynket Browser',
280
338
  'MD' => 'Mandarin',
339
+ 'M5' => 'MarsLab Web Browser',
340
+ 'M7' => 'MaxBrowser',
281
341
  'M1' => 'mCent',
282
342
  'MB' => 'MicroB',
283
343
  'MC' => 'NCSA Mosaic',
@@ -287,9 +347,11 @@ class DeviceDetector
287
347
  'MF' => 'Mobile Safari',
288
348
  'MI' => 'Midori',
289
349
  'M3' => 'Midori Lite',
350
+ 'M6' => 'MixerBox AI',
290
351
  'MO' => 'Mobicip',
291
352
  'MU' => 'MIUI Browser',
292
353
  'MS' => 'Mobile Silk',
354
+ 'MK' => 'Mogok Browser',
293
355
  'MN' => 'Minimo',
294
356
  'MT' => 'Mint Browser',
295
357
  'MX' => 'Maxthon',
@@ -300,16 +362,19 @@ class DeviceDetector
300
362
  'MY' => 'Mypal',
301
363
  'MR' => 'Monument Browser',
302
364
  'MW' => 'MAUI WAP Browser',
365
+ 'N7' => 'Naenara Browser',
303
366
  'NW' => 'Navigateur Web',
304
367
  'NK' => 'Naked Browser',
305
368
  'NA' => 'Naked Browser Pro',
306
369
  'NR' => 'NFS Browser',
370
+ 'N5' => 'Ninetails',
307
371
  'NB' => 'Nokia Browser',
308
372
  'NO' => 'Nokia OSS Browser',
309
373
  'NV' => 'Nokia Ovi Browser',
310
- 'N2' => 'Norton Secure Browser',
374
+ 'N2' => 'Norton Private Browser',
311
375
  'NX' => 'Nox Browser',
312
376
  'N1' => 'NOMone VR Browser',
377
+ 'N6' => 'NOOK Browser',
313
378
  'NE' => 'NetSurf',
314
379
  'NF' => 'NetFront',
315
380
  'NL' => 'NetFront Life',
@@ -317,6 +382,9 @@ class DeviceDetector
317
382
  'NS' => 'Netscape',
318
383
  'WR' => 'NextWord Browser',
319
384
  'NT' => 'NTENT Browser',
385
+ 'NU' => 'Nuanti Meta',
386
+ 'NI' => 'Nuviu',
387
+ 'O9' => 'Ocean Browser',
320
388
  'OC' => 'Oculus Browser',
321
389
  'O6' => 'Odd Browser',
322
390
  'O1' => 'Opera Mini iOS',
@@ -328,7 +396,9 @@ class DeviceDetector
328
396
  'OF' => 'Off By One',
329
397
  'O5' => 'Office Browser',
330
398
  'HH' => 'OhHai Browser',
399
+ 'OL' => 'OnBrowser Lite',
331
400
  'OE' => 'ONE Browser',
401
+ 'N4' => 'Onion Browser',
332
402
  'Y1' => 'Opera Crypto',
333
403
  'OX' => 'Opera GX',
334
404
  'OG' => 'Opera Neon',
@@ -338,6 +408,7 @@ class DeviceDetector
338
408
  'OP' => 'Opera',
339
409
  'ON' => 'Opera Next',
340
410
  'OO' => 'Opera Touch',
411
+ 'OU' => 'Orbitum',
341
412
  'OA' => 'Orca',
342
413
  'OS' => 'Ordissimo',
343
414
  'OR' => 'Oregano',
@@ -352,6 +423,7 @@ class DeviceDetector
352
423
  'O7' => 'Open TV Browser',
353
424
  'OW' => 'OmniWeb',
354
425
  'OT' => 'Otter Browser',
426
+ '4O' => 'Owl Browser',
355
427
  'PL' => 'Palm Blazer',
356
428
  'PM' => 'Pale Moon',
357
429
  'PY' => 'Polypane',
@@ -368,6 +440,8 @@ class DeviceDetector
368
440
  'PH' => 'Phantom Browser',
369
441
  'PX' => 'Phoenix',
370
442
  'PB' => 'Phoenix Browser',
443
+ '5P' => 'Photon',
444
+ 'P9' => 'PirateBrowser',
371
445
  'P8' => 'PICO Browser',
372
446
  'PF' => 'PlayFree Browser',
373
447
  'PK' => 'PocketBook Browser',
@@ -376,12 +450,20 @@ class DeviceDetector
376
450
  'LY' => 'PolyBrowser',
377
451
  'PI' => 'PrivacyWall',
378
452
  'P4' => 'Privacy Explorer Fast Safe',
453
+ 'P3' => 'Private Internet Browser',
454
+ 'P5' => 'Proxy Browser',
455
+ '7P' => 'Proxyium',
456
+ '6P' => 'Proxynet',
379
457
  'P2' => 'Pi Browser',
380
458
  'P0' => 'PronHub Browser',
381
459
  'PC' => 'PSI Secure Browser',
382
460
  'RW' => 'Reqwireless WebViewer',
383
461
  'PS' => 'Microsoft Edge',
384
462
  'QA' => 'Qazweb',
463
+ 'QI' => 'Qiyu',
464
+ 'QJ' => 'QJY TV Browser',
465
+ 'Q3' => 'Qmamu',
466
+ 'Q4' => 'Quick Search TV',
385
467
  'Q2' => 'QQ Browser Lite',
386
468
  'Q1' => 'QQ Browser Mini',
387
469
  'QQ' => 'QQ Browser',
@@ -391,6 +473,9 @@ class DeviceDetector
391
473
  'QZ' => 'QupZilla',
392
474
  'QM' => 'Qwant Mobile',
393
475
  'QW' => 'QtWebEngine',
476
+ 'R3' => 'Rakuten Browser',
477
+ 'R4' => 'Rakuten Web Search',
478
+ 'R2' => 'Raspbian Chromium',
394
479
  'RE' => 'Realme Browser',
395
480
  'RK' => 'Rekonq',
396
481
  'RM' => 'RockMelt',
@@ -398,6 +483,7 @@ class DeviceDetector
398
483
  'SB' => 'Samsung Browser',
399
484
  '3L' => 'Samsung Browser Lite',
400
485
  'SA' => 'Sailfish Browser',
486
+ 'R0' => 'SberBrowser',
401
487
  'S8' => 'Seewo Browser',
402
488
  'SC' => 'SEMC-Browser',
403
489
  'SE' => 'Sogou Explorer',
@@ -418,14 +504,18 @@ class DeviceDetector
418
504
  'S1' => 'SimpleBrowser',
419
505
  '3S' => 'SilverMob US',
420
506
  'SY' => 'Sizzy',
507
+ 'K3' => 'Skye',
421
508
  'SK' => 'Skyfire',
509
+ 'KL' => 'SkyLeap',
422
510
  'SS' => 'Seraphic Sraf',
423
511
  'KK' => 'SiteKiosk',
424
512
  'SL' => 'Sleipnir',
513
+ '8B' => 'SlimBoat',
425
514
  'S6' => 'Slimjet',
426
515
  'S7' => 'SP Browser',
427
516
  '9S' => 'Sony Small Browser',
428
517
  '8S' => 'Secure Private Browser',
518
+ 'X2' => 'SecureX',
429
519
  'T1' => 'Stampy Browser',
430
520
  '7S' => '7Star',
431
521
  'SQ' => 'Smart Browser',
@@ -437,14 +527,17 @@ class DeviceDetector
437
527
  'S2' => 'Splash',
438
528
  'SI' => 'Sputnik Browser',
439
529
  'SR' => 'Sunrise',
530
+ '0S' => 'Sunflower Browser',
440
531
  'SP' => 'SuperBird',
441
532
  'SU' => 'Super Fast Browser',
442
533
  '5S' => 'SuperFast Browser',
443
534
  'HR' => 'Sushi Browser',
444
535
  'S3' => 'surf',
445
536
  '4S' => 'Surf Browser',
537
+ 'RY' => 'Surfy Browser',
446
538
  'SG' => 'Stargon',
447
539
  'S0' => 'START Internet Browser',
540
+ '5A' => 'Stealth Browser',
448
541
  'S4' => 'Steam In-Game Overlay',
449
542
  'ST' => 'Streamy',
450
543
  'SX' => 'Swiftfox',
@@ -454,12 +547,17 @@ class DeviceDetector
454
547
  'TP' => 'T+Browser',
455
548
  'TR' => 'T-Browser',
456
549
  'TO' => 't-online.de Browser',
550
+ 'TT' => 'TalkTo',
457
551
  'TA' => 'Tao Browser',
552
+ 'T2' => 'tararia',
553
+ 'TH' => 'Thor',
554
+ '1T' => 'Tor Browser',
458
555
  'TF' => 'TenFourFox',
459
556
  'TB' => 'Tenta Browser',
460
557
  'TE' => 'Tesla Browser',
461
558
  'TZ' => 'Tizen Browser',
462
559
  'TI' => 'Tint Browser',
560
+ 'TL' => 'TrueLocation Browser',
463
561
  'TC' => 'TUC Mini Browser',
464
562
  'TU' => 'Tungsten',
465
563
  'TG' => 'ToGate',
@@ -477,25 +575,38 @@ class DeviceDetector
477
575
  'UE' => 'Ume Browser',
478
576
  'V0' => 'vBrowser',
479
577
  'VA' => 'Vast Browser',
578
+ 'V3' => 'VD Browser',
480
579
  'VE' => 'Venus Browser',
580
+ 'WD' => 'Vewd Browser',
581
+ 'V5' => 'VibeMate',
481
582
  'N0' => 'Nova Video Downloader Pro',
482
583
  'VS' => 'Viasat Browser',
483
584
  'VI' => 'Vivaldi',
484
585
  'VV' => 'vivo Browser',
485
586
  'V2' => 'Vivid Browser Mini',
486
587
  'VB' => 'Vision Mobile Browser',
588
+ 'V4' => 'Vertex Surf',
487
589
  'VM' => 'VMware AirWatch',
590
+ 'VK' => 'Vonkeror',
591
+ 'VU' => 'Vuhuv',
488
592
  'WI' => 'Wear Internet Browser',
489
593
  'WP' => 'Web Explorer',
490
594
  'W3' => 'Web Browser & Explorer',
595
+ 'W5' => 'Webian Shell',
596
+ 'W4' => 'WebDiscover',
491
597
  'WE' => 'WebPositive',
598
+ 'W6' => 'Weltweitimnetz Browser',
599
+ 'WX' => 'Wexond',
492
600
  'WF' => 'Waterfox',
493
601
  'WB' => 'Wave Browser',
494
602
  'WA' => 'Wavebox',
495
603
  'WH' => 'Whale Browser',
496
604
  'WO' => 'wOSBrowser',
605
+ '3W' => 'w3m',
497
606
  'WT' => 'WeTab Browser',
607
+ '1W' => 'World Browser',
498
608
  'WL' => 'Wolvic',
609
+ 'WY' => 'Wyzo',
499
610
  'YG' => 'YAGI',
500
611
  'YJ' => 'Yahoo! Japan Browser',
501
612
  'YA' => 'Yandex Browser',
@@ -504,6 +615,7 @@ class DeviceDetector
504
615
  'Y2' => 'Yo Browser',
505
616
  'YB' => 'Yolo Browser',
506
617
  'YO' => 'YouCare',
618
+ 'Y3' => 'YouBrowser',
507
619
  'YZ' => 'Yuzu Browser',
508
620
  'XR' => 'xBrowser',
509
621
  'XB' => 'X Browser Lite',
@@ -517,7 +629,8 @@ class DeviceDetector
517
629
  'XV' => 'Xvast',
518
630
  'ZE' => 'Zetakey',
519
631
  'ZV' => 'Zvu',
520
- 'ZI' => 'Zirco Browser'
632
+ 'ZI' => 'Zirco Browser',
633
+ 'ZR' => 'Zordo Browser'
521
634
 
522
635
  # detected browsers in older versions
523
636
  # 'IA' => 'Iceape', => pim
@@ -526,6 +639,7 @@ class DeviceDetector
526
639
 
527
640
  BROWSER_FULL_TO_SHORT = AVAILABLE_BROWSERS.invert.freeze
528
641
 
642
+ # https://github.com/matomo-org/device-detector/blob/75d88bbefb0182f9207c9f48dc39b1bc8c7cc43f/Parser/Client/Browser.php#L746-L768
529
643
  MOBILE_ONLY_BROWSERS = Set.new(
530
644
  %w[
531
645
  36 AH AI BL C1 C4 CB CW DB
@@ -543,10 +657,30 @@ class DeviceDetector
543
657
  DM 1M A7 XN XT XB W1 HT B7
544
658
  B9 T0 I8 O6 P7 O8 4B A8 P8
545
659
  1W EV Z0 I9 V4 H4 M5 0S 0C
546
- ZR D6 F6
660
+ ZR D6 F6 P3 FT A9 X2 NI FG
661
+ TH N3 GD O9 Q3 F7 K2 N4 P5
662
+ H5 V3 G2 BG OL II TL M6 Y3
663
+ M7 GN D3 IG HW 4O OU 5P KE
664
+ 5A TT 6P G3 7P VU F8 L4 DK
665
+ DP KL K4 N6 KU
547
666
  ]
548
667
  ).freeze
549
668
 
669
+ # https://github.com/matomo-org/device-detector/blob/75d88bbefb0182f9207c9f48dc39b1bc8c7cc43f/Parser/Client/Browser.php#L775-L783
670
+ NAME_TO_KNOWN_BROWSERS = {
671
+ 'Chrome' => ['Google Chrome'],
672
+ 'Chrome Webview' => ['Android WebView'],
673
+ 'DuckDuckGo Privacy Browser' => ['DuckDuckGo'],
674
+ 'Edge WebView' => ['Microsoft Edge WebView2'],
675
+ 'Microsoft Edge' => ['Edge'],
676
+ 'Norton Private Browser' => ['Norton Secure Browser'],
677
+ 'Vewd Browser' => ['Vewd Core']
678
+ }.freeze
679
+
680
+ KNOWN_BROWSER_TO_NAME = NAME_TO_KNOWN_BROWSERS.each_with_object({}) do |(name, browsers), h|
681
+ browsers.each { |b| h[b] = name }
682
+ end.freeze
683
+
550
684
  def self.mobile_only_browser?(name)
551
685
  return true if MOBILE_ONLY_BROWSERS.include?(name)
552
686