device_detector 1.0.0 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.rubocop.yml +49 -0
- data/.ruby-version +1 -0
- data/.travis.yml +5 -9
- data/CHANGELOG.md +18 -5
- data/README.md +7 -9
- data/Rakefile +20 -13
- data/device_detector.gemspec +1 -0
- data/lib/device_detector.rb +32 -28
- data/lib/device_detector/bot.rb +2 -2
- data/lib/device_detector/client.rb +3 -2
- data/lib/device_detector/device.rb +46 -20
- data/lib/device_detector/memory_cache.rb +26 -19
- data/lib/device_detector/metadata_extractor.rb +7 -8
- data/lib/device_detector/model_extractor.rb +3 -3
- data/lib/device_detector/name_extractor.rb +2 -2
- data/lib/device_detector/os.rb +121 -111
- data/lib/device_detector/parser.rb +22 -9
- data/lib/device_detector/version.rb +3 -1
- data/lib/device_detector/version_extractor.rb +2 -3
- data/regexes/bots.yml +895 -21
- data/regexes/client/browser_engine.yml +11 -2
- data/regexes/client/browsers.yml +1025 -205
- data/regexes/client/feed_readers.yml +38 -2
- data/regexes/client/libraries.yml +81 -2
- data/regexes/client/mediaplayers.yml +25 -5
- data/regexes/client/mobile_apps.yml +213 -2
- data/regexes/client/pim.yml +10 -1
- data/regexes/device/cameras.yml +1 -1
- data/regexes/device/car_browsers.yml +7 -3
- data/regexes/device/consoles.yml +3 -3
- data/regexes/device/mobiles.yml +12768 -571
- data/regexes/device/notebooks.yml +114 -0
- data/regexes/device/portable_media_player.yml +4 -6
- data/regexes/device/televisions.yml +33 -5
- data/regexes/oss.yml +138 -49
- data/regexes/vendorfragments.yml +6 -2
- data/spec/device_detector/concrete_user_agent_spec.rb +16 -17
- data/spec/device_detector/detector_fixtures_spec.rb +59 -24
- data/spec/device_detector/device_spec.rb +28 -48
- data/spec/device_detector/memory_cache_spec.rb +60 -28
- data/spec/device_detector/model_extractor_spec.rb +3 -3
- data/spec/device_detector/version_extractor_spec.rb +5 -6
- data/spec/device_detector_spec.rb +60 -69
- data/spec/fixtures/client/browser.yml +1810 -260
- data/spec/fixtures/client/feed_reader.yml +47 -35
- data/spec/fixtures/client/library.yml +118 -3
- data/spec/fixtures/client/mediaplayer.yml +32 -37
- data/spec/fixtures/client/mobile_app.yml +225 -5
- data/spec/fixtures/client/pim.yml +37 -18
- data/spec/fixtures/detector/bots.yml +1531 -136
- data/spec/fixtures/detector/camera.yml +36 -10
- data/spec/fixtures/detector/car_browser.yml +64 -3
- data/spec/fixtures/detector/console.yml +80 -26
- data/spec/fixtures/detector/desktop.yml +3865 -2238
- data/spec/fixtures/detector/feature_phone.yml +151 -42
- data/spec/fixtures/detector/feed_reader.yml +186 -121
- data/spec/fixtures/detector/mediaplayer.yml +113 -39
- data/spec/fixtures/detector/mobile_apps.yml +451 -21
- data/spec/fixtures/detector/phablet.yml +3847 -660
- data/spec/fixtures/detector/portable_media_player.yml +81 -16
- data/spec/fixtures/detector/smart_display.yml +8 -5
- data/spec/fixtures/detector/smart_speaker.yml +55 -0
- data/spec/fixtures/detector/smartphone-1.yml +5385 -4948
- data/spec/fixtures/detector/smartphone-10.yml +9973 -0
- data/spec/fixtures/detector/smartphone-11.yml +10015 -0
- data/spec/fixtures/detector/smartphone-12.yml +9897 -0
- data/spec/fixtures/detector/smartphone-13.yml +9912 -0
- data/spec/fixtures/detector/smartphone-14.yml +9935 -0
- data/spec/fixtures/detector/smartphone-15.yml +6595 -0
- data/spec/fixtures/detector/smartphone-16.yml +10021 -0
- data/spec/fixtures/detector/smartphone-17.yml +9408 -0
- data/spec/fixtures/detector/smartphone-2.yml +5221 -4646
- data/spec/fixtures/detector/smartphone-3.yml +5047 -4494
- data/spec/fixtures/detector/smartphone-4.yml +6958 -2761
- data/spec/fixtures/detector/smartphone-5.yml +9937 -0
- data/spec/fixtures/detector/smartphone-6.yml +10114 -0
- data/spec/fixtures/detector/smartphone-7.yml +9975 -0
- data/spec/fixtures/detector/smartphone-8.yml +9897 -0
- data/spec/fixtures/detector/smartphone-9.yml +9880 -0
- data/spec/fixtures/detector/smartphone.yml +5229 -4649
- data/spec/fixtures/detector/tablet-1.yml +4640 -4140
- data/spec/fixtures/detector/tablet-2.yml +9806 -71
- data/spec/fixtures/detector/tablet-3.yml +9968 -0
- data/spec/fixtures/detector/tablet-4.yml +7113 -0
- data/spec/fixtures/detector/tablet.yml +4619 -4132
- data/spec/fixtures/detector/tv.yml +4093 -1342
- data/spec/fixtures/detector/unknown.yml +1042 -1006
- data/spec/fixtures/detector/wearable.yml +61 -0
- data/spec/fixtures/device/camera.yml +4 -3
- data/spec/fixtures/device/car_browser.yml +9 -2
- data/spec/fixtures/device/console.yml +15 -14
- data/spec/fixtures/device/notebook.yml +7 -0
- data/spec/fixtures/parser/oss.yml +291 -2
- data/spec/fixtures/parser/vendorfragments.yml +8 -2
- metadata +59 -7
|
@@ -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'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
###############
|
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
|
3
3
|
#
|
|
4
|
-
# @link
|
|
4
|
+
# @link https://matomo.org
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
|
6
6
|
###############
|
|
7
7
|
|
|
@@ -19,10 +19,8 @@ Apple:
|
|
|
19
19
|
model: 'iPod Touch 4'
|
|
20
20
|
- regex: '(?:Apple-)?iPod5[C,]1'
|
|
21
21
|
model: 'iPod Touch 5'
|
|
22
|
-
- regex: '(?:Apple-)?
|
|
23
|
-
model: 'iPod Touch'
|
|
24
|
-
- regex: '(?:Apple-)?iPod1[C,]1'
|
|
25
|
-
model: 'iPod Touch'
|
|
22
|
+
- regex: '(?:Apple-)?iPod7[C,]1'
|
|
23
|
+
model: 'iPod Touch 6'
|
|
26
24
|
- regex: '(?:Apple-)?iPod'
|
|
27
25
|
model: 'iPod Touch'
|
|
28
26
|
|
|
@@ -58,4 +56,4 @@ Samsung:
|
|
|
58
56
|
- regex: 'YP-G50'
|
|
59
57
|
model: 'Galaxy Player 50'
|
|
60
58
|
- regex: 'YP-GB70D'
|
|
61
|
-
model: 'Galaxy Player 70 Plus'
|
|
59
|
+
model: 'Galaxy Player 70 Plus'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
###############
|
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
|
3
3
|
#
|
|
4
|
-
# @link
|
|
4
|
+
# @link https://matomo.org
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
|
6
6
|
#
|
|
7
7
|
# ATTENTION: This file may only include tv user agents that contain 'HbbTV/([1-9]{1}(\.[0-9]{1}){1,2})'
|
|
@@ -56,6 +56,16 @@ Grundig:
|
|
|
56
56
|
device: 'tv'
|
|
57
57
|
model: ''
|
|
58
58
|
|
|
59
|
+
# Hisense
|
|
60
|
+
Hisense:
|
|
61
|
+
regex: 'Hisense'
|
|
62
|
+
device: 'tv'
|
|
63
|
+
models:
|
|
64
|
+
- regex: '(L[A-Z]{2,3}[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,6}[0-9]?[A-Z]?)'
|
|
65
|
+
model: '$1'
|
|
66
|
+
- regex: '(H[A-Z]?[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,4})'
|
|
67
|
+
model: '$1'
|
|
68
|
+
|
|
59
69
|
# Humax
|
|
60
70
|
Humax:
|
|
61
71
|
regex: 'Humax'
|
|
@@ -101,6 +111,10 @@ LG:
|
|
|
101
111
|
models:
|
|
102
112
|
- regex: '(NetCast [0-9]{1}.[0-9]{1}|GLOBAL_PLAT3)'
|
|
103
113
|
model: '$1'
|
|
114
|
+
- regex: '(OLED[0-9]{2}[A-Z][0-9][A-Z])'
|
|
115
|
+
model: '$1'
|
|
116
|
+
- regex: 'LGE;? ?([0-9]{2}[A-Z]{2}[0-9]{2,4}[A-Z]?)'
|
|
117
|
+
model: '$1'
|
|
104
118
|
|
|
105
119
|
# Loewe
|
|
106
120
|
Loewe:
|
|
@@ -165,7 +179,7 @@ Samsung:
|
|
|
165
179
|
regex: 'Samsung|Maple_2011'
|
|
166
180
|
device: 'tv'
|
|
167
181
|
models:
|
|
168
|
-
- regex: 'SmartTV(
|
|
182
|
+
- regex: 'SmartTV(201[2-9])'
|
|
169
183
|
model: 'Smart TV $1'
|
|
170
184
|
- regex: 'Maple_2011'
|
|
171
185
|
model: 'Smart TV 2011'
|
|
@@ -213,7 +227,7 @@ Sony:
|
|
|
213
227
|
regex: 'Sony'
|
|
214
228
|
device: 'tv'
|
|
215
229
|
models:
|
|
216
|
-
- regex: '(KDL[0-9]{2}[A-Z]{1,2}[0-9]{
|
|
230
|
+
- regex: '(KDL?-?[0-9]{2}[A-Z]{1,2}[0-9]{1,5})'
|
|
217
231
|
model: '$1'
|
|
218
232
|
|
|
219
233
|
# TechniSat
|
|
@@ -244,14 +258,28 @@ TCL:
|
|
|
244
258
|
regex: 'TCL'
|
|
245
259
|
device: 'tv'
|
|
246
260
|
models:
|
|
261
|
+
- regex: '(32D1820)'
|
|
262
|
+
model: '$1'
|
|
247
263
|
- regex: '(LF1V[0-9]{3})'
|
|
248
264
|
model: '$1'
|
|
249
265
|
|
|
250
266
|
# Thomson
|
|
251
267
|
Thomson:
|
|
252
|
-
regex: 'THOMSON
|
|
268
|
+
regex: 'THOMSON[,]?|THOM'
|
|
253
269
|
device: 'tv'
|
|
254
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"'
|
|
255
283
|
- regex: '(LF1V[0-9]{3})'
|
|
256
284
|
model: '$1'
|
|
257
285
|
|
|
@@ -279,4 +307,4 @@ Videoweb:
|
|
|
279
307
|
- regex: '(tv2n)'
|
|
280
308
|
model: '$1'
|
|
281
309
|
- regex: '(videowebtv)'
|
|
282
|
-
model: 'VideoWeb TV'
|
|
310
|
+
model: 'VideoWeb TV'
|
data/regexes/oss.yml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
###############
|
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
|
3
3
|
#
|
|
4
|
-
# @link
|
|
4
|
+
# @link https://matomo.org
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
|
6
6
|
###############
|
|
7
7
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
##########
|
|
32
32
|
# Windows Mobile
|
|
33
33
|
##########
|
|
34
|
-
- regex: 'Windows Phone (?:OS)
|
|
34
|
+
- regex: '(?:Windows Phone (?:OS)?|wds)[ ]?(\d+[\.\d]+)'
|
|
35
35
|
name: 'Windows Phone'
|
|
36
36
|
version: '$1'
|
|
37
37
|
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
version: '$1'
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
- regex: '(?:IEMobile|Windows Mobile)(?: (\d+[\.\d]+))?'
|
|
48
|
+
- regex: '(?:IEMobile|Windows ?Mobile)(?: (\d+[\.\d]+))?'
|
|
49
49
|
name: 'Windows Mobile'
|
|
50
50
|
version: '$1'
|
|
51
51
|
|
|
@@ -58,6 +58,19 @@
|
|
|
58
58
|
name: 'Windows RT'
|
|
59
59
|
version: '8.1'
|
|
60
60
|
|
|
61
|
+
##########
|
|
62
|
+
# Windows IoT
|
|
63
|
+
##########
|
|
64
|
+
- regex: 'Windows IoT 10.0'
|
|
65
|
+
name: 'Windows IoT'
|
|
66
|
+
version: '10'
|
|
67
|
+
|
|
68
|
+
##########
|
|
69
|
+
# KaiOS
|
|
70
|
+
##########
|
|
71
|
+
- regex: 'KAIOS(?:/(\d+[\.\d]+))?'
|
|
72
|
+
name: 'KaiOS'
|
|
73
|
+
version: '$1'
|
|
61
74
|
|
|
62
75
|
##########
|
|
63
76
|
# Custom Android Roms
|
|
@@ -78,17 +91,36 @@
|
|
|
78
91
|
name: 'MocorDroid'
|
|
79
92
|
version: '$1'
|
|
80
93
|
|
|
94
|
+
- regex: 'Fire OS(?:/(\d+[\.\d]*))?'
|
|
95
|
+
name: 'Fire OS'
|
|
96
|
+
version: '$1'
|
|
97
|
+
|
|
81
98
|
##########
|
|
82
99
|
# Android
|
|
83
100
|
##########
|
|
84
|
-
- regex: '
|
|
101
|
+
- regex: '[ ]([\d\.]+)\) AppleWebKit.*ROBLOX Android App'
|
|
102
|
+
name: 'Android'
|
|
103
|
+
version: '$1'
|
|
104
|
+
|
|
105
|
+
- regex: '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]*)'
|
|
85
106
|
name: 'Android'
|
|
86
107
|
version: '$1'
|
|
87
|
-
|
|
88
108
|
|
|
89
109
|
- regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
|
|
90
110
|
name: 'Android'
|
|
91
111
|
version: ''
|
|
112
|
+
|
|
113
|
+
- regex: '(?:TwitterAndroid).*[ /](?:[a-z]+ )?(\d+[\.\d]*)'
|
|
114
|
+
name: 'Android'
|
|
115
|
+
version: '$1'
|
|
116
|
+
|
|
117
|
+
- regex: 'FB4A.*FBSV/(\d+[\.\d]*);'
|
|
118
|
+
name: 'Android'
|
|
119
|
+
version: '$1'
|
|
120
|
+
|
|
121
|
+
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe'
|
|
122
|
+
name: 'Android'
|
|
123
|
+
version: ''
|
|
92
124
|
|
|
93
125
|
|
|
94
126
|
##########
|
|
@@ -122,9 +154,17 @@
|
|
|
122
154
|
##########
|
|
123
155
|
# Linux
|
|
124
156
|
##########
|
|
157
|
+
- regex: '(Ordissimo|webissimo3)'
|
|
158
|
+
name: 'Ordissimo'
|
|
159
|
+
version: ''
|
|
160
|
+
|
|
161
|
+
- regex: 'TOS; Linux'
|
|
162
|
+
name: 'TmaxOS'
|
|
163
|
+
version: ''
|
|
164
|
+
|
|
125
165
|
- regex: 'Maemo'
|
|
126
166
|
name: 'Maemo'
|
|
127
|
-
version: '
|
|
167
|
+
version: ''
|
|
128
168
|
|
|
129
169
|
- regex: 'Arch ?Linux(?:[ /\-](\d+[\.\d]+))?'
|
|
130
170
|
name: 'Arch Linux'
|
|
@@ -147,7 +187,7 @@
|
|
|
147
187
|
##########
|
|
148
188
|
# webOS
|
|
149
189
|
##########
|
|
150
|
-
- regex: '(?:webOS|Palm webOS)(?:/(\d+[\.\d]+))?'
|
|
190
|
+
- regex: '(?:webOS|web0S|Palm webOS)(?:/(\d+[\.\d]+))?'
|
|
151
191
|
name: 'webOS'
|
|
152
192
|
version: '$1'
|
|
153
193
|
|
|
@@ -172,79 +212,118 @@
|
|
|
172
212
|
name: 'Windows'
|
|
173
213
|
version: '10'
|
|
174
214
|
|
|
175
|
-
- regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10'
|
|
215
|
+
- regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10|win10'
|
|
176
216
|
name: 'Windows'
|
|
177
217
|
version: '10'
|
|
178
|
-
|
|
218
|
+
|
|
179
219
|
- regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
|
|
180
220
|
name: 'Windows'
|
|
181
221
|
version: '8.1'
|
|
182
222
|
|
|
183
|
-
|
|
184
223
|
- regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
|
|
185
224
|
name: 'Windows'
|
|
186
225
|
version: '8'
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
- 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'
|
|
190
228
|
name: 'Windows'
|
|
191
229
|
version: '7'
|
|
192
|
-
|
|
193
|
-
|
|
230
|
+
|
|
194
231
|
- regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
|
|
195
232
|
name: 'Windows'
|
|
196
233
|
version: 'Vista'
|
|
197
|
-
|
|
198
|
-
|
|
234
|
+
|
|
199
235
|
- regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
|
|
200
236
|
name: 'Windows'
|
|
201
237
|
version: 'Server 2003'
|
|
202
|
-
|
|
203
|
-
|
|
238
|
+
|
|
204
239
|
- regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
|
|
205
240
|
name: 'Windows'
|
|
206
241
|
version: 'XP'
|
|
207
|
-
|
|
208
|
-
|
|
242
|
+
|
|
209
243
|
- regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
|
|
210
244
|
name: 'Windows'
|
|
211
245
|
version: '2000'
|
|
212
|
-
|
|
213
|
-
|
|
246
|
+
|
|
214
247
|
- regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
|
|
215
248
|
name: 'Windows'
|
|
216
249
|
version: 'NT'
|
|
217
|
-
|
|
218
|
-
|
|
250
|
+
|
|
219
251
|
- regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
|
|
220
252
|
name: 'Windows'
|
|
221
253
|
version: 'ME'
|
|
222
|
-
|
|
223
|
-
|
|
254
|
+
|
|
224
255
|
- regex: 'CYGWIN_98-4.10|Win98|Windows 98'
|
|
225
256
|
name: 'Windows'
|
|
226
257
|
version: '98'
|
|
227
|
-
|
|
228
|
-
|
|
258
|
+
|
|
229
259
|
- regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
|
|
230
260
|
name: 'Windows'
|
|
231
261
|
version: '95'
|
|
232
|
-
|
|
233
|
-
|
|
262
|
+
|
|
234
263
|
- regex: 'Windows 3.1'
|
|
235
264
|
name: 'Windows'
|
|
236
265
|
version: '3.1'
|
|
237
|
-
|
|
238
|
-
|
|
266
|
+
|
|
267
|
+
- regex: 'FBW.*FBSV/(\d+[\.\d]*);'
|
|
268
|
+
name: 'Windows'
|
|
269
|
+
version: '$1'
|
|
270
|
+
|
|
239
271
|
- regex: 'Windows'
|
|
240
272
|
name: 'Windows'
|
|
241
273
|
version: ''
|
|
242
|
-
|
|
243
|
-
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
##########
|
|
277
|
+
# Haiku OS
|
|
278
|
+
##########
|
|
279
|
+
- regex: 'Haiku'
|
|
280
|
+
name: 'Haiku OS'
|
|
281
|
+
version: ''
|
|
282
|
+
|
|
244
283
|
|
|
245
284
|
##########
|
|
246
285
|
# iOS
|
|
247
286
|
##########
|
|
287
|
+
- regex: 'CFNetwork/889'
|
|
288
|
+
name: 'iOS'
|
|
289
|
+
version: '11.1'
|
|
290
|
+
|
|
291
|
+
- regex: 'CFNetwork/887.*(x86_64)'
|
|
292
|
+
name: 'Mac'
|
|
293
|
+
version: '10.13'
|
|
294
|
+
|
|
295
|
+
- regex: 'CFNetwork/887'
|
|
296
|
+
name: 'iOS'
|
|
297
|
+
version: '11.0'
|
|
298
|
+
|
|
299
|
+
- regex: 'CFNetwork/811.*(x86_64)'
|
|
300
|
+
name: 'Mac'
|
|
301
|
+
version: '10.12'
|
|
302
|
+
|
|
303
|
+
- regex: 'CFNetwork/811'
|
|
304
|
+
name: 'iOS'
|
|
305
|
+
version: '10.3'
|
|
306
|
+
|
|
307
|
+
- regex: 'CFNetwork/808\.3'
|
|
308
|
+
name: 'iOS'
|
|
309
|
+
version: '10.3'
|
|
310
|
+
|
|
311
|
+
- regex: 'CFNetwork/808\.2'
|
|
312
|
+
name: 'iOS'
|
|
313
|
+
version: '10.2'
|
|
314
|
+
|
|
315
|
+
- regex: 'CFNetwork/808\.1'
|
|
316
|
+
name: 'iOS'
|
|
317
|
+
version: '10.1'
|
|
318
|
+
|
|
319
|
+
- regex: 'CFNetwork/808\.0'
|
|
320
|
+
name: 'iOS'
|
|
321
|
+
version: '10.0'
|
|
322
|
+
|
|
323
|
+
- regex: 'CFNetwork/808'
|
|
324
|
+
name: 'iOS'
|
|
325
|
+
version: '10'
|
|
326
|
+
|
|
248
327
|
- regex: 'CFNetwork/758\.4\.3'
|
|
249
328
|
name: 'iOS'
|
|
250
329
|
version: '9.3.2'
|
|
@@ -341,16 +420,31 @@
|
|
|
341
420
|
name: 'iOS'
|
|
342
421
|
version: '$1'
|
|
343
422
|
|
|
423
|
+
- regex: 'FBIOS.*FBSV/(\d+[\.\d]*);'
|
|
424
|
+
name: 'iOS'
|
|
425
|
+
version: '$1'
|
|
426
|
+
|
|
344
427
|
- regex: '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
|
345
428
|
name: 'iOS'
|
|
346
429
|
version: '$1'
|
|
347
430
|
|
|
431
|
+
- regex: 'Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|i[cC]atcher|RSSRadio/'
|
|
432
|
+
name: 'iOS'
|
|
433
|
+
version: ''
|
|
434
|
+
|
|
435
|
+
- regex: 'iTunes-(iPod|iPad|iPhone)/(?:[\d\.]+)'
|
|
436
|
+
name: 'iOS'
|
|
437
|
+
version: ''
|
|
348
438
|
|
|
349
439
|
|
|
350
440
|
##########
|
|
351
441
|
# Mac
|
|
352
442
|
##########
|
|
353
443
|
|
|
444
|
+
- regex: 'CFNetwork/807'
|
|
445
|
+
name: 'Mac'
|
|
446
|
+
version: '10.12'
|
|
447
|
+
|
|
354
448
|
- regex: 'CFNetwork/760'
|
|
355
449
|
name: 'Mac'
|
|
356
450
|
version: '10.11'
|
|
@@ -391,7 +485,7 @@
|
|
|
391
485
|
name: 'Mac'
|
|
392
486
|
version: '10.2'
|
|
393
487
|
|
|
394
|
-
- regex: 'Mac OS X(?: (?:Version )?(\d+(?:[_\.]\d+)+))?'
|
|
488
|
+
- regex: 'Mac[ +]OS[ +]X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?'
|
|
395
489
|
name: 'Mac'
|
|
396
490
|
version: '$1'
|
|
397
491
|
|
|
@@ -399,7 +493,7 @@
|
|
|
399
493
|
name: 'Mac'
|
|
400
494
|
version: '$1'
|
|
401
495
|
|
|
402
|
-
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC'
|
|
496
|
+
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook'
|
|
403
497
|
name: 'Mac'
|
|
404
498
|
version: ''
|
|
405
499
|
|
|
@@ -408,7 +502,7 @@
|
|
|
408
502
|
##########
|
|
409
503
|
# ChromeOS
|
|
410
504
|
##########
|
|
411
|
-
- regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)'
|
|
505
|
+
- regex: 'CrOS [a-z0-9_]+ .* Chrome/(\d+[\.\d]+)'
|
|
412
506
|
name: 'Chrome OS'
|
|
413
507
|
version: '$1'
|
|
414
508
|
|
|
@@ -435,13 +529,9 @@
|
|
|
435
529
|
- regex: 'BlackBerry'
|
|
436
530
|
name: 'BlackBerry OS'
|
|
437
531
|
version: ''
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
# Haiku OS
|
|
442
|
-
##########
|
|
443
|
-
- regex: 'Haiku'
|
|
444
|
-
name: 'Haiku OS'
|
|
532
|
+
|
|
533
|
+
- regex: 'bPod'
|
|
534
|
+
name: 'BlackBerry OS'
|
|
445
535
|
version: ''
|
|
446
536
|
|
|
447
537
|
|
|
@@ -645,11 +735,10 @@
|
|
|
645
735
|
##########
|
|
646
736
|
# Gaming Console
|
|
647
737
|
##########
|
|
648
|
-
- regex: 'Nintendo Wii'
|
|
738
|
+
- regex: 'Nintendo (Wii|Switch)'
|
|
649
739
|
name: 'Nintendo'
|
|
650
|
-
version: '
|
|
651
|
-
|
|
652
|
-
|
|
740
|
+
version: '$1'
|
|
741
|
+
|
|
653
742
|
- regex: 'PlayStation ?([3|4])'
|
|
654
743
|
name: 'PlayStation'
|
|
655
744
|
version: '$1'
|