device_detector 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +4 -4
  4. data/Rakefile +1 -0
  5. data/lib/device_detector/device.rb +5 -2
  6. data/lib/device_detector/version.rb +1 -1
  7. data/regexes/bots.yml +57 -3
  8. data/regexes/client/browsers.yml +22 -3
  9. data/regexes/client/libraries.yml +5 -0
  10. data/regexes/client/mobile_apps.yml +46 -0
  11. data/regexes/device/mobiles.yml +3414 -875
  12. data/regexes/device/notebooks.yml +114 -0
  13. data/regexes/device/televisions.yml +15 -1
  14. data/regexes/oss.yml +23 -28
  15. data/spec/device_detector/detector_fixtures_spec.rb +30 -35
  16. data/spec/fixtures/client/browser.yml +67 -40
  17. data/spec/fixtures/client/library.yml +6 -0
  18. data/spec/fixtures/client/mobile_app.yml +34 -1
  19. data/spec/fixtures/detector/bots.yml +88 -1
  20. data/spec/fixtures/detector/desktop.yml +1341 -347
  21. data/spec/fixtures/detector/mobile_apps.yml +85 -0
  22. data/spec/fixtures/detector/phablet.yml +1282 -122
  23. data/spec/fixtures/detector/portable_media_player.yml +40 -0
  24. data/spec/fixtures/detector/smartphone-1.yml +3512 -3533
  25. data/spec/fixtures/detector/smartphone-10.yml +3959 -3963
  26. data/spec/fixtures/detector/smartphone-11.yml +4089 -3965
  27. data/spec/fixtures/detector/smartphone-12.yml +4029 -4038
  28. data/spec/fixtures/detector/smartphone-13.yml +3792 -3800
  29. data/spec/fixtures/detector/smartphone-14.yml +8236 -963
  30. data/spec/fixtures/detector/smartphone-15.yml +6595 -0
  31. data/spec/fixtures/detector/smartphone-16.yml +10021 -0
  32. data/spec/fixtures/detector/smartphone-17.yml +9408 -0
  33. data/spec/fixtures/detector/smartphone-2.yml +3454 -3457
  34. data/spec/fixtures/detector/smartphone-3.yml +3873 -3869
  35. data/spec/fixtures/detector/smartphone-4.yml +4276 -4260
  36. data/spec/fixtures/detector/smartphone-5.yml +3581 -3558
  37. data/spec/fixtures/detector/smartphone-6.yml +3938 -3786
  38. data/spec/fixtures/detector/smartphone-7.yml +4044 -3968
  39. data/spec/fixtures/detector/smartphone-8.yml +4901 -4935
  40. data/spec/fixtures/detector/smartphone-9.yml +4255 -4274
  41. data/spec/fixtures/detector/smartphone.yml +3431 -3424
  42. data/spec/fixtures/detector/tablet-1.yml +3815 -3815
  43. data/spec/fixtures/detector/tablet-2.yml +3742 -3736
  44. data/spec/fixtures/detector/tablet-3.yml +3836 -3827
  45. data/spec/fixtures/detector/tablet-4.yml +2592 -7
  46. data/spec/fixtures/detector/tablet.yml +466 -466
  47. data/spec/fixtures/detector/tv.yml +401 -1
  48. data/spec/fixtures/detector/unknown.yml +17 -21
  49. data/spec/fixtures/device/notebook.yml +7 -0
  50. data/spec/fixtures/parser/oss.yml +7 -0
  51. metadata +11 -2
