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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -1
- data/README.md +19 -5
- data/lib/device_detector/browser.rb +141 -7
- data/lib/device_detector/client_hint.rb +100 -32
- data/lib/device_detector/device.rb +188 -1
- data/lib/device_detector/os.rb +109 -7
- data/lib/device_detector/parser.rb +6 -5
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector.rb +56 -23
- data/regexes/bots.yml +1242 -213
- data/regexes/client/browser_engine.yml +11 -2
- data/regexes/client/browsers.yml +543 -102
- data/regexes/client/feed_readers.yml +1 -1
- data/regexes/client/hints/apps.yml +29 -3
- data/regexes/client/hints/browsers.yml +87 -5
- data/regexes/client/libraries.yml +107 -1
- data/regexes/client/mediaplayers.yml +15 -1
- data/regexes/client/mobile_apps.yml +413 -117
- data/regexes/client/pim.yml +36 -2
- data/regexes/device/car_browsers.yml +16 -0
- data/regexes/device/consoles.yml +18 -5
- data/regexes/device/mobiles.yml +4180 -1210
- data/regexes/device/notebooks.yml +14 -1
- data/regexes/device/portable_media_player.yml +7 -1
- data/regexes/device/shell_tv.yml +12 -0
- data/regexes/device/televisions.yml +409 -47
- data/regexes/oss.yml +661 -238
- metadata +3 -3
@@ -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' => '
|
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' => '
|
246
|
-
'
|
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
|
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
|
|