device_detector 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +4 -4
- data/lib/device_detector/browser.rb +6 -0
- data/lib/device_detector/client_hint.rb +22 -7
- data/lib/device_detector/device.rb +231 -1
- data/lib/device_detector/parser.rb +25 -3
- data/lib/device_detector/vendor_fragment.rb +25 -0
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector.rb +33 -2
- data/regexes/bots.yml +172 -10
- data/regexes/client/browsers.yml +35 -18
- data/regexes/client/hints/browsers.yml +5 -0
- data/regexes/client/libraries.yml +1 -1
- data/regexes/client/mobile_apps.yml +76 -2
- data/regexes/device/car_browsers.yml +1 -1
- data/regexes/device/consoles.yml +2 -2
- data/regexes/device/mobiles.yml +4333 -1090
- data/regexes/device/portable_media_player.yml +7 -1
- data/regexes/device/shell_tv.yml +5 -0
- data/regexes/oss.yml +71 -22
- metadata +4 -3
@@ -22,6 +22,7 @@ class DeviceDetector
|
|
22
22
|
|
23
23
|
DEVICE_BRANDS = {
|
24
24
|
'5E' => '2E',
|
25
|
+
'5IV' => '5IVE',
|
25
26
|
'2F' => 'F2 Mobile',
|
26
27
|
'3Q' => '3Q',
|
27
28
|
'J7' => '7 Mobile',
|
@@ -31,22 +32,27 @@ class DeviceDetector
|
|
31
32
|
'04' => '4ife',
|
32
33
|
'36' => '360',
|
33
34
|
'88' => '8848',
|
35
|
+
'10M' => '10moons',
|
34
36
|
'41' => 'A1',
|
35
37
|
'00' => 'Accent',
|
38
|
+
'ACC' => 'Accesstyle',
|
36
39
|
'AE' => 'Ace',
|
37
40
|
'AC' => 'Acer',
|
38
41
|
'3K' => 'Acteck',
|
39
42
|
'ACT' => 'actiMirror',
|
40
43
|
'A9' => 'Advan',
|
41
44
|
'AD' => 'Advance',
|
45
|
+
'ADV' => 'Advantage Air',
|
42
46
|
'76' => 'Adronix',
|
43
47
|
'AF' => 'AfriOne',
|
44
48
|
'FY' => 'AFFIX',
|
45
49
|
'A3' => 'AGM',
|
50
|
+
'AEE' => 'AEEZO',
|
46
51
|
'J0' => 'AG Mobile',
|
47
52
|
'AZ' => 'Ainol',
|
48
53
|
'AIR' => 'Airis',
|
49
54
|
'AI' => 'Airness',
|
55
|
+
'ARP' => 'Airpha',
|
50
56
|
'AT' => 'Airties',
|
51
57
|
'7U' => 'Airtel',
|
52
58
|
'U0' => 'AIRON',
|
@@ -60,6 +66,7 @@ class DeviceDetector
|
|
60
66
|
'AL' => 'Alcatel',
|
61
67
|
'20' => 'Alcor',
|
62
68
|
'XY' => 'Alps',
|
69
|
+
'XYA' => 'XY Auto',
|
63
70
|
'7L' => 'ALDI NORD',
|
64
71
|
'6L' => 'ALDI SÜD',
|
65
72
|
'3L' => 'Alfawise',
|
@@ -67,17 +74,20 @@ class DeviceDetector
|
|
67
74
|
'AA' => 'AllCall',
|
68
75
|
'3A' => 'AllDocube',
|
69
76
|
'A2' => 'Allview',
|
77
|
+
'ALI' => 'ALLINmobile',
|
70
78
|
'A7' => 'Allwinner',
|
71
79
|
'A1' => 'Altech UEC',
|
72
80
|
'66' => 'Altice',
|
73
81
|
'A5' => 'altron',
|
74
82
|
'KN' => 'Amazon',
|
83
|
+
'AMA' => 'AMA',
|
75
84
|
'AG' => 'AMGOO',
|
76
85
|
'9A' => 'Amigoo',
|
77
86
|
'AO' => 'Amoi',
|
78
87
|
'3J' => 'Amino',
|
79
88
|
'54' => 'AMCV',
|
80
89
|
'60' => 'Andowl',
|
90
|
+
'ANX' => 'ANXONIT',
|
81
91
|
'6J' => 'Angelcare',
|
82
92
|
'7A' => 'Anry',
|
83
93
|
'A0' => 'ANS',
|
@@ -105,6 +115,7 @@ class DeviceDetector
|
|
105
115
|
'1U' => 'Astro',
|
106
116
|
'A4' => 'Ask',
|
107
117
|
'A8' => 'Assistant',
|
118
|
+
'ASS' => 'ASSE',
|
108
119
|
'AU' => 'Asus',
|
109
120
|
'6A' => 'AT&T',
|
110
121
|
'ATH' => 'Athesi',
|
@@ -113,6 +124,7 @@ class DeviceDetector
|
|
113
124
|
'2A' => 'Atom',
|
114
125
|
'ATO' => 'ATOL',
|
115
126
|
'Z2' => 'Atvio',
|
127
|
+
'ATI' => 'Attila',
|
116
128
|
'AX' => 'Audiovox',
|
117
129
|
'AJ' => 'AURIS',
|
118
130
|
'YZ' => 'Autan',
|
@@ -128,13 +140,16 @@ class DeviceDetector
|
|
128
140
|
'WW' => 'Awow',
|
129
141
|
'XU' => 'AUX',
|
130
142
|
'BAC' => 'Backcell',
|
143
|
+
'BFF' => 'BAFF',
|
131
144
|
'BO' => 'BangOlufsen',
|
132
145
|
'BN' => 'Barnes & Noble',
|
146
|
+
'BAR' => 'BARTEC',
|
133
147
|
'BB' => 'BBK',
|
134
148
|
'0B' => 'BB Mobile',
|
135
149
|
'B6' => 'BDF',
|
136
150
|
'QD' => 'BDQ',
|
137
151
|
'8Z' => 'BDsharing',
|
152
|
+
'BEF' => 'Beafon',
|
138
153
|
'BE' => 'Becker',
|
139
154
|
'B5' => 'Beeline',
|
140
155
|
'B0' => 'Beelink',
|
@@ -144,6 +159,7 @@ class DeviceDetector
|
|
144
159
|
'BS' => 'BenQ-Siemens',
|
145
160
|
'4Y' => 'Benzo',
|
146
161
|
'XJ' => 'Benesse',
|
162
|
+
'BEN' => 'BenWee',
|
147
163
|
'YB' => 'Beista',
|
148
164
|
'BY' => 'BS Mobile',
|
149
165
|
'BZ' => 'Bezkam',
|
@@ -163,10 +179,12 @@ class DeviceDetector
|
|
163
179
|
'BK' => 'Bkav',
|
164
180
|
'5B' => 'Black Bear',
|
165
181
|
'BF' => 'Black Fox',
|
182
|
+
'BPC' => 'Blackpcs',
|
166
183
|
'B2' => 'Blackview',
|
167
184
|
'2Y' => 'b2m',
|
168
185
|
'BP' => 'Blaupunkt',
|
169
186
|
'BU' => 'Blu',
|
187
|
+
'BUS' => 'BluSlate',
|
170
188
|
'BUZ' => 'BuzzTV',
|
171
189
|
'B3' => 'Bluboo',
|
172
190
|
'2B' => 'Bluedot',
|
@@ -180,14 +198,19 @@ class DeviceDetector
|
|
180
198
|
'BLI' => 'BLISS',
|
181
199
|
'BM' => 'Bmobile',
|
182
200
|
'Y5' => 'BMAX',
|
201
|
+
'BMX' => 'BMXC',
|
183
202
|
'B9' => 'Bobarry',
|
184
203
|
'B4' => 'bogo',
|
204
|
+
'BOL' => 'Bolva',
|
185
205
|
'BW' => 'Boway',
|
186
206
|
'BOO' => 'Boost',
|
207
|
+
'BOK' => 'Bookeen',
|
187
208
|
'BX' => 'bq',
|
188
209
|
'8B' => 'Brandt',
|
189
210
|
'BRA' => 'BrandCode',
|
190
211
|
'BV' => 'Bravis',
|
212
|
+
'BRV' => 'BRAVE',
|
213
|
+
'BRG' => 'Brigmton',
|
191
214
|
'BR' => 'Brondi',
|
192
215
|
'XF' => 'BROR',
|
193
216
|
'BJ' => 'BrightSign',
|
@@ -207,6 +230,7 @@ class DeviceDetector
|
|
207
230
|
'BC' => 'Camfone',
|
208
231
|
'CJ' => 'Cavion',
|
209
232
|
'4D' => 'Canal Digital',
|
233
|
+
'CNG' => 'Canguro',
|
210
234
|
'CEI' => 'Ceibal',
|
211
235
|
'02' => 'Cell-C',
|
212
236
|
'CEL' => 'Cellacom',
|
@@ -223,6 +247,7 @@ class DeviceDetector
|
|
223
247
|
'U9' => 'China Telecom',
|
224
248
|
'CI' => 'Chico Mobile',
|
225
249
|
'CIP' => 'CipherLab',
|
250
|
+
'CIT' => 'Citycall',
|
226
251
|
'1C' => 'Chuwi',
|
227
252
|
'L8' => 'Clarmin',
|
228
253
|
'25' => 'Claresta',
|
@@ -246,6 +271,7 @@ class DeviceDetector
|
|
246
271
|
'3C' => 'Contixo',
|
247
272
|
'8C' => 'Connex',
|
248
273
|
'53' => 'Connectce',
|
274
|
+
'CON' => 'Conceptum',
|
249
275
|
'9C' => 'Colors',
|
250
276
|
'CO' => 'Coolpad',
|
251
277
|
'COO' => 'Coopers',
|
@@ -263,13 +289,16 @@ class DeviceDetector
|
|
263
289
|
'0C' => 'Crony',
|
264
290
|
'C1' => 'Crosscall',
|
265
291
|
'4W' => 'Crown',
|
292
|
+
'CTR' => 'Ctroniq',
|
266
293
|
'CU' => 'Cube',
|
267
294
|
'CB' => 'CUBOT',
|
268
295
|
'CV' => 'CVTE',
|
296
|
+
'CWO' => 'Cwowdefu',
|
269
297
|
'C4' => 'Cyrus',
|
270
298
|
'D5' => 'Daewoo',
|
271
299
|
'DA' => 'Danew',
|
272
300
|
'DAN' => 'Dany',
|
301
|
+
'DA1' => 'DangcapHD',
|
273
302
|
'DT' => 'Datang',
|
274
303
|
'D7' => 'Datawind',
|
275
304
|
'7D' => 'Datamini',
|
@@ -284,9 +313,12 @@ class DeviceDetector
|
|
284
313
|
'DL0' => 'DL',
|
285
314
|
'DE' => 'Denver',
|
286
315
|
'DS' => 'Desay',
|
316
|
+
'DSI' => 'DSIC',
|
287
317
|
'DW' => 'DeWalt',
|
288
318
|
'DX' => 'DEXP',
|
319
|
+
'DEY' => 'DEYI',
|
289
320
|
'DEN' => 'Denali',
|
321
|
+
'DEA' => 'DEALDIG',
|
290
322
|
'8D' => 'DF',
|
291
323
|
'DGT' => 'DGTEC',
|
292
324
|
'DG' => 'Dialog',
|
@@ -296,16 +328,19 @@ class DeviceDetector
|
|
296
328
|
'DDG' => 'Digidragon',
|
297
329
|
'DH' => 'Digihome',
|
298
330
|
'DD' => 'Digiland',
|
331
|
+
'DIJ' => 'DIJITSU',
|
299
332
|
'DIG' => 'Digit4G',
|
300
333
|
'DIC' => 'DIGICOM',
|
301
334
|
'Q0' => 'DIGIFORS',
|
302
335
|
'DQ' => 'DISH',
|
336
|
+
'DIS' => 'Disney',
|
303
337
|
'9D' => 'Ditecma',
|
304
338
|
'D2' => 'Digma',
|
305
339
|
'1D' => 'Diva',
|
306
340
|
'DIV' => 'DiverMax',
|
307
341
|
'D6' => 'Divisat',
|
308
342
|
'X6' => 'DIXON',
|
343
|
+
'DIM' => 'DIMO',
|
309
344
|
'5D' => 'DING DING',
|
310
345
|
'DIN' => 'Dinax',
|
311
346
|
'DM' => 'DMM',
|
@@ -318,21 +353,26 @@ class DeviceDetector
|
|
318
353
|
'DV' => 'Doov',
|
319
354
|
'DOM' => 'Dom.ru',
|
320
355
|
'DP' => 'Dopod',
|
356
|
+
'DPA' => 'DPA',
|
321
357
|
'JQ' => 'Doppio',
|
322
358
|
'DR' => 'Doro',
|
323
359
|
'ZD' => 'DORLAND',
|
324
360
|
'D8' => 'Droxio',
|
325
361
|
'DJ' => 'Dragon Touch',
|
362
|
+
'DRA' => 'DRAGON',
|
326
363
|
'DY' => 'Dreamgate',
|
327
364
|
'DRE' => 'DreamTab',
|
328
365
|
'DR1' => 'DreamStar',
|
329
366
|
'DTA' => 'Dtac',
|
330
367
|
'DU' => 'Dune HD',
|
331
368
|
'UD' => 'DUNNS Mobile',
|
369
|
+
'DUU' => 'Duubee',
|
370
|
+
'DUR' => 'Durabook',
|
332
371
|
'DTE' => 'D-Tech',
|
333
372
|
'DLI' => 'D-Link',
|
334
373
|
'ENO' => 'eNOVA',
|
335
374
|
'IN2' => 'iNOVA',
|
375
|
+
'INH' => 'Inhon',
|
336
376
|
'EB' => 'E-Boda',
|
337
377
|
'EJ' => 'Engel',
|
338
378
|
'ENA' => 'ENACOM',
|
@@ -358,6 +398,7 @@ class DeviceDetector
|
|
358
398
|
'UE' => 'Ematic',
|
359
399
|
'EMR' => 'Emporia',
|
360
400
|
'4K' => 'EKT',
|
401
|
+
'EKI' => 'EKINOX',
|
361
402
|
'7E' => 'ELARI',
|
362
403
|
'03' => 'Electroneum',
|
363
404
|
'Z8' => 'ELECTRONIA',
|
@@ -372,9 +413,12 @@ class DeviceDetector
|
|
372
413
|
'ED' => 'Energizer',
|
373
414
|
'E1' => 'Energy Sistem',
|
374
415
|
'3E' => 'Enot',
|
416
|
+
'ENT' => 'Entity',
|
375
417
|
'ENV' => 'Envizen',
|
376
418
|
'8E' => 'Epik One',
|
419
|
+
'EPK' => 'Epic',
|
377
420
|
'XP' => 'Epson',
|
421
|
+
'EPH' => 'Ephone',
|
378
422
|
'E7' => 'Ergo',
|
379
423
|
'EC' => 'Ericsson',
|
380
424
|
'05' => 'Erisson',
|
@@ -389,6 +433,8 @@ class DeviceDetector
|
|
389
433
|
'4J' => 'Eurocase',
|
390
434
|
'E9' => 'Evercoss',
|
391
435
|
'EV' => 'Evertek',
|
436
|
+
'EVE' => 'Everest',
|
437
|
+
'EV1' => 'Everex',
|
392
438
|
'E3' => 'Evolio',
|
393
439
|
'EO' => 'Evolveo',
|
394
440
|
'0Q' => 'Evoo',
|
@@ -404,7 +450,9 @@ class DeviceDetector
|
|
404
450
|
'EI' => 'Ezio',
|
405
451
|
'EZ' => 'Ezze',
|
406
452
|
'UF' => 'EYU',
|
453
|
+
'UE1' => 'UE',
|
407
454
|
'5F' => 'F150',
|
455
|
+
'FPS' => 'F+',
|
408
456
|
'F6' => 'Facebook',
|
409
457
|
'FAC' => 'Facetel',
|
410
458
|
'FA1' => 'Facime',
|
@@ -413,12 +461,14 @@ class DeviceDetector
|
|
413
461
|
'FAM' => 'Famous',
|
414
462
|
'17' => 'FarEasTone',
|
415
463
|
'9R' => 'FaRao Pro',
|
464
|
+
'FAR' => 'Farassoo',
|
416
465
|
'FB' => 'Fantec',
|
417
466
|
'FE' => 'Fengxiang',
|
418
467
|
'F7' => 'Fero',
|
419
468
|
'67' => 'FEONAL',
|
420
469
|
'FI' => 'FiGO',
|
421
470
|
'J9' => 'FiGi',
|
471
|
+
'FIG' => 'Figgers',
|
422
472
|
'F9' => 'FiiO',
|
423
473
|
'F1' => 'FinePower',
|
424
474
|
'FX' => 'Finlux',
|
@@ -427,6 +477,7 @@ class DeviceDetector
|
|
427
477
|
'FIL' => 'FILIX',
|
428
478
|
'FL' => 'Fly',
|
429
479
|
'QC' => 'FLYCAT',
|
480
|
+
'FLU' => 'Fluo',
|
430
481
|
'FN' => 'FNB',
|
431
482
|
'FD' => 'Fondi',
|
432
483
|
'0F' => 'Fourel',
|
@@ -437,8 +488,11 @@ class DeviceDetector
|
|
437
488
|
'FR' => 'Forstar',
|
438
489
|
'RF' => 'Fortis',
|
439
490
|
'FO' => 'Foxconn',
|
491
|
+
'FOD' => 'FoxxD',
|
440
492
|
'FJ' => 'FOODO',
|
493
|
+
'FOS' => 'FOSSiBOT',
|
441
494
|
'FT' => 'Freetel',
|
495
|
+
'FRU' => 'Frunsi',
|
442
496
|
'F4' => 'F&U',
|
443
497
|
'1F' => 'FMT',
|
444
498
|
'FPT' => 'FPT',
|
@@ -447,15 +501,22 @@ class DeviceDetector
|
|
447
501
|
'4F' => 'Funai',
|
448
502
|
'5J' => 'Fusion5',
|
449
503
|
'FF' => 'Future Mobile Technology',
|
504
|
+
'FFF' => 'FFF SmartLife',
|
450
505
|
'FW' => 'FNF',
|
506
|
+
'FXT' => 'Fxtec',
|
451
507
|
'GT' => 'G-TiDE',
|
452
508
|
'G9' => 'G-Touch',
|
509
|
+
'GFO' => 'Gfone',
|
510
|
+
'GTM' => 'GTMEDIA',
|
453
511
|
'0G' => 'GFive',
|
454
512
|
'GM' => 'Garmin-Asus',
|
455
513
|
'GA' => 'Gateway',
|
456
514
|
'99' => 'Galaxy Innovations',
|
515
|
+
'GA1' => 'Galactic',
|
516
|
+
'GAM' => 'Gamma',
|
457
517
|
'GAZ' => 'Gazer',
|
458
518
|
'GEA' => 'Geanee',
|
519
|
+
'GEN' => 'Geant',
|
459
520
|
'GD' => 'Gemini',
|
460
521
|
'GN' => 'General Mobile',
|
461
522
|
'2G' => 'Genesis',
|
@@ -472,6 +533,7 @@ class DeviceDetector
|
|
472
533
|
'GZ' => 'Ginzzu',
|
473
534
|
'1G' => 'Gini',
|
474
535
|
'GI' => 'Gionee',
|
536
|
+
'GIR' => 'GIRASOLE',
|
475
537
|
'G4' => 'Globex',
|
476
538
|
'38' => 'GLONYX',
|
477
539
|
'U6' => 'Glofiish',
|
@@ -487,40 +549,51 @@ class DeviceDetector
|
|
487
549
|
'GO' => 'Google',
|
488
550
|
'G0' => 'Goophone',
|
489
551
|
'6G' => 'Gooweel',
|
552
|
+
'GOO' => 'GOODTEL',
|
490
553
|
'8G' => 'Gplus',
|
491
554
|
'GR' => 'Gradiente',
|
492
555
|
'GP' => 'Grape',
|
493
556
|
'G6' => 'Gree',
|
557
|
+
'GRA' => 'Great Asia',
|
494
558
|
'3G' => 'Greentel',
|
559
|
+
'GRO' => 'Green Orange',
|
560
|
+
'GR1' => 'GroBerwert',
|
495
561
|
'GF' => 'Gretel',
|
496
562
|
'82' => 'Gresso',
|
497
563
|
'GU' => 'Grundig',
|
498
564
|
'GV' => 'Gtel',
|
565
|
+
'CUO' => 'Guophone',
|
499
566
|
'H13' => 'H133',
|
500
567
|
'9Z' => 'H96',
|
501
568
|
'HF' => 'Hafury',
|
502
569
|
'9F' => 'HAOVM',
|
570
|
+
'HAQ' => 'HAOQIN',
|
503
571
|
'HA' => 'Haier',
|
504
572
|
'XH' => 'Haipai',
|
505
573
|
'HAN' => 'Handheld',
|
506
574
|
'HE' => 'HannSpree',
|
507
575
|
'HK' => 'Hardkernel',
|
508
576
|
'HAR' => 'Harper',
|
577
|
+
'HA1' => 'Hartens',
|
509
578
|
'HS' => 'Hasee',
|
510
579
|
'8H' => 'Hamlet',
|
511
580
|
'HAM' => 'Hammer',
|
581
|
+
'HAT' => 'Hathway',
|
512
582
|
'H6' => 'Helio',
|
513
583
|
'HQ' => 'HERO',
|
514
584
|
'ZH' => 'Hezire',
|
515
585
|
'HEX' => 'HexaByte',
|
586
|
+
'HEW' => 'HeadWolf',
|
516
587
|
'HL' => 'Hi-Level',
|
517
588
|
'3H' => 'Hi',
|
589
|
+
'HIB' => 'Hiberg',
|
518
590
|
'HIH' => 'HiHi',
|
519
591
|
'HIK' => 'HiKing',
|
520
592
|
'H2' => 'Highscreen',
|
521
593
|
'Q1' => 'High Q',
|
522
594
|
'1H' => 'Hipstreet',
|
523
595
|
'HI' => 'Hisense',
|
596
|
+
'HIP' => 'HIPER',
|
524
597
|
'HC' => 'Hitachi',
|
525
598
|
'H8' => 'Hitech',
|
526
599
|
'W3' => 'HiMax',
|
@@ -555,6 +628,7 @@ class DeviceDetector
|
|
555
628
|
'HN' => 'Hyundai',
|
556
629
|
'7H' => 'Hyve',
|
557
630
|
'HYT' => 'Hytera',
|
631
|
+
'HYK' => 'Hykker',
|
558
632
|
'3I' => 'i-Cherry',
|
559
633
|
'IJ' => 'i-Joy',
|
560
634
|
'IM' => 'i-mate',
|
@@ -564,12 +638,15 @@ class DeviceDetector
|
|
564
638
|
'IB' => 'iBall',
|
565
639
|
'IY' => 'iBerry',
|
566
640
|
'7I' => 'iBrit',
|
641
|
+
'IBO' => 'ibowin',
|
567
642
|
'I2' => 'IconBIT',
|
568
643
|
'IC' => 'iDroid',
|
644
|
+
'IDI' => 'iDino',
|
569
645
|
'6Z' => 'iData',
|
570
646
|
'IG' => 'iGet',
|
571
647
|
'IH' => 'iHunt',
|
572
648
|
'IA' => 'Ikea',
|
649
|
+
'IYO' => 'iYou',
|
573
650
|
'8I' => 'IKU Mobile',
|
574
651
|
'2K' => 'IKI Mobile',
|
575
652
|
'IK' => 'iKoMo',
|
@@ -579,6 +656,7 @@ class DeviceDetector
|
|
579
656
|
'1I' => 'iMars',
|
580
657
|
'IMI' => 'iMI',
|
581
658
|
'U4' => 'iMan',
|
659
|
+
'ILE' => 'iLepo',
|
582
660
|
'IL' => 'IMO Mobile',
|
583
661
|
'IM1' => 'Imose',
|
584
662
|
'I3' => 'Impression',
|
@@ -619,6 +697,7 @@ class DeviceDetector
|
|
619
697
|
'IRE' => 'iReplace',
|
620
698
|
'IR' => 'iRola',
|
621
699
|
'IU' => 'iRulu',
|
700
|
+
'IRO' => 'iRobot',
|
622
701
|
'9I' => 'iSWAG',
|
623
702
|
'9J' => 'iSafe Mobile',
|
624
703
|
'IST' => 'iStar',
|
@@ -645,6 +724,7 @@ class DeviceDetector
|
|
645
724
|
'JR1' => 'JREN',
|
646
725
|
'JO' => 'Jolla',
|
647
726
|
'JP' => 'Joy',
|
727
|
+
'JOY' => 'JoySurf',
|
648
728
|
'UJ' => 'Juniper Systems',
|
649
729
|
'J5' => 'Just5',
|
650
730
|
'7J' => 'Jumper',
|
@@ -653,29 +733,35 @@ class DeviceDetector
|
|
653
733
|
'JXD' => 'JXD',
|
654
734
|
'JS' => 'Jesy',
|
655
735
|
'KT' => 'K-Touch',
|
736
|
+
'KLT' => 'K-Lite',
|
656
737
|
'K4' => 'Kaan',
|
657
738
|
'K7' => 'Kaiomy',
|
658
739
|
'KL' => 'Kalley',
|
659
740
|
'K6' => 'Kanji',
|
660
741
|
'KA' => 'Karbonn',
|
661
742
|
'K5' => 'KATV1',
|
743
|
+
'KAP' => 'Kapsys',
|
662
744
|
'K0' => 'Kata',
|
663
745
|
'KZ' => 'Kazam',
|
664
746
|
'9K' => 'Kazuna',
|
665
747
|
'KD' => 'KDDI',
|
748
|
+
'KHA' => 'Khadas',
|
666
749
|
'KS' => 'Kempler & Strauss',
|
667
750
|
'K3' => 'Keneksi',
|
668
751
|
'KX' => 'Kenxinda',
|
669
752
|
'KEN' => 'Kenbo',
|
753
|
+
'KZG' => 'KZG',
|
670
754
|
'K1' => 'Kiano',
|
671
755
|
'5W' => 'Kingbox',
|
672
756
|
'KI' => 'Kingsun',
|
757
|
+
'KIS' => 'Kinstone',
|
673
758
|
'KF' => 'KINGZONE',
|
674
759
|
'KIN' => 'Kingstar',
|
675
760
|
'46' => 'Kiowa',
|
676
761
|
'KV' => 'Kivi',
|
677
762
|
'64' => 'Kvant',
|
678
763
|
'0K' => 'Klipad',
|
764
|
+
'KNM' => 'KN Mobile',
|
679
765
|
'KC' => 'Kocaso',
|
680
766
|
'KK' => 'Kodak',
|
681
767
|
'KG' => 'Kogan',
|
@@ -692,8 +778,10 @@ class DeviceDetector
|
|
692
778
|
'KE' => 'Krüger&Matz',
|
693
779
|
'5K' => 'KREZ',
|
694
780
|
'WK' => 'KRIP',
|
781
|
+
'KRA' => 'Kraft',
|
695
782
|
'KH' => 'KT-Tech',
|
696
783
|
'Z6' => 'KUBO',
|
784
|
+
'KUG' => 'KuGou',
|
697
785
|
'K8' => 'Kuliao',
|
698
786
|
'8K' => 'Kult',
|
699
787
|
'KU' => 'Kumai',
|
@@ -708,10 +796,12 @@ class DeviceDetector
|
|
708
796
|
'LA1' => 'Lanin',
|
709
797
|
'LK' => 'Lark',
|
710
798
|
'Z3' => 'Laurus',
|
799
|
+
'LEC' => 'Lectrus',
|
711
800
|
'LV' => 'Lava',
|
712
801
|
'LC' => 'LCT',
|
713
802
|
'L5' => 'Leagoo',
|
714
803
|
'U3' => 'Leben',
|
804
|
+
'LEB' => 'LeBest',
|
715
805
|
'LD' => 'Ledstar',
|
716
806
|
'LEE' => 'Leelbox',
|
717
807
|
'L1' => 'LeEco',
|
@@ -731,8 +821,10 @@ class DeviceDetector
|
|
731
821
|
'LG' => 'LG',
|
732
822
|
'39' => 'Liberton',
|
733
823
|
'5L' => 'Linsar',
|
824
|
+
'LIN' => 'Linsay',
|
734
825
|
'LF' => 'Lifemaxx',
|
735
826
|
'LI' => 'Lingwin',
|
827
|
+
'LIM' => 'Lime',
|
736
828
|
'LJ' => 'L-Max',
|
737
829
|
'LW' => 'Linnex',
|
738
830
|
'JJ' => 'Listo',
|
@@ -744,6 +836,7 @@ class DeviceDetector
|
|
744
836
|
'LH' => 'Logic Instrument',
|
745
837
|
'LM' => 'Logicom',
|
746
838
|
'GY' => 'LOKMAT',
|
839
|
+
'LPX' => 'LPX-G',
|
747
840
|
'0L' => 'Lumigon',
|
748
841
|
'LU' => 'Lumus',
|
749
842
|
'LUM' => 'Lumitel',
|
@@ -768,10 +861,13 @@ class DeviceDetector
|
|
768
861
|
'J4' => 'Mara',
|
769
862
|
'MAR' => 'Marshal',
|
770
863
|
'8Y' => 'Massgo',
|
864
|
+
'MA1' => 'Mascom',
|
771
865
|
'2M' => 'Masstel',
|
772
866
|
'3X' => 'Mastertech',
|
867
|
+
'MAS' => 'Master-G',
|
773
868
|
'50' => 'Matrix',
|
774
869
|
'7M' => 'Maxcom',
|
870
|
+
'7M1' => 'Maxfone',
|
775
871
|
'ZM' => 'Maximus',
|
776
872
|
'6X' => 'Maxtron',
|
777
873
|
'0D' => 'MAXVI',
|
@@ -805,6 +901,7 @@ class DeviceDetector
|
|
805
901
|
'6Q' => 'Microtech',
|
806
902
|
'1X' => 'Minix',
|
807
903
|
'OM' => 'Mintt',
|
904
|
+
'MIN' => 'Mint',
|
808
905
|
'MO' => 'Mio',
|
809
906
|
'X7' => 'Mione',
|
810
907
|
'M7' => 'Miray',
|
@@ -814,20 +911,29 @@ class DeviceDetector
|
|
814
911
|
'M5' => 'MIXC',
|
815
912
|
'2D' => 'MIVO',
|
816
913
|
'1Z' => 'MiXzo',
|
914
|
+
'MIW' => 'MIWANG',
|
817
915
|
'ML' => 'MLLED',
|
818
916
|
'LS' => 'MLS',
|
917
|
+
'MLA' => 'MLAB',
|
819
918
|
'5H' => 'MMI',
|
820
919
|
'4M' => 'Mobicel',
|
821
920
|
'M6' => 'Mobiistar',
|
921
|
+
'MOK' => 'Mobile Kingdom',
|
822
922
|
'MH' => 'Mobiola',
|
823
923
|
'MB' => 'Mobistel',
|
824
924
|
'ID' => 'MobiIoT',
|
825
925
|
'6W' => 'MobiWire',
|
826
926
|
'9M' => 'Mobo',
|
927
|
+
'MOB' => 'Mobell',
|
827
928
|
'M4' => 'Modecom',
|
828
929
|
'MF' => 'Mofut',
|
829
930
|
'MR' => 'Motorola',
|
931
|
+
'MIV' => 'Motiv',
|
830
932
|
'MV' => 'Movic',
|
933
|
+
'MOV' => 'Movitel',
|
934
|
+
'MO1' => 'MOVISUN',
|
935
|
+
'MOS' => 'Mosimosi',
|
936
|
+
'MOX' => 'Moxee',
|
831
937
|
'MM' => 'Mpman',
|
832
938
|
'MZ' => 'MSI',
|
833
939
|
'3R' => 'MStar',
|
@@ -836,6 +942,7 @@ class DeviceDetector
|
|
836
942
|
'72' => 'M-Tech',
|
837
943
|
'9H' => 'M-Horse',
|
838
944
|
'1R' => 'Multilaser',
|
945
|
+
'MPS' => 'MultiPOS',
|
839
946
|
'1M' => 'MYFON',
|
840
947
|
'MY' => 'MyPhone',
|
841
948
|
'51' => 'Myros',
|
@@ -846,6 +953,8 @@ class DeviceDetector
|
|
846
953
|
'J3' => 'Mymaga',
|
847
954
|
'MYM' => 'MyMobile',
|
848
955
|
'07' => 'MyGica',
|
956
|
+
'MYG' => 'MygPad',
|
957
|
+
'MWA' => 'MwalimuPlus',
|
849
958
|
'NEO' => 'neoCore',
|
850
959
|
'08' => 'Nabi',
|
851
960
|
'N7' => 'National',
|
@@ -856,15 +965,20 @@ class DeviceDetector
|
|
856
965
|
'7R' => 'NavRoad',
|
857
966
|
'NAS' => 'NASCO',
|
858
967
|
'NP' => 'Naomi Phone',
|
968
|
+
'NAN' => 'Nanho',
|
859
969
|
'NE' => 'NEC',
|
970
|
+
'NDP' => 'Nedaphone',
|
860
971
|
'8N' => 'Necnot',
|
861
972
|
'NF' => 'Neffos',
|
862
973
|
'9X' => 'Neo',
|
974
|
+
'NEK' => 'NEKO',
|
863
975
|
'1N' => 'Neomi',
|
864
976
|
'7Q' => 'Neon IQ',
|
865
977
|
'8F' => 'Neolix',
|
866
978
|
'NA' => 'Netgear',
|
979
|
+
'NEM' => 'Netmak',
|
867
980
|
'NU' => 'NeuImage',
|
981
|
+
'NEU' => 'NeuTab',
|
868
982
|
'NW' => 'Newgen',
|
869
983
|
'N9' => 'Newland',
|
870
984
|
'0N' => 'Newman',
|
@@ -884,6 +998,7 @@ class DeviceDetector
|
|
884
998
|
'NJO' => 'nJoy',
|
885
999
|
'NG' => 'NGM',
|
886
1000
|
'NZ' => 'NG Optics',
|
1001
|
+
'NZP' => 'NGpon',
|
887
1002
|
'NN' => 'Nikon',
|
888
1003
|
'NI' => 'Nintendo',
|
889
1004
|
'NIN' => 'NINETEC',
|
@@ -891,6 +1006,7 @@ class DeviceDetector
|
|
891
1006
|
'N1' => 'Noain',
|
892
1007
|
'N6' => 'Nobby',
|
893
1008
|
'NOV' => 'Novey',
|
1009
|
+
'NO1' => 'NOVO',
|
894
1010
|
'57' => 'Nubia',
|
895
1011
|
'JN' => 'NOBUX',
|
896
1012
|
'NB' => 'Noblex',
|
@@ -905,9 +1021,11 @@ class DeviceDetector
|
|
905
1021
|
'5N' => 'Nos',
|
906
1022
|
'NO' => 'Nous',
|
907
1023
|
'NQ' => 'Novex',
|
1024
|
+
'NOD' => 'noDROPOUT',
|
908
1025
|
'NJ' => 'NuAns',
|
909
1026
|
'NL' => 'NUU Mobile',
|
910
1027
|
'N0' => 'Nuvo',
|
1028
|
+
'NUV' => 'NuVision',
|
911
1029
|
'NV' => 'Nvidia',
|
912
1030
|
'NY' => 'NYX Mobile',
|
913
1031
|
'O3' => 'O+',
|
@@ -915,15 +1033,23 @@ class DeviceDetector
|
|
915
1033
|
'O7' => 'Oale',
|
916
1034
|
'OC' => 'OASYS',
|
917
1035
|
'OB' => 'Obi',
|
1036
|
+
'OBR' => 'Ober',
|
918
1037
|
'OQ' => 'Meta',
|
919
1038
|
'O1' => 'Odys',
|
920
1039
|
'ODP' => 'Odotpad',
|
921
1040
|
'O9' => 'Ok',
|
922
1041
|
'OA' => 'Okapia',
|
1042
|
+
'OKI' => 'Oking',
|
1043
|
+
'OLA' => 'Olax',
|
1044
|
+
'OLK' => 'Olkya',
|
1045
|
+
'OLY' => 'Olympia',
|
1046
|
+
'OLT' => 'OLTO',
|
923
1047
|
'OJ' => 'Ookee',
|
924
1048
|
'OD' => 'Onda',
|
925
1049
|
'ON' => 'OnePlus',
|
926
1050
|
'ONC' => 'OneClick',
|
1051
|
+
'ONL' => 'OneLern',
|
1052
|
+
'OAN' => 'Oangcc',
|
927
1053
|
'OX' => 'Onix',
|
928
1054
|
'3O' => 'ONYX BOOX',
|
929
1055
|
'O4' => 'ONN',
|
@@ -934,6 +1060,7 @@ class DeviceDetector
|
|
934
1060
|
'OP' => 'OPPO',
|
935
1061
|
'OO' => 'Opsson',
|
936
1062
|
'OPT' => 'Optoma',
|
1063
|
+
'OPH' => 'Ophone',
|
937
1064
|
'OR' => 'Orange',
|
938
1065
|
'O5' => 'Orbic',
|
939
1066
|
'Y6' => 'Orbita',
|
@@ -952,6 +1079,7 @@ class DeviceDetector
|
|
952
1079
|
'OV' => 'Overmax',
|
953
1080
|
'30' => 'Ovvi',
|
954
1081
|
'O2' => 'Owwo',
|
1082
|
+
'OSC' => 'OSCAL',
|
955
1083
|
'OY' => 'Oysters',
|
956
1084
|
'QF' => 'OYSIN',
|
957
1085
|
'O6' => 'Oyyu',
|
@@ -963,11 +1091,15 @@ class DeviceDetector
|
|
963
1091
|
'PN' => 'Panacom',
|
964
1092
|
'PA' => 'Panasonic',
|
965
1093
|
'PT' => 'Pantech',
|
1094
|
+
'PAN' => 'Pano',
|
1095
|
+
'PA1' => 'Panoramic',
|
1096
|
+
'PLT' => 'Platoon',
|
966
1097
|
'94' => 'Packard Bell',
|
967
1098
|
'H9' => 'Parrot Mobile',
|
968
1099
|
'PAR' => 'Partner Mobile',
|
969
1100
|
'PAP' => 'PAPYRE',
|
970
1101
|
'PB' => 'PCBOX',
|
1102
|
+
'PCS' => 'PC Smart',
|
971
1103
|
'PC' => 'PCD',
|
972
1104
|
'PD' => 'PCD Argentina',
|
973
1105
|
'PE' => 'PEAQ',
|
@@ -1011,8 +1143,10 @@ class DeviceDetector
|
|
1011
1143
|
'3F' => 'Porsche',
|
1012
1144
|
'P3' => 'PPTV',
|
1013
1145
|
'FP' => 'Premio',
|
1146
|
+
'PR1' => 'Premier',
|
1014
1147
|
'PR' => 'Prestigio',
|
1015
1148
|
'P9' => 'Primepad',
|
1149
|
+
'PRM' => 'PRIME',
|
1016
1150
|
'6P' => 'Primux',
|
1017
1151
|
'2P' => 'Prixton',
|
1018
1152
|
'PRI' => 'Pritom',
|
@@ -1025,6 +1159,7 @@ class DeviceDetector
|
|
1025
1159
|
'7O' => 'Polestar',
|
1026
1160
|
'PU' => 'PULID',
|
1027
1161
|
'UP' => 'Purism',
|
1162
|
+
'PUN' => 'Punos',
|
1028
1163
|
'QFX' => 'QFX',
|
1029
1164
|
'Q7' => 'Q-Box',
|
1030
1165
|
'QH' => 'Q-Touch',
|
@@ -1035,6 +1170,7 @@ class DeviceDetector
|
|
1035
1170
|
'Q9' => 'QTECH',
|
1036
1171
|
'QA' => 'Quantum',
|
1037
1172
|
'QUE' => 'Quest',
|
1173
|
+
'QUA' => 'Quatro',
|
1038
1174
|
'QU' => 'Quechua',
|
1039
1175
|
'QUI' => 'Quipus',
|
1040
1176
|
'QO' => 'Qumo',
|
@@ -1051,16 +1187,19 @@ class DeviceDetector
|
|
1051
1187
|
'RAY' => 'Raylandz',
|
1052
1188
|
'RC' => 'RCA Tablets',
|
1053
1189
|
'2R' => 'Reach',
|
1190
|
+
'REL' => 'RelNAT',
|
1054
1191
|
'RB' => 'Readboy',
|
1055
1192
|
'RE' => 'Realme',
|
1056
1193
|
'RE1' => 'Redbean',
|
1057
1194
|
'R8' => 'RED',
|
1058
1195
|
'REW' => 'Redway',
|
1059
1196
|
'6F' => 'Redfox',
|
1197
|
+
'RE2' => 'RedLine',
|
1060
1198
|
'RD' => 'Reeder',
|
1061
1199
|
'Z9' => 'REGAL',
|
1062
1200
|
'RH' => 'Remdun',
|
1063
1201
|
'RP' => 'Revo',
|
1202
|
+
'REV' => 'Revomovil',
|
1064
1203
|
'8R' => 'Retroid Pocket',
|
1065
1204
|
'RIC' => 'Ricoh',
|
1066
1205
|
'RI' => 'Rikomagic',
|
@@ -1073,7 +1212,9 @@ class DeviceDetector
|
|
1073
1212
|
'RIZ' => 'Rizzen',
|
1074
1213
|
'RR' => 'Roadrover',
|
1075
1214
|
'QR' => 'ROADMAX',
|
1215
|
+
'ROC' => 'Roam Cat',
|
1076
1216
|
'R1' => 'Rokit',
|
1217
|
+
'ROI' => 'ROiK',
|
1077
1218
|
'RK' => 'Roku',
|
1078
1219
|
'R3' => 'Rombica',
|
1079
1220
|
'R5' => 'Ross&Moor',
|
@@ -1083,23 +1224,32 @@ class DeviceDetector
|
|
1083
1224
|
'RJ' => 'Royole',
|
1084
1225
|
'RT' => 'RT Project',
|
1085
1226
|
'RG' => 'RugGear',
|
1227
|
+
'RUG' => 'Ruggex',
|
1228
|
+
'RUT' => 'RuggeTech',
|
1086
1229
|
'RU' => 'Runbo',
|
1230
|
+
'RUP' => 'Rupa',
|
1087
1231
|
'RL' => 'Ruio',
|
1088
1232
|
'RY' => 'Ryte',
|
1089
1233
|
'X5' => 'Saba',
|
1090
1234
|
'8L' => 'S-TELL',
|
1091
1235
|
'4O' => 'S2Tel',
|
1092
1236
|
'89' => 'Seatel',
|
1237
|
+
'SEW' => 'Sewoo',
|
1238
|
+
'SE1' => 'SEEWO',
|
1093
1239
|
'Y7' => 'Saiet',
|
1094
1240
|
'X1' => 'Safaricom',
|
1095
1241
|
'SG' => 'Sagem',
|
1096
1242
|
'4L' => 'Salora',
|
1097
1243
|
'SA' => 'Samsung',
|
1244
|
+
'SAT' => 'Samtech',
|
1245
|
+
'SAM' => 'Samtron',
|
1098
1246
|
'SNA' => 'SNAMI',
|
1099
1247
|
'S0' => 'Sanei',
|
1100
1248
|
'12' => 'Sansui',
|
1249
|
+
'SAK' => 'Sankey',
|
1101
1250
|
'SQ' => 'Santin',
|
1102
1251
|
'SY' => 'Sanyo',
|
1252
|
+
'SAN' => 'SANY',
|
1103
1253
|
'S9' => 'Savio',
|
1104
1254
|
'Y4' => 'SCBC',
|
1105
1255
|
'CZ' => 'Schneider',
|
@@ -1118,8 +1268,10 @@ class DeviceDetector
|
|
1118
1268
|
'S6' => 'Senseit',
|
1119
1269
|
'EW' => 'Senwa',
|
1120
1270
|
'24' => 'Seeken',
|
1271
|
+
'SEB' => 'SEBBE',
|
1121
1272
|
'61' => 'Seuic',
|
1122
1273
|
'SX' => 'SFR',
|
1274
|
+
'SGI' => 'SGIN',
|
1123
1275
|
'SH' => 'Sharp',
|
1124
1276
|
'JU' => 'Shanling',
|
1125
1277
|
'7S' => 'Shift Phones',
|
@@ -1140,6 +1292,9 @@ class DeviceDetector
|
|
1140
1292
|
'GK' => 'SKG',
|
1141
1293
|
'SW' => 'Sky',
|
1142
1294
|
'SK' => 'Skyworth',
|
1295
|
+
'SKY' => 'Skyline',
|
1296
|
+
'SK1' => 'SkyStream',
|
1297
|
+
'SKK' => 'SKK Mobile',
|
1143
1298
|
'14' => 'Smadl',
|
1144
1299
|
'19' => 'Smailo',
|
1145
1300
|
'SR' => 'Smart Electronic',
|
@@ -1148,15 +1303,18 @@ class DeviceDetector
|
|
1148
1303
|
'47' => 'SmartBook',
|
1149
1304
|
'3B' => 'Smartab',
|
1150
1305
|
'80' => 'SMARTEC',
|
1306
|
+
'SM1' => 'Smartex',
|
1151
1307
|
'SC' => 'Smartfren',
|
1152
1308
|
'S7' => 'Smartisan',
|
1153
1309
|
'JR' => 'Sylvania',
|
1310
|
+
'SYH' => 'SYH',
|
1154
1311
|
'3Y' => 'Smarty',
|
1155
1312
|
'HH' => 'Smooth Mobile',
|
1156
1313
|
'1Q' => 'Smotreshka',
|
1157
1314
|
'SF' => 'Softbank',
|
1158
1315
|
'9L' => 'SOLE',
|
1159
1316
|
'JL' => 'SOLO',
|
1317
|
+
'SOS' => 'SOSH',
|
1160
1318
|
'SOD' => 'Soda',
|
1161
1319
|
'16' => 'Solone',
|
1162
1320
|
'OI' => 'Sonim',
|
@@ -1166,6 +1324,7 @@ class DeviceDetector
|
|
1166
1324
|
'8S' => 'Soyes',
|
1167
1325
|
'77' => 'SONOS',
|
1168
1326
|
'68' => 'Soho Style',
|
1327
|
+
'SOB' => 'SobieTech',
|
1169
1328
|
'PK' => 'Spark',
|
1170
1329
|
'FS' => 'SPC',
|
1171
1330
|
'6S' => 'Spectrum',
|
@@ -1188,6 +1347,7 @@ class DeviceDetector
|
|
1188
1347
|
'96' => 'STRONG',
|
1189
1348
|
'69' => 'Stylo',
|
1190
1349
|
'9S' => 'Sugar',
|
1350
|
+
'SUR' => 'Surge',
|
1191
1351
|
'06' => 'Subor',
|
1192
1352
|
'SZ' => 'Sumvision',
|
1193
1353
|
'0H' => 'Sunstech',
|
@@ -1195,15 +1355,21 @@ class DeviceDetector
|
|
1195
1355
|
'5S' => 'Sunvell',
|
1196
1356
|
'5Y' => 'Sunny',
|
1197
1357
|
'W8' => 'SUNWIND',
|
1358
|
+
'SBX' => 'SuperBOX',
|
1198
1359
|
'SU' => 'SuperSonic',
|
1199
1360
|
'79' => 'SuperTab',
|
1200
1361
|
'S5' => 'Supra',
|
1362
|
+
'SUP' => 'Supraim',
|
1201
1363
|
'ZS' => 'Suzuki',
|
1202
1364
|
'2J' => 'Sunmi',
|
1365
|
+
'SUN' => 'Sunmax',
|
1203
1366
|
'0W' => 'Swipe',
|
1367
|
+
'SWI' => 'Switel',
|
1204
1368
|
'SS' => 'SWISSMOBILITY',
|
1205
1369
|
'1W' => 'Swisstone',
|
1206
1370
|
'W7' => 'SWTV',
|
1371
|
+
'SSK' => 'SSKY',
|
1372
|
+
'SYC' => 'Syco',
|
1207
1373
|
'SM' => 'Symphony',
|
1208
1374
|
'4S' => 'Syrox',
|
1209
1375
|
'TM' => 'T-Mobile',
|
@@ -1221,13 +1387,16 @@ class DeviceDetector
|
|
1221
1387
|
'H4' => 'Technicolor',
|
1222
1388
|
'TEA' => 'TeachTouch',
|
1223
1389
|
'Z5' => 'Technika',
|
1390
|
+
'TE1' => 'TechSmart',
|
1224
1391
|
'TX' => 'TechniSat',
|
1225
1392
|
'TT' => 'TechnoTrend',
|
1226
1393
|
'TP' => 'TechPad',
|
1394
|
+
'TPS' => 'TPS',
|
1227
1395
|
'9E' => 'Techwood',
|
1228
1396
|
'7F' => 'Technopc',
|
1229
1397
|
'T7' => 'Teclast',
|
1230
1398
|
'TB' => 'Tecno Mobile',
|
1399
|
+
'TEC' => 'TecToy',
|
1231
1400
|
'91' => 'TEENO',
|
1232
1401
|
'2L' => 'Tele2',
|
1233
1402
|
'TL' => 'Telefunken',
|
@@ -1237,10 +1406,12 @@ class DeviceDetector
|
|
1237
1406
|
'65' => 'Telia',
|
1238
1407
|
'TEL' => 'Telma',
|
1239
1408
|
'PW' => 'Telpo',
|
1409
|
+
'TLS' => 'TeloSystems',
|
1240
1410
|
'TER' => 'Teracube',
|
1241
1411
|
'TD' => 'Tesco',
|
1242
1412
|
'TA' => 'Tesla',
|
1243
1413
|
'9T' => 'Tetratab',
|
1414
|
+
'TET' => 'TETC',
|
1244
1415
|
'TZ' => 'teXet',
|
1245
1416
|
'29' => 'Teknosa',
|
1246
1417
|
'JZ' => 'TJC',
|
@@ -1263,11 +1434,14 @@ class DeviceDetector
|
|
1263
1434
|
'T1' => 'Tolino',
|
1264
1435
|
'0T' => 'Tone',
|
1265
1436
|
'TY' => 'Tooky',
|
1437
|
+
'TOO' => 'TOOGO',
|
1266
1438
|
'T9' => 'Top House',
|
1267
1439
|
'DK' => 'Topelotek',
|
1268
1440
|
'42' => 'Topway',
|
1269
1441
|
'TO' => 'Toplux',
|
1270
1442
|
'TOD' => 'TOPDON',
|
1443
|
+
'TOP' => 'TopDevice',
|
1444
|
+
'TO2' => 'TOPSHOWS',
|
1271
1445
|
'7T' => 'Torex',
|
1272
1446
|
'TOR' => 'Torque',
|
1273
1447
|
'6O' => 'TOSCIDO',
|
@@ -1306,17 +1480,21 @@ class DeviceDetector
|
|
1306
1480
|
'UL' => 'Ulefone',
|
1307
1481
|
'UA' => 'Umax',
|
1308
1482
|
'UM' => 'UMIDIGI',
|
1483
|
+
'UNT' => 'Unitech',
|
1309
1484
|
'UZ' => 'Unihertz',
|
1310
1485
|
'3Z' => 'UZ Mobile',
|
1311
1486
|
'UX' => 'Unimax',
|
1487
|
+
'UNQ' => 'Uniqcell',
|
1312
1488
|
'US' => 'Uniscope',
|
1313
1489
|
'UNI' => 'Unistrong',
|
1314
1490
|
'U2' => 'UNIWA',
|
1491
|
+
'UND' => 'Uniden',
|
1315
1492
|
'UO' => 'Unnecto',
|
1316
1493
|
'UNN' => 'Unnion Technologies',
|
1317
1494
|
'UU' => 'Unonu',
|
1318
1495
|
'UN' => 'Unowhy',
|
1319
1496
|
'UY' => 'UNNO',
|
1497
|
+
'UOO' => 'UOOGOU',
|
1320
1498
|
'UNB' => 'Unblock Tech',
|
1321
1499
|
'UK' => 'UTOK',
|
1322
1500
|
'3U' => 'IUNI',
|
@@ -1330,6 +1508,7 @@ class DeviceDetector
|
|
1330
1508
|
'VP' => 'Vargo',
|
1331
1509
|
'VC' => 'Vankyo',
|
1332
1510
|
'VAL' => 'VALEM',
|
1511
|
+
'VAT' => 'VALTECH',
|
1333
1512
|
'VB' => 'VC',
|
1334
1513
|
'VN' => 'Venso',
|
1335
1514
|
'VEN' => 'Venstar',
|
@@ -1341,9 +1520,12 @@ class DeviceDetector
|
|
1341
1520
|
'VR' => 'Vernee',
|
1342
1521
|
'VX' => 'Vertex',
|
1343
1522
|
'VE' => 'Vertu',
|
1523
|
+
'VET' => 'VETAS',
|
1344
1524
|
'VL' => 'Verykool',
|
1345
1525
|
'QV' => 'Verssed',
|
1526
|
+
'VER' => 'Versus',
|
1346
1527
|
'V8' => 'Vesta',
|
1528
|
+
'VEK' => 'Vekta',
|
1347
1529
|
'VT' => 'Vestel',
|
1348
1530
|
'48' => 'Vexia',
|
1349
1531
|
'V6' => 'VGO TEL',
|
@@ -1358,17 +1540,26 @@ class DeviceDetector
|
|
1358
1540
|
'FV' => 'Vios',
|
1359
1541
|
'0V' => 'Vipro',
|
1360
1542
|
'ZV' => 'Virzo',
|
1543
|
+
'VIP' => 'Viper',
|
1361
1544
|
'VI' => 'Vitelcom',
|
1545
|
+
'VIB' => 'ViBox',
|
1362
1546
|
'8V' => 'Viumee',
|
1363
1547
|
'V5' => 'Vivax',
|
1548
|
+
'VIV' => 'VIVIMAGE',
|
1364
1549
|
'VV' => 'Vivo',
|
1365
1550
|
'6V' => 'VIWA',
|
1551
|
+
'VII' => 'VIIPOO',
|
1366
1552
|
'VID' => 'VIDA',
|
1367
1553
|
'VZ' => 'Vizio',
|
1554
|
+
'VIZ' => 'Vizmo',
|
1555
|
+
'VIT' => 'Vityaz',
|
1368
1556
|
'9V' => 'Vision Touch',
|
1557
|
+
'VIL' => 'Visual Land',
|
1369
1558
|
'VK' => 'VK Mobile',
|
1370
1559
|
'JM' => 'v-mobile',
|
1371
1560
|
'VHO' => 'V-HOPE',
|
1561
|
+
'VHM' => 'V-HOME',
|
1562
|
+
'VGE' => 'V-Gen',
|
1372
1563
|
'V0' => 'VKworld',
|
1373
1564
|
'VM' => 'Vodacom',
|
1374
1565
|
'VF' => 'Vodafone',
|
@@ -1379,11 +1570,13 @@ class DeviceDetector
|
|
1379
1570
|
'2V' => 'Vorke',
|
1380
1571
|
'8U' => 'Vorcom',
|
1381
1572
|
'JW' => 'Vortex',
|
1573
|
+
'VOR' => 'Vormor',
|
1382
1574
|
'V1' => 'Voto',
|
1383
1575
|
'Z7' => 'VOX',
|
1384
1576
|
'VO' => 'Voxtel',
|
1385
1577
|
'VY' => 'Voyo',
|
1386
1578
|
'VOL' => 'Völfen',
|
1579
|
+
'VO1' => 'Volt',
|
1387
1580
|
'VH' => 'Vsmart',
|
1388
1581
|
'V9' => 'Vsun',
|
1389
1582
|
'VU' => 'Vulcan',
|
@@ -1391,14 +1584,19 @@ class DeviceDetector
|
|
1391
1584
|
'ZC' => 'VUCATIMES',
|
1392
1585
|
'VUE' => 'Vue Micro',
|
1393
1586
|
'WA' => 'Walton',
|
1587
|
+
'WAF' => 'WAF',
|
1588
|
+
'WAL' => 'Waltter',
|
1589
|
+
'WHI' => 'White Mobile',
|
1394
1590
|
'WM' => 'Weimei',
|
1395
1591
|
'WE' => 'WellcoM',
|
1396
1592
|
'W6' => 'WELLINGTON',
|
1397
1593
|
'WD' => 'Western Digital',
|
1398
1594
|
'WT' => 'Westpoint',
|
1399
1595
|
'WAN' => 'Wanmukang',
|
1596
|
+
'WA1' => 'WANSA',
|
1400
1597
|
'WY' => 'Wexler',
|
1401
1598
|
'3W' => 'WE',
|
1599
|
+
'WEC' => 'Wecool',
|
1402
1600
|
'WEE' => 'Weelikeit',
|
1403
1601
|
'WP' => 'Wieppo',
|
1404
1602
|
'W2' => 'Wigor',
|
@@ -1409,6 +1607,7 @@ class DeviceDetector
|
|
1409
1607
|
'9W' => 'Winmax',
|
1410
1608
|
'W5' => 'Winnovo',
|
1411
1609
|
'WU' => 'Wintouch',
|
1610
|
+
'WIS' => 'Winstar',
|
1412
1611
|
'W0' => 'Wiseasy',
|
1413
1612
|
'2W' => 'Wizz',
|
1414
1613
|
'W4' => 'WIWA',
|
@@ -1421,13 +1620,16 @@ class DeviceDetector
|
|
1421
1620
|
'WR' => 'Wortmann',
|
1422
1621
|
'WX' => 'Woxter',
|
1423
1622
|
'XQ' => 'X-AGE',
|
1623
|
+
'XEL' => 'XElectron',
|
1424
1624
|
'X3' => 'X-BO',
|
1625
|
+
'XMO' => 'X-Mobile',
|
1425
1626
|
'XT' => 'X-TIGI',
|
1426
1627
|
'XV' => 'X-View',
|
1427
1628
|
'X4' => 'X.Vision',
|
1428
1629
|
'X88' => 'X88',
|
1429
1630
|
'X96' => 'X96',
|
1430
1631
|
'96Q' => 'X96Q',
|
1632
|
+
'A95' => 'A95X',
|
1431
1633
|
'XG' => 'Xgody',
|
1432
1634
|
'QX' => 'XGIMI',
|
1433
1635
|
'XL' => 'Xiaolajiao',
|
@@ -1439,13 +1641,21 @@ class DeviceDetector
|
|
1439
1641
|
'XS' => 'Xshitou',
|
1440
1642
|
'4X' => 'Xtouch',
|
1441
1643
|
'X8' => 'Xtratech',
|
1644
|
+
'XCR' => 'Xcruiser',
|
1645
|
+
'XCO' => 'XCOM',
|
1646
|
+
'XCL' => 'Xcell',
|
1647
|
+
'XWA' => 'Xwave',
|
1442
1648
|
'YD' => 'Yandex',
|
1443
1649
|
'YA' => 'Yarvik',
|
1444
1650
|
'Y2' => 'Yes',
|
1651
|
+
'YES' => 'Yestel',
|
1445
1652
|
'YE' => 'Yezz',
|
1446
1653
|
'YG' => 'YEPEN',
|
1654
|
+
'YEL' => 'YELLYOUTH',
|
1447
1655
|
'YK' => 'Yoka TV',
|
1448
1656
|
'YO' => 'Yota',
|
1657
|
+
'YOU' => 'Youin',
|
1658
|
+
'YO1' => 'Youwei',
|
1449
1659
|
'YOO' => 'Yooz',
|
1450
1660
|
'YT' => 'Ytone',
|
1451
1661
|
'Y9' => 'YOTOPT',
|
@@ -1454,6 +1664,7 @@ class DeviceDetector
|
|
1454
1664
|
'Y0' => 'YUHO',
|
1455
1665
|
'YN' => 'Yuno',
|
1456
1666
|
'YUN' => 'YUNDOO',
|
1667
|
+
'YUS' => 'YunSong',
|
1457
1668
|
'YUM' => 'YUMKEM',
|
1458
1669
|
'YU' => 'Yuandao',
|
1459
1670
|
'YS' => 'Yusun',
|
@@ -1461,8 +1672,10 @@ class DeviceDetector
|
|
1461
1672
|
'YX' => 'Yxtel',
|
1462
1673
|
'0Z' => 'Zatec',
|
1463
1674
|
'2Z' => 'Zaith',
|
1675
|
+
'ZAM' => 'Zamolxe',
|
1464
1676
|
'ZEA' => 'Zealot',
|
1465
1677
|
'PZ' => 'Zebra',
|
1678
|
+
'ZE1' => 'Zeblaze',
|
1466
1679
|
'ZE' => 'Zeemi',
|
1467
1680
|
'WZ' => 'Zeeker',
|
1468
1681
|
'ZN' => 'Zen',
|
@@ -1473,10 +1686,13 @@ class DeviceDetector
|
|
1473
1686
|
'FZ' => 'ZIFRO',
|
1474
1687
|
'ZX' => 'Ziox',
|
1475
1688
|
'ZIK' => 'ZIK',
|
1689
|
+
'ZIG' => 'Zigo',
|
1476
1690
|
'ZIN' => 'Zinox',
|
1477
1691
|
'ZO' => 'Zonda',
|
1478
1692
|
'ZW' => 'Zonko',
|
1479
1693
|
'ZP' => 'Zopo',
|
1694
|
+
'ZOO' => 'ZoomSmart',
|
1695
|
+
'ZO1' => 'Zoom',
|
1480
1696
|
'ZT' => 'ZTE',
|
1481
1697
|
'ZU' => 'Zuum',
|
1482
1698
|
'ZY' => 'Zync',
|
@@ -1484,6 +1700,7 @@ class DeviceDetector
|
|
1484
1700
|
'ZQ' => 'ZYQ',
|
1485
1701
|
'Z4' => 'ZH&K',
|
1486
1702
|
'OW' => 'öwn',
|
1703
|
+
'WBF' => 'Webfleet',
|
1487
1704
|
|
1488
1705
|
# legacy brands, might be removed in future versions
|
1489
1706
|
'WB' => 'Web TV',
|
@@ -1507,11 +1724,24 @@ class DeviceDetector
|
|
1507
1724
|
end
|
1508
1725
|
|
1509
1726
|
def brand
|
1510
|
-
regex_meta[:brand]
|
1727
|
+
return regex_meta[:brand] if regex_meta[:brand] == 'Sony Ericsson'
|
1728
|
+
|
1729
|
+
brand = regex_meta[:regex_name] || regex_meta[:brand] || vendor_fragment.name || fix_for_x_music
|
1730
|
+
return if brand == 'Unknown'
|
1731
|
+
|
1732
|
+
brand
|
1511
1733
|
end
|
1512
1734
|
|
1513
1735
|
private
|
1514
1736
|
|
1737
|
+
def fix_for_x_music
|
1738
|
+
user_agent&.include?('X-music Ⅲ') ? 'OneClick' : nil
|
1739
|
+
end
|
1740
|
+
|
1741
|
+
def vendor_fragment
|
1742
|
+
::DeviceDetector::VendorFragment.new(user_agent)
|
1743
|
+
end
|
1744
|
+
|
1515
1745
|
# The order of files needs to be the same as the order of device
|
1516
1746
|
# parser classes used in the piwik project.
|
1517
1747
|
def filenames
|