@@ -0,0 +1,114 @@
1
+ ###############
2
+ # Device Detector - The Universal Device Detection library for parsing User Agents
3
+ #
4
+ # @link https://matomo.org
5
+ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6
+ ###############
7
+
8
+ Acer:
9
+ regex: 'FBMD/(?:Aspire E5-421G|Z5WAL|One S1003);'
10
+ device: 'desktop'
11
+ models:
12
+ - regex: 'FBMD/Aspire E5-421G;'
13
+ model: 'Aspire E5-421G'
14
+ - regex: 'FBMD/Z5WAL;'
15
+ model: 'Aspire E5-511'
16
+ - regex: 'FBMD/One S1003;'
17
+ model: 'One 10'
18
+
19
+ Asus:
20
+ regex: 'FBMD/(?:K50IN|K54L|T100HAN|T103HAF|UX360CAK|X550LB|X553MA|X555LN|X556UQK);'
21
+ device: 'desktop'
22
+ models:
23
+ - regex: 'FBMD/K50IN;'
24
+ model: 'K50IN'
25
+ - regex: 'FBMD/K54L;'
26
+ model: 'K54L'
27
+ - regex: 'FBMD/T100HAN;'
28
+ model: 'Transformer Book'
29
+ - regex: 'FBMD/T103HAF;'
30
+ model: 'Transformer Mini'
31
+ - regex: 'FBMD/UX360CAK;'
32
+ model: 'ZenBook Flip'
33
+ - regex: 'FBMD/X550LB;'
34
+ model: 'X550LB'
35
+ - regex: 'FBMD/X553MA;'
36
+ model: 'X553MA'
37
+ - regex: 'FBMD/X555LN;'
38
+ model: 'X555LN'
39
+ - regex: 'FBMD/X556UQK;'
40
+ model: 'X556UQK'
41
+
42
+ Dell:
43
+ regex: 'FBMD/(?:Latitude E4300|Inspiron 3541|XPS 15 95[35]0);'
44
+ device: 'desktop'
45
+ models:
46
+ - regex: 'Latitude E4300'
47
+ model: 'Latitude E4300'
48
+ - regex: 'Inspiron 3541'
49
+ model: 'Inspiron 3541'
50
+ - regex: 'XPS 15 9530'
51
+ model: 'XPS 15 9530'
52
+ - regex: 'XPS 15 9550'
53
+ model: 'XPS 15 9550'
54
+
55
+ HP:
56
+ regex: 'FBMD/((?:Compaq|HP) |23-f364)'
57
+ device: 'desktop'
58
+ models:
59
+ - regex: 'Compaq Presario CQ61 Notebook PC'
60
+ model: 'Compaq Presario CQ61'
61
+ - regex: 'HP Pavilion x2 Detachable'
62
+ model: 'Pavilion x2'
63
+ - regex: 'HP Laptop 15-bs0xx'
64
+ model: '15 Laptop PC'
65
+ - regex: 'HP ENVY x360 Convertible 15-bp0xx'
66
+ model: 'ENVY x360 Convertible PC'
67
+ - regex: 'HP EliteBook (25[67]0p)'
68
+ model: 'EliteBook $1'
69
+ - regex: 'HP ProBook (440 G5|6[35]60b)'
70
+ model: 'ProBook $1'
71
+ - regex: 'HP Pavilion dv6 Notebook PC'
72
+ model: 'Pavilion dv6'
73
+ - regex: 'HP Pavilion Notebook'
74
+ model: 'Pavilion'
75
+ - regex: 'HP Spectre x360 Convertible'
76
+ model: 'Spectre x360'
77
+ - regex: 'HP Pavilion All-in-One 24-r0xx'
78
+ model: 'Pavilion 24-r0xx All-in-One Desktop PC'
79
+ device: 'desktop'
80
+ - regex: '23-f364'
81
+ model: 'Pavilion TouchSmart 23-f364 All-in-One Desktop PC'
82
+ device: 'desktop'
83
+
84
+ Lenovo:
85
+ regex: 'FBMD/(?:37021C5|80E5|80SM|80VR);'
86
+ device: 'desktop'
87
+ models:
88
+ - regex: 'FBMD/37021C5;'
89
+ model: 'ThinkPad Helix 3702'
90
+ - regex: 'FBMD/80E5;'
91
+ model: 'G50-80'
92
+ - regex: 'FBMD/80SM;'
93
+ model: 'Ideapad 310-15ISK'
94
+ - regex: 'FBMD/80VR;'
95
+ model: 'Legion Y720'
96
+
97
+ Schneider:
98
+ regex: 'FBMD/SCL141CTP;'
99
+ device: 'desktop'
100
+ model: 'Notebook 14" Cherry Trail'
101
+
102
+ Thomson:
103
+ regex: 'FBMD/TH360R12.32CTW;'
104
+ device: 'desktop'
105
+ model: 'Prestige TH-360R12.32CTW'
106
+
107
+ Toshiba:
108
+ regex: 'FBMD/Satellite '
109
+ device: 'desktop'
110
+ models:
111
+ - regex: 'Satellite (A[25]00|C650|C855|L650|S855)'
112
+ model: 'Satellite $1'
113
+ - regex: 'Satellite ([^;\)]+);'
114
+ model: 'Satellite $1'
@@ -258,14 +258,28 @@ TCL:
258
258
  regex: 'TCL'
259
259
  device: 'tv'
260
260
  models:
261
+ - regex: '(32D1820)'
262
+ model: '$1'
261
263
  - regex: '(LF1V[0-9]{3})'
262
264
  model: '$1'
263
265
 
264
266
  # Thomson
265
267
  Thomson:
266
- regex: 'THOMSON|THOM'
268
+ regex: 'THOMSON[,]?|THOM'
267
269
  device: 'tv'
268
270
  models:
271
+ - regex: '(TB28D19DHS-01|T28D18SFS-01B)'
272
+ model: '$1 28.0"'
273
+ - regex: '(T32RTM5040|T32D18SFS-01B)'
274
+ model: '$1 32.0"'
275
+ - regex: '(T43FSL5031|T43D18SFS-01B)'
276
+ model: '$1 43.0"'
277
+ - regex: '(T40D18SFS-01B)'
278
+ model: '$1 40.0"'
279
+ - regex: '(T49D18SFS-01B)'
280
+ model: '$1 49.0"'
281
+ - regex: '(T55D18[SD]FS-01B)'
282
+ model: '$1 55.0"'
269
283
  - regex: '(LF1V[0-9]{3})'
270
284
  model: '$1'
271
285
 
@@ -98,11 +98,14 @@
98
98
  ##########
99
99
  # Android
100
100
  ##########
101
+ - regex: '[ ]([\d\.]+)\) AppleWebKit.*ROBLOX Android App'
102
+ name: 'Android'
103
+ version: '$1'
104
+
101
105
  - regex: '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]*)'
102
106
  name: 'Android'
103
107
  version: '$1'
104
108
 
105
-
106
109
  - regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
107
110
  name: 'Android'
108
111
  version: ''
@@ -184,7 +187,7 @@
184
187
  ##########
185
188
  # webOS
186
189
  ##########
187
- - regex: '(?:webOS|Palm webOS)(?:/(\d+[\.\d]+))?'
190
+ - regex: '(?:webOS|web0S|Palm webOS)(?:/(\d+[\.\d]+))?'
188
191
  name: 'webOS'
189
192
  version: '$1'
190
193
 
@@ -209,70 +212,62 @@
209
212
  name: 'Windows'
210
213
  version: '10'
211
214
 
212
- - regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10'
215
+ - regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10|win10'
213
216
  name: 'Windows'
214
217
  version: '10'
215
-
218
+
216
219
  - regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
217
220
  name: 'Windows'
218
221
  version: '8.1'
219
222
 
220
-
221
223
  - regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
222
224
  name: 'Windows'
223
225
  version: '8'
224
-
225
-
226
- - regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7'
226
+
227
+ - regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7'
227
228
  name: 'Windows'
228
229
  version: '7'
229
-
230
-
230
+
231
231
  - regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
232
232
  name: 'Windows'
233
233
  version: 'Vista'
234
-
235
-
234
+
236
235
  - regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
237
236
  name: 'Windows'
238
237
  version: 'Server 2003'
239
-
240
-
238
+
241
239
  - regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
242
240
  name: 'Windows'
243
241
  version: 'XP'
244
-
245
-
242
+
246
243
  - regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
247
244
  name: 'Windows'
248
245
  version: '2000'
249
-
250
-
246
+
251
247
  - regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
252
248
  name: 'Windows'
253
249
  version: 'NT'
254
-
255
-
250
+
256
251
  - regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
257
252
  name: 'Windows'
258
253
  version: 'ME'
259
-
260
-
254
+
261
255
  - regex: 'CYGWIN_98-4.10|Win98|Windows 98'
262
256
  name: 'Windows'
263
257
  version: '98'
264
-
265
-
258
+
266
259
  - regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
267
260
  name: 'Windows'
268
261
  version: '95'
269
-
270
-
262
+
271
263
  - regex: 'Windows 3.1'
272
264
  name: 'Windows'
273
265
  version: '3.1'
274
-
275
-
266
+
267
+ - regex: 'FBW.*FBSV/(\d+[\.\d]*);'
268
+ name: 'Windows'
269
+ version: '$1'
270
+
276
271
  - regex: 'Windows'
277
272
  name: 'Windows'
278
273
  version: ''
@@ -1,71 +1,69 @@
1
1
  require_relative '../spec_helper'
2
2
 
3
3
  describe DeviceDetector do
4
-
5
- fixture_dir = File.expand_path('../../fixtures/detector', __FILE__)
4
+ fixture_dir = File.expand_path('../fixtures/detector', __dir__)
6
5
  fixture_files = Dir["#{fixture_dir}/*.yml"]
7
6
  fixture_files.each do |fixture_file|
8
-
9
7
  describe File.basename(fixture_file) do
10
-
11
8
  fixtures = nil
12
9
  begin
13
10
  fixtures = YAML.load(File.read(fixture_file))
14
11
  rescue Psych::SyntaxError => e
15
- fail "Failed to parse #{fixture_file}, reason: #{e}"
12
+ raise "Failed to parse #{fixture_file}, reason: #{e}"
16
13
  end
17
14
 
18
15
  def str_or_nil(string)
16
+ return nil if string.nil?
19
17
  return nil if string == ''
20
- string
18
+
19
+ string.to_s
21
20
  end
22
21
 
23
22
  fixtures.each do |f|
24
-
25
- user_agent = f["user_agent"]
23
+ user_agent = f['user_agent']
26
24
  detector = DeviceDetector.new(user_agent)
27
25
  os = detector.send(:os)
28
26
 
29
27
  describe user_agent do
30
- it "should be detected" do
28
+ it 'should be detected' do
31
29
  if detector.bot?
32
- assert_equal str_or_nil(f["bot"]["name"]), detector.bot_name, "failed bot name detection"
30
+ assert_equal str_or_nil(f['bot']['name']), detector.bot_name, 'failed bot name detection'
33
31
  else
34
- if f["client"]
35
- assert_equal str_or_nil(f["client"]["name"]), detector.name, "failed client name detection"
32
+ if f['client']
33
+ assert_equal str_or_nil(f['client']['name']), detector.name, 'failed client name detection'
36
34
  end
37
35
 
38
- os_family = str_or_nil(f["os_family"])
39
- if os_family != "Unknown"
36
+ os_family = str_or_nil(f['os_family'])
37
+ if os_family != 'Unknown'
40
38
  if os_family.nil?
41
- assert_nil os.family, "failed os family detection"
39
+ assert_nil os.family, 'failed os family detection'
42
40
  else
43
- assert_equal os_family, os.family, "failed os family detection"
41
+ assert_equal os_family, os.family, 'failed os family detection'
44
42
  end
45
43
 
46
- name = str_or_nil(f["os"]["name"])
44
+ name = str_or_nil(f['os']['name'])
47
45
  if name.nil?
48
- assert_nil os.name, "failed os name detection"
46
+ assert_nil os.name, 'failed os name detection'
49
47
  else
50
- assert_equal name, os.name, "failed os name detection"
48
+ assert_equal name, os.name, 'failed os name detection'
51
49
  end
52
50
 
53
- short_name = str_or_nil(f["os"]["short_name"])
51
+ short_name = str_or_nil(f['os']['short_name'])
54
52
  if short_name.nil?
55
- assert_nil os.short_name, "failed os short name detection"
53
+ assert_nil os.short_name, 'failed os short name detection'
56
54
  else
57
- assert_equal short_name, os.short_name, "failed os short name detection"
55
+ assert_equal short_name, os.short_name, 'failed os short name detection'
58
56
  end
59
57
 
60
- os_version = str_or_nil(f["os"]["version"])
58
+ os_version = str_or_nil(f['os']['version'])
61
59
  if os_version.nil?
62
- assert_nil os.full_version, "failed os version detection"
60
+ assert_nil os.full_version, 'failed os version detection'
63
61
  else
64
- assert_equal os_version, os.full_version, "failed os version detection"
62
+ assert_equal os_version, os.full_version, 'failed os version detection'
65
63
  end
66
64
  end
67
- if f["device"]
68
- expected_type = str_or_nil(f["device"]["type"])
65
+ if f['device']
66
+ expected_type = str_or_nil(f['device']['type'])
69
67
  actual_type = detector.device_type
70
68
 
71
69
  if expected_type != actual_type
@@ -74,27 +72,24 @@ describe DeviceDetector do
74
72
  # detector.device_type
75
73
  end
76
74
  if expected_type.nil?
77
- assert_nil actual_type, "failed device type detection"
75
+ assert_nil actual_type, 'failed device type detection'
78
76
  else
79
- assert_equal expected_type, actual_type, "failed device type detection"
77
+ assert_equal expected_type, actual_type, 'failed device type detection'
80
78
  end
81
79
 
82
- model = str_or_nil(f["device"]["model"])
80
+ model = str_or_nil(f['device']['model'])
83
81
  model = model.to_s unless model.nil?
84
82
 
85
83
  if model.nil?
86
- assert_nil detector.device_name, "failed device name detection"
84
+ assert_nil detector.device_name, 'failed device name detection'
87
85
  else
88
- assert_equal model, detector.device_name, "failed device name detection"
86
+ assert_equal model, detector.device_name, 'failed device name detection'
89
87
  end
90
88
  end
91
89
  end
92
90
  end
93
91
  end
94
92
  end
95
-
96
93
  end
97
-
98
94
  end
99
-
100
95
  end
@@ -223,7 +223,7 @@
223
223
  short_name: CA
224
224
  version: "2.1.2"
225
225
  engine: Gecko
226
- engine_version: ""
226
+ engine_version: "1.9.2.28"
227
227
  -
228
228
  user_agent: Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0 Cunaguaro/27.0
229
229
  client:
@@ -232,7 +232,7 @@
232
232
  short_name: CU
233
233
  version: "27.0"
234
234
  engine: Gecko
235
- engine_version: ""
235
+ engine_version: "27.0"
236
236
  -
237
237
  user_agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/45.0 Chrome/39.0.2171.74 Safari/537.36
238
238
  client:
@@ -331,7 +331,7 @@
331
331
  short_name: CK
332
332
  version: "1.0"
333
333
  engine: Gecko
334
- engine_version: ""
334
+ engine_version: "17.0"
335
335
  -
336
336
  user_agent: Mozilla/5.0 (Linux; Android 4.1.1; ALCATEL ONE TOUCH 6033X Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36
337
337
  client:
@@ -358,7 +358,7 @@
358
358
  short_name: CO
359
359
  version: "11.0"
360
360
  engine: Gecko
361
- engine_version: ""
361
+ engine_version: "11.0"
362
362
  -
363
363
  user_agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13 ChromePlus/1.6.0.0
364
364
  client:
@@ -493,8 +493,8 @@
493
493
  short_name: EP
494
494
  version: "1.2.6"
495
495
  engine: Gecko
496
- engine_version: ""
497
- -
496
+ engine_version: "1.6"
497
+ -
498
498
  user_agent: Mozilla/5.0 (X11; U; Linux i686; fr-fr) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+ Debian/squeeze (2.30.6-1) Epiphany/2.30.6
499
499
  client:
500
500
  type: browser
@@ -520,7 +520,7 @@
520
520
  short_name: FB
521
521
  version: "0.7"
522
522
  engine: Gecko
523
- engine_version: ""
523
+ engine_version: "1.5"
524
524
  -
525
525
  user_agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Fluid/0.9.6 Safari/528.16
526
526
  client:
@@ -538,7 +538,7 @@
538
538
  short_name: FE
539
539
  version: "10.0"
540
540
  engine: Gecko
541
- engine_version: ""
541
+ engine_version: "10.0"
542
542
  -
543
543
  user_agent: Mozilla/5.0 (X11; Arch Linux i686; rv:2.0) Gecko/20110321 Firefox/4.0
544
544
  client:
@@ -547,7 +547,7 @@
547
547
  short_name: FF
548
548
  version: "4.0"
549
549
  engine: Gecko
550
- engine_version: ""
550
+ engine_version: "2.0"
551
551
  -
552
552
  user_agent: Mozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.21pre) Gecko/20090218 BonEcho/2.0.0.21pre
553
553
  client:
@@ -556,7 +556,7 @@
556
556
  short_name: FF
557
557
  version: "2.0.0.21"
558
558
  engine: Gecko
559
- engine_version: ""
559
+ engine_version: "1.8.1.21"
560
560
  -
561
561
  user_agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko GranParadiso/3.0.11
562
562
  client:
@@ -574,7 +574,7 @@
574
574
  short_name: FF
575
575
  version: "3.0"
576
576
  engine: Gecko
577
- engine_version: ""
577
+ engine_version: "1.9"
578
578
  -
579
579
  user_agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b5pre) Gecko/20090424 Shiretoko/3.5b5pre
580
580
  client:
@@ -583,7 +583,7 @@
583
583
  short_name: FF
584
584
  version: "3.5"
585
585
  engine: Gecko
586
- engine_version: ""
586
+ engine_version: "1.9.1"
587
587
  -
588
588
  user_agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3pre) Gecko/20100403 Lorentz/3.6.3plugin2pre (.NET CLR 4.0.20506)
589
589
  client:
@@ -592,7 +592,7 @@
592
592
  short_name: FF
593
593
  version: "3.6.3"
594
594
  engine: Gecko
595
- engine_version: ""
595
+ engine_version: "1.9.2.3"
596
596
  -
597
597
  user_agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
598
598
  client:
@@ -601,7 +601,7 @@
601
601
  short_name: FF
602
602
  version: "3.6.13"
603
603
  engine: Gecko
604
- engine_version: ""
604
+ engine_version: "1.9.2.13"
605
605
  -
606
606
  user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4
607
607
  client:
@@ -637,7 +637,7 @@
637
637
  short_name: FL
638
638
  version: "2.5.6"
639
639
  engine: Gecko
640
- engine_version: ""
640
+ engine_version: "1.9.0.16"
641
641
  -
642
642
  user_agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:2.0) Treco/20110515 Fireweb Navigator/2.4
643
643
  client:
@@ -664,7 +664,7 @@
664
664
  short_name: GA
665
665
  version: "1.3.21"
666
666
  engine: Gecko
667
- engine_version: ""
667
+ engine_version: "1.7.12"
668
668
  -
669
669
  user_agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/532.4 (KHTML, like Gecko) Google Earth/5.2.1.1329 Safari/532.4
670
670
  client:
@@ -718,7 +718,7 @@
718
718
  short_name: ID
719
719
  version: "26.0.0.2"
720
720
  engine: Gecko
721
- engine_version: ""
721
+ engine_version: "26.0"
722
722
  -
723
723
  user_agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.15) Gecko/2009102815 Iceweasel/3.0.6 (Debian-3.0.6-3)
724
724
  client:
@@ -727,7 +727,7 @@
727
727
  short_name: IW
728
728
  version: "3.0.6"
729
729
  engine: Gecko
730
- engine_version: ""
730
+ engine_version: "1.9.0.15"
731
731
  -
732
732
  user_agent: Mozilla/4.0 (compatible; MSIE 4.01; Mac_PowerPC)
733
733
  client:
@@ -898,7 +898,7 @@
898
898
  short_name: KM
899
899
  version: "1.5.4"
900
900
  engine: Gecko
901
- engine_version: ""
901
+ engine_version: "1.8.1.24"
902
902
  -
903
903
  user_agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux; de) KHTML/3.5.8 (like Gecko) (Debian)
904
904
  client:
@@ -916,7 +916,7 @@
916
916
  short_name: KP
917
917
  version: "3.0"
918
918
  engine: Gecko
919
- engine_version: ""
919
+ engine_version: "1.9"
920
920
  -
921
921
  user_agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6
922
922
  client:
@@ -934,7 +934,7 @@
934
934
  short_name: KY
935
935
  version: "0.6.1.70394"
936
936
  engine: Gecko
937
- engine_version: ""
937
+ engine_version: "1.9.2"
938
938
  -
939
939
  user_agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER
940
940
  client:
@@ -988,7 +988,7 @@
988
988
  short_name: MB
989
989
  version: "0.9.7"
990
990
  engine: Gecko
991
- engine_version: ""
991
+ engine_version: "1.9.2"
992
992
  -
993
993
  user_agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36 Avast/66.2.567.182
994
994
  client:
@@ -1015,7 +1015,7 @@
1015
1015
  short_name: MB
1016
1016
  version: "1.7.4.8"
1017
1017
  engine: Gecko
1018
- engine_version: ""
1018
+ engine_version: "1.9.2.3"
1019
1019
  -
1020
1020
  user_agent: NCSA_Mosaic/2.7b5 (X11;Linux 2.6.7 i686) libwww/2.12 modified
1021
1021
  client:
@@ -1159,7 +1159,7 @@
1159
1159
  short_name: NS
1160
1160
  version: "8.1.3"
1161
1161
  engine: Gecko
1162
- engine_version: ""
1162
+ engine_version: "1.7.5"
1163
1163
  -
1164
1164
  user_agent: Mozilla/5.0 (Android 5.1; U613 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) NTENTBrowser/1.0.0.547 (CellularOne-US) Mobile Safari/537.36
1165
1165
  client:
@@ -1375,7 +1375,7 @@
1375
1375
  short_name: PM
1376
1376
  version: "24.3.1"
1377
1377
  engine: Gecko
1378
- engine_version: ""
1378
+ engine_version: "24.0"
1379
1379
  -
1380
1380
  user_agent: Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0
1381
1381
  client:
@@ -1420,7 +1420,7 @@
1420
1420
  short_name: PX
1421
1421
  version: "0.4"
1422
1422
  engine: Gecko
1423
- engine_version: ""
1423
+ engine_version: "1.2"
1424
1424
  -
1425
1425
  user_agent: Mozilla/4.0 (compatible; Polaris 6.2; Brew 3.1.5; en)/240X320 Samsung sam-r631
1426
1426
  client:
@@ -1609,7 +1609,7 @@
1609
1609
  short_name: SX
1610
1610
  version: "2.0"
1611
1611
  engine: Gecko
1612
- engine_version: ""
1612
+ engine_version: "1.8.1"
1613
1613
  -
1614
1614
  user_agent: Mozilla/5.0 (Linux; U; Tizen/1.0 like Android; en-us; AppleWebKit/534.46 (KHTML, like Gecko) Tizen Browser/1.0 Mobile
1615
1615
  client:
@@ -1744,7 +1744,7 @@
1744
1744
  short_name: EI
1745
1745
  version: "1.2"
1746
1746
  engine: Gecko
1747
- engine_version: ""
1747
+ engine_version: "1.9.2.10"
1748
1748
  -
1749
1749
  user_agent: Mozilla/5.0 (Linux; Android 5.1; Epic P7 Build/LMY47D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.121 Safari/537.36
1750
1750
  client:
@@ -1789,7 +1789,7 @@
1789
1789
  short_name: WF
1790
1790
  version: "30.0"
1791
1791
  engine: Gecko
1792
- engine_version: ""
1792
+ engine_version: "30.0"
1793
1793
  -
1794
1794
  user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Iridium/41.2 Safari/537.36 Chrome/41.0.2272.118
1795
1795
  client:
@@ -1807,7 +1807,7 @@
1807
1807
  short_name: CY
1808
1808
  version: "28.0.1"
1809
1809
  engine: Gecko
1810
- engine_version: ""
1810
+ engine_version: "28.0"
1811
1811
  -
1812
1812
  user_agent: Mozilla/5.0 (iPhone; CPU OS 8_0 like Mac OS X) AppleWebKit/538.34.9 (KHTML, like Gecko) iCabMobile/1.1
1813
1813
  client:
@@ -1852,7 +1852,7 @@
1852
1852
  short_name: TF
1853
1853
  version: ""
1854
1854
  engine: Gecko
1855
- engine_version: ""
1855
+ engine_version: "45.0"
1856
1856
  -
1857
1857
  user_agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 AOLShield/52.4.2
1858
1858
  client:
@@ -1861,7 +1861,7 @@
1861
1861
  short_name: AD
1862
1862
  version: "52.4.2"
1863
1863
  engine: Gecko
1864
- engine_version: ""
1864
+ engine_version: "52.0"
1865
1865
  -
1866
1866
  user_agent: Mozilla/5.0 (Linux; Android 9; ONEPLUS A3003 Build/PQ3A.190505.002; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/1.6.2(12322) Chrome/74.0.3729.157 Mobile Safari/537.36
1867
1867
  client:
@@ -2212,7 +2212,7 @@
2212
2212
  short_name: OS
2213
2213
  version: "3.8.20"
2214
2214
  engine: Gecko
2215
- engine_version: ""
2215
+ engine_version: "52.0"
2216
2216
  -
2217
2217
  user_agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:42.0) Gecko/20100101 Firefox/42.0 webissimo3/3.7.22+svn30377
2218
2218
  client:
@@ -2221,7 +2221,7 @@
2221
2221
  short_name: OS
2222
2222
  version: "3.7.22"
2223
2223
  engine: Gecko
2224
- engine_version: ""
2224
+ engine_version: "42.0"
2225
2225
  -
2226
2226
  user_agent: Mozilla/5.0 (Linux; U; COS like Android 4.1.2; zh_CN; 909d Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/1.0.0 Version/4.0 Mobile Safari/537.17
2227
2227
  client:
@@ -2311,7 +2311,7 @@
2311
2311
  short_name: TO
2312
2312
  version: "7.68.0.201"
2313
2313
  engine: Gecko
2314
- engine_version: ""
2314
+ engine_version: "68.0"
2315
2315
  -
2316
2316
  user_agent: Mozilla/5.0 (Linux; Android 7.0; SO-01H Build/32.3.E.0.136; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/64.0.3282.137 Mobile Safari/537.36 Sleipnir/3.5.7
2317
2317
  client:
@@ -2401,7 +2401,7 @@
2401
2401
  short_name: BH
2402
2402
  version: "25.3.1"
2403
2403
  engine: Gecko
2404
- engine_version: ""
2404
+ engine_version: "25.3"
2405
2405
  -
2406
2406
  user_agent: Mozilla/5.0 (X11; U; Linux armv6l; rv 1.8.1.5pre) Gecko/20070619 Minimo/0.020
2407
2407
  client:
@@ -2410,7 +2410,7 @@
2410
2410
  short_name: MN
2411
2411
  version: "0.020"
2412
2412
  engine: Gecko
2413
- engine_version: ""
2413
+ engine_version: "1.8.1.5"
2414
2414
  -
2415
2415
  user_agent: Mozilla/5.0 (Linux; Android 4.4; Moto 360 Build/KNX01S) AppleWebKit/537.36 (KHTML, like Gecko) WIB/0.9.8 Mobile Safari/537.36
2416
2416
  client:
@@ -2590,7 +2590,7 @@
2590
2590
  short_name: LH
2591
2591
  version: "49.0"
2592
2592
  engine: Gecko
2593
- engine_version: ""
2593
+ engine_version: "49.0"
2594
2594
  -
2595
2595
  user_agent: Mozilla/5.0 (Linux; U; X11; en-US; Valve Steam GameOverlay/1586022601; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36
2596
2596
  client:
@@ -2662,7 +2662,7 @@
2662
2662
  short_name: S5
2663
2663
  version: "2.4"
2664
2664
  engine: Gecko
2665
- engine_version: ""
2665
+ engine_version: "52.0"
2666
2666
  -
2667
2667
  user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Colibri/1.16.0 Chrome/78.0.3904.99 Electron/7.1.1 Safari/537.36
2668
2668
  client:
@@ -2824,7 +2824,7 @@
2824
2824
  short_name: ZV
2825
2825
  version: 18.0.1
2826
2826
  engine: Gecko
2827
- engine_version: ""
2827
+ engine_version: "18.0"
2828
2828
 
2829
2829
  - user_agent: Mozilla/5.0 (Linux; U; Android 10; zh-Hans-CN; CDY-TN00 Build/HUAWEICDY-TN00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 Quark/4.1.2.133 Mobile Safari/537.36
2830
2830
  client:
@@ -2834,3 +2834,30 @@
2834
2834
  version: 4.1.2.133
2835
2835
  engine: WebKit
2836
2836
  engine_version: "537.36"
2837
+ -
2838
+ user_agent: Mozilla/5.0 (Android 8.1.0; Xiaomi Redmi Note 6 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 BlueBrowser/3.0
2839
+ client:
2840
+ type: browser
2841
+ name: Blue Browser
2842
+ short_name: BU
2843
+ version: "3.0"
2844
+ engine: WebKit
2845
+ engine_version: "537.36"
2846
+ -
2847
+ user_agent: Mozilla/5.0 (Android 8.0.0; SM-J330F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3317.0 YaaniBrowser/4.3.0.153 (Turkcell-TR) Mobile Safari/537.36
2848
+ client:
2849
+ type: browser
2850
+ name: Yaani Browser
2851
+ short_name: YN
2852
+ version: 4.3.0.153
2853
+ engine: Blink
2854
+ engine_version: ""
2855
+ -
2856
+ user_agent: GOGGalaxyClient/2.0.20.39 (GOG Galaxy) 83b6745cff679691b69876bc7ee33e05e5d90bda (win10 x64)
2857
+ client:
2858
+ type: browser
2859
+ name: GOG Galaxy
2860
+ short_name: GO
2861
+ version: 2.0.20.39
2862
+ engine: ''
2863
+ engine_version: ''