device_detector 1.0.2 → 1.0.6
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 -6
- data/CHANGELOG.md +11 -0
- data/README.md +8 -7
- data/Rakefile +7 -4
- data/device_detector.gemspec +1 -0
- data/lib/device_detector/bot.rb +2 -2
- data/lib/device_detector/browser.rb +364 -0
- data/lib/device_detector/client.rb +11 -2
- data/lib/device_detector/device.rb +1168 -22
- data/lib/device_detector/memory_cache.rb +5 -5
- 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 +148 -116
- data/lib/device_detector/parser.rb +22 -9
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector/version_extractor.rb +10 -2
- data/lib/device_detector.rb +73 -40
- data/regexes/bots.yml +909 -59
- data/regexes/client/browser_engine.yml +14 -2
- data/regexes/client/browsers.yml +1356 -241
- data/regexes/client/feed_readers.yml +10 -10
- data/regexes/client/libraries.yml +75 -1
- data/regexes/client/mediaplayers.yml +39 -3
- data/regexes/client/mobile_apps.yml +524 -45
- data/regexes/client/pim.yml +55 -2
- data/regexes/device/cameras.yml +6 -6
- data/regexes/device/car_browsers.yml +23 -3
- data/regexes/device/consoles.yml +9 -3
- data/regexes/device/mobiles.yml +16903 -3199
- data/regexes/device/notebooks.yml +114 -0
- data/regexes/device/portable_media_player.yml +20 -3
- data/regexes/device/shell_tv.yml +117 -0
- data/regexes/device/televisions.yml +440 -35
- data/regexes/oss.yml +603 -165
- data/regexes/vendorfragments.yml +6 -2
- data/spec/device_detector/concrete_user_agent_spec.rb +38 -51
- data/spec/device_detector/detector_fixtures_spec.rb +36 -37
- data/spec/device_detector/device_spec.rb +52 -56
- data/spec/device_detector/memory_cache_spec.rb +19 -19
- 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 +26 -26
- data/spec/fixtures/client/browser.yml +2617 -555
- data/spec/fixtures/client/feed_reader.yml +34 -52
- data/spec/fixtures/client/library.yml +129 -38
- data/spec/fixtures/client/mediaplayer.yml +59 -28
- data/spec/fixtures/client/mobile_app.yml +589 -20
- data/spec/fixtures/client/pim.yml +92 -19
- data/spec/fixtures/detector/bots.yml +1749 -458
- data/spec/fixtures/detector/camera.yml +30 -24
- data/spec/fixtures/detector/car_browser.yml +199 -3
- data/spec/fixtures/detector/console.yml +107 -45
- data/spec/fixtures/detector/desktop.yml +3216 -758
- data/spec/fixtures/detector/feature_phone.yml +935 -181
- data/spec/fixtures/detector/feed_reader.yml +181 -193
- data/spec/fixtures/detector/mediaplayer.yml +157 -60
- data/spec/fixtures/detector/mobile_apps.yml +914 -136
- data/spec/fixtures/detector/peripheral.yml +271 -0
- data/spec/fixtures/detector/phablet.yml +5593 -1533
- data/spec/fixtures/detector/portable_media_player.yml +398 -32
- data/spec/fixtures/detector/smart_display.yml +183 -9
- data/spec/fixtures/detector/smart_speaker.yml +60 -0
- data/spec/fixtures/detector/smartphone-1.yml +3930 -4239
- data/spec/fixtures/detector/smartphone-10.yml +3985 -7366
- data/spec/fixtures/detector/smartphone-11.yml +5083 -3784
- data/spec/fixtures/detector/smartphone-12.yml +8989 -0
- data/spec/fixtures/detector/smartphone-13.yml +9412 -0
- data/spec/fixtures/detector/smartphone-14.yml +9477 -0
- data/spec/fixtures/detector/smartphone-15.yml +9281 -0
- data/spec/fixtures/detector/smartphone-16.yml +9678 -0
- data/spec/fixtures/detector/smartphone-17.yml +9965 -0
- data/spec/fixtures/detector/smartphone-18.yml +9806 -0
- data/spec/fixtures/detector/smartphone-19.yml +9965 -0
- data/spec/fixtures/detector/smartphone-2.yml +6670 -4375
- data/spec/fixtures/detector/smartphone-20.yml +9710 -0
- data/spec/fixtures/detector/smartphone-21.yml +8693 -0
- data/spec/fixtures/detector/smartphone-22.yml +10178 -0
- data/spec/fixtures/detector/smartphone-23.yml +9453 -0
- data/spec/fixtures/detector/smartphone-24.yml +9843 -0
- data/spec/fixtures/detector/smartphone-25.yml +9703 -0
- data/spec/fixtures/detector/smartphone-26.yml +10007 -0
- data/spec/fixtures/detector/smartphone-27.yml +4927 -0
- data/spec/fixtures/detector/smartphone-3.yml +4656 -4711
- data/spec/fixtures/detector/smartphone-4.yml +3518 -4479
- data/spec/fixtures/detector/smartphone-5.yml +3805 -4803
- data/spec/fixtures/detector/smartphone-6.yml +3745 -4693
- data/spec/fixtures/detector/smartphone-7.yml +3721 -4645
- data/spec/fixtures/detector/smartphone-8.yml +4564 -4699
- data/spec/fixtures/detector/smartphone-9.yml +3897 -4888
- data/spec/fixtures/detector/smartphone.yml +3154 -4141
- data/spec/fixtures/detector/tablet-1.yml +4742 -4576
- data/spec/fixtures/detector/tablet-2.yml +3803 -4731
- data/spec/fixtures/detector/tablet-3.yml +6210 -2309
- data/spec/fixtures/detector/tablet-4.yml +9062 -0
- data/spec/fixtures/detector/tablet-5.yml +9273 -0
- data/spec/fixtures/detector/tablet-6.yml +4588 -0
- data/spec/fixtures/detector/tablet.yml +3629 -4613
- data/spec/fixtures/detector/tv-1.yml +2501 -0
- data/spec/fixtures/detector/tv.yml +8856 -2064
- data/spec/fixtures/detector/unknown.yml +412 -587
- data/spec/fixtures/detector/wearable.yml +915 -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 +1392 -21
- data/spec/fixtures/parser/vendorfragments.yml +57 -51
- metadata +70 -4
data/regexes/oss.yml
CHANGED
|
@@ -1,26 +1,46 @@
|
|
|
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
|
|
|
8
8
|
##########
|
|
9
|
-
#
|
|
9
|
+
# GridOS (https://web.archive.org/web/20111123141630/http://fusiongarage.com/grid-os/about)
|
|
10
10
|
##########
|
|
11
|
-
- regex: '
|
|
12
|
-
name: '
|
|
11
|
+
- regex: 'Grid OS (\d+[\.\d]+)'
|
|
12
|
+
name: 'GridOS'
|
|
13
13
|
version: '$1'
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
##########
|
|
16
|
+
# Caixa Mágica (https://caixamagica.pt/)
|
|
17
|
+
##########
|
|
18
|
+
- regex: 'CaixaMagica'
|
|
19
|
+
name: 'Caixa Mágica'
|
|
20
|
+
version: ''
|
|
16
21
|
|
|
17
22
|
##########
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- regex: '
|
|
21
|
-
name: '
|
|
23
|
+
# Mageia (https://www.mageia.org/en/)
|
|
24
|
+
##########
|
|
25
|
+
- regex: 'Mageia; Linux'
|
|
26
|
+
name: 'Mageia'
|
|
22
27
|
version: ''
|
|
23
28
|
|
|
29
|
+
##########
|
|
30
|
+
# Whale OS (https://www.zeasn.com/)
|
|
31
|
+
##########
|
|
32
|
+
- regex: '(?:WH|WhaleTV/)(\d+[\.\d]+)'
|
|
33
|
+
name: 'Whale OS'
|
|
34
|
+
version: '$1'
|
|
35
|
+
|
|
36
|
+
##########
|
|
37
|
+
# Tizen
|
|
38
|
+
##########
|
|
39
|
+
- regex: 'Tizen[ /]?(\d+[\.\d]+)?'
|
|
40
|
+
name: 'Tizen'
|
|
41
|
+
version: '$1'
|
|
42
|
+
|
|
43
|
+
|
|
24
44
|
##########
|
|
25
45
|
# YunOS (Android based)
|
|
26
46
|
##########
|
|
@@ -31,11 +51,14 @@
|
|
|
31
51
|
##########
|
|
32
52
|
# Windows Mobile
|
|
33
53
|
##########
|
|
34
|
-
- regex: 'Windows Phone
|
|
54
|
+
- regex: 'Windows Phone;FBSV/(\d+[\.\d]+)'
|
|
35
55
|
name: 'Windows Phone'
|
|
36
56
|
version: '$1'
|
|
37
|
-
|
|
38
|
-
|
|
57
|
+
|
|
58
|
+
- regex: '(?:Windows Phone (?:OS)?|wds)[ /]?(\d+[\.\d]+)'
|
|
59
|
+
name: 'Windows Phone'
|
|
60
|
+
version: '$1'
|
|
61
|
+
|
|
39
62
|
- regex: 'XBLWP7|Windows Phone'
|
|
40
63
|
name: 'Windows Phone'
|
|
41
64
|
version: ''
|
|
@@ -43,17 +66,15 @@
|
|
|
43
66
|
- regex: 'Windows CE(?: (\d+[\.\d]+))?'
|
|
44
67
|
name: 'Windows CE'
|
|
45
68
|
version: '$1'
|
|
46
|
-
|
|
47
|
-
|
|
69
|
+
|
|
48
70
|
- regex: '(?:IEMobile|Windows ?Mobile)(?: (\d+[\.\d]+))?'
|
|
49
71
|
name: 'Windows Mobile'
|
|
50
72
|
version: '$1'
|
|
51
|
-
|
|
52
|
-
|
|
73
|
+
|
|
53
74
|
- regex: 'Windows NT 6.2; ARM;'
|
|
54
75
|
name: 'Windows RT'
|
|
55
76
|
version: ''
|
|
56
|
-
|
|
77
|
+
|
|
57
78
|
- regex: 'Windows NT 6.3; ARM;'
|
|
58
79
|
name: 'Windows RT'
|
|
59
80
|
version: '8.1'
|
|
@@ -75,6 +96,10 @@
|
|
|
75
96
|
##########
|
|
76
97
|
# Custom Android Roms
|
|
77
98
|
##########
|
|
99
|
+
- regex: 'HarmonyOS(?:[/ ](\d+[\.\d]+))?'
|
|
100
|
+
name: 'HarmonyOS'
|
|
101
|
+
version: '$1'
|
|
102
|
+
|
|
78
103
|
- regex: 'RazoDroiD(?: v(\d+[\.\d]*))?'
|
|
79
104
|
name: 'RazoDroiD'
|
|
80
105
|
version: '$1'
|
|
@@ -95,15 +120,50 @@
|
|
|
95
120
|
name: 'Fire OS'
|
|
96
121
|
version: '$1'
|
|
97
122
|
|
|
123
|
+
- regex: 'AFTSO001'
|
|
124
|
+
name: 'Fire OS'
|
|
125
|
+
version: '7'
|
|
126
|
+
|
|
127
|
+
- regex: 'FydeOS'
|
|
128
|
+
name: 'FydeOS'
|
|
129
|
+
version: ''
|
|
130
|
+
|
|
98
131
|
##########
|
|
99
132
|
# Android
|
|
100
133
|
##########
|
|
101
|
-
- regex: '(?:
|
|
134
|
+
- regex: '(?:Podbean|Podimo)(?:.+)?/Android'
|
|
135
|
+
name: 'Android'
|
|
136
|
+
version: ''
|
|
137
|
+
|
|
138
|
+
- regex: 'Pinterest for Android/.+; (\d(?:[\d\.]+)?)\)$'
|
|
139
|
+
name: 'Android'
|
|
140
|
+
version: '$1'
|
|
141
|
+
|
|
142
|
+
- regex: 'Android; (\d+[\.\d]*); Mobile;'
|
|
143
|
+
name: 'Android'
|
|
144
|
+
version: '$1'
|
|
145
|
+
|
|
146
|
+
- regex: '[ ]([\d\.]+)\) AppleWebKit.*ROBLOX Android App'
|
|
147
|
+
name: 'Android'
|
|
148
|
+
version: '$1'
|
|
149
|
+
|
|
150
|
+
- regex: '(?:(?:Orca-)?Android|Adr)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
|
|
151
|
+
name: 'Android'
|
|
152
|
+
version: '$1'
|
|
153
|
+
|
|
154
|
+
- regex: '(?:Allview_TX1_Quasar|Cosmote_My_mini_Tab) (\d+[\.\d]*)'
|
|
155
|
+
name: 'Android'
|
|
156
|
+
version: '$1'
|
|
157
|
+
|
|
158
|
+
- regex: 'Android ?(?:jelly bean|Kit Kat|S.O. Ginger Bread|The FireCyano|:) (\d+[\.\d]*)'
|
|
159
|
+
name: 'Android'
|
|
160
|
+
version: '$1'
|
|
161
|
+
|
|
162
|
+
- regex: '(?:Orca-Android|FB4A).*FBSV/(\d+[\.\d]*);'
|
|
102
163
|
name: 'Android'
|
|
103
164
|
version: '$1'
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
- regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
|
|
165
|
+
|
|
166
|
+
- regex: ' Adr |Android|Silk-Accelerated=[a-z]{4,5}'
|
|
107
167
|
name: 'Android'
|
|
108
168
|
version: ''
|
|
109
169
|
|
|
@@ -111,11 +171,26 @@
|
|
|
111
171
|
name: 'Android'
|
|
112
172
|
version: '$1'
|
|
113
173
|
|
|
114
|
-
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe'
|
|
174
|
+
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe|.+K_?Android_?TV_|Sonos/.+\(ACR_'
|
|
115
175
|
name: 'Android'
|
|
116
176
|
version: ''
|
|
117
|
-
|
|
118
|
-
|
|
177
|
+
|
|
178
|
+
- regex: 'Linux; Andr0id[; ](\d+[\.\d]*)'
|
|
179
|
+
name: 'Android'
|
|
180
|
+
version: '$1'
|
|
181
|
+
|
|
182
|
+
# Inverted Android
|
|
183
|
+
- regex: 'Linux; diordnA[; ](\d+[\.\d]*)'
|
|
184
|
+
name: 'Android'
|
|
185
|
+
version: '$1'
|
|
186
|
+
|
|
187
|
+
##########
|
|
188
|
+
## Sailfish OS
|
|
189
|
+
###########
|
|
190
|
+
- regex: 'Sailfish|Jolla'
|
|
191
|
+
name: 'Sailfish OS'
|
|
192
|
+
version: ''
|
|
193
|
+
|
|
119
194
|
##########
|
|
120
195
|
# AmigaOS
|
|
121
196
|
##########
|
|
@@ -144,9 +219,49 @@
|
|
|
144
219
|
name: 'MTK / Nucleus'
|
|
145
220
|
version: '$1'
|
|
146
221
|
|
|
222
|
+
##########
|
|
223
|
+
# MRE / MAUI Runtime Environment
|
|
224
|
+
##########
|
|
225
|
+
- regex: 'MRE/(\d+)\.(\d+).*;MAUI'
|
|
226
|
+
name: 'MRE'
|
|
227
|
+
version: '$1.$2'
|
|
228
|
+
|
|
147
229
|
##########
|
|
148
230
|
# Linux
|
|
149
231
|
##########
|
|
232
|
+
# DVKBuntu (https://www.dvkbuntu.org/)
|
|
233
|
+
- regex: 'dvkbuntu'
|
|
234
|
+
name: 'DVKBuntu'
|
|
235
|
+
version: ''
|
|
236
|
+
|
|
237
|
+
# Lumin OS (https://developer.magicleap.com/en-us/learn/guides/lumin-os-release-notes-summary)
|
|
238
|
+
- regex: 'Helio/(\d+[\.\d]+)'
|
|
239
|
+
name: 'Lumin OS'
|
|
240
|
+
version: '$1'
|
|
241
|
+
|
|
242
|
+
# HasCodingOS (https://forum.hascoding.com/HasCodingOS)
|
|
243
|
+
- regex: 'HasCodingOs (\d+[\.\d]+)'
|
|
244
|
+
name: 'HasCodingOS'
|
|
245
|
+
version: '$1'
|
|
246
|
+
|
|
247
|
+
# PCLinuxOS (https://www.pclinuxos.com/)
|
|
248
|
+
- regex: 'PCLinuxOS/(\d+[\.\d]+)'
|
|
249
|
+
name: 'PCLinuxOS'
|
|
250
|
+
version: '$1'
|
|
251
|
+
|
|
252
|
+
- regex: '(Ordissimo|webissimo3)'
|
|
253
|
+
name: 'Ordissimo'
|
|
254
|
+
version: ''
|
|
255
|
+
|
|
256
|
+
# Fenix (https://fenixlinux.com/)
|
|
257
|
+
- regex: '(?:Win|Sistema )Fenix'
|
|
258
|
+
name: 'Fenix'
|
|
259
|
+
version: ''
|
|
260
|
+
|
|
261
|
+
- regex: 'TOS; Linux'
|
|
262
|
+
name: 'TmaxOS'
|
|
263
|
+
version: ''
|
|
264
|
+
|
|
150
265
|
- regex: 'Maemo'
|
|
151
266
|
name: 'Maemo'
|
|
152
267
|
version: ''
|
|
@@ -163,16 +278,44 @@
|
|
|
163
278
|
name: '$1'
|
|
164
279
|
version: '$2'
|
|
165
280
|
|
|
166
|
-
- regex: '
|
|
281
|
+
- regex: 'Deepin[ /](\d+[\.\d]+)'
|
|
282
|
+
name: 'Deepin'
|
|
283
|
+
version: '$1'
|
|
284
|
+
|
|
285
|
+
- regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Freebox)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[\.\d]+))?'
|
|
167
286
|
name: '$1'
|
|
168
287
|
version: '$2'
|
|
169
288
|
|
|
289
|
+
- regex: 'OS ROSA; Linux'
|
|
290
|
+
name: 'Rosa'
|
|
291
|
+
version: ''
|
|
292
|
+
|
|
170
293
|
# generic linux match -> end of file
|
|
171
294
|
|
|
172
295
|
##########
|
|
173
296
|
# webOS
|
|
174
297
|
##########
|
|
175
|
-
- regex: '(
|
|
298
|
+
- regex: 'WEBOS(\d+[\.\d]+)'
|
|
299
|
+
name: 'webOS'
|
|
300
|
+
version: '$1'
|
|
301
|
+
|
|
302
|
+
- regex: 'Web0S; Linux/SmartTV.+Chrome/68'
|
|
303
|
+
name: 'webOS'
|
|
304
|
+
version: '5'
|
|
305
|
+
- regex: 'Web0S; Linux/SmartTV.+Chrome/53'
|
|
306
|
+
name: 'webOS'
|
|
307
|
+
version: '4'
|
|
308
|
+
- regex: 'Web0S; Linux/SmartTV.+Chrome/38'
|
|
309
|
+
name: 'webOS'
|
|
310
|
+
version: '3'
|
|
311
|
+
- regex: 'Web0S; Linux/SmartTV.+Safari/538'
|
|
312
|
+
name: 'webOS'
|
|
313
|
+
version: '2'
|
|
314
|
+
- regex: 'Web0S; Linux/SmartTV.+Safari/537'
|
|
315
|
+
name: 'webOS'
|
|
316
|
+
version: '1'
|
|
317
|
+
|
|
318
|
+
- regex: '(?:Web0S; .*WEBOS|webOS|web0S|Palm webOS|hpwOS)(?:[/]?(\d+[\.\d]+))?'
|
|
176
319
|
name: 'webOS'
|
|
177
320
|
version: '$1'
|
|
178
321
|
|
|
@@ -184,88 +327,86 @@
|
|
|
184
327
|
name: 'palmOS'
|
|
185
328
|
version: '$1'
|
|
186
329
|
|
|
187
|
-
|
|
188
330
|
- regex: 'MorphOS(?:[ /](\d+[\.\d]+))?'
|
|
189
331
|
name: 'MorphOS'
|
|
190
332
|
version: '$1'
|
|
191
333
|
|
|
192
|
-
|
|
334
|
+
|
|
193
335
|
##########
|
|
194
336
|
# Windows
|
|
195
337
|
##########
|
|
338
|
+
- regex: 'FBW.+FBSV/(\d+[\.\d]*);'
|
|
339
|
+
name: 'Windows'
|
|
340
|
+
version: '$1'
|
|
341
|
+
|
|
342
|
+
- regex: 'mingw32'
|
|
343
|
+
name: 'Windows'
|
|
344
|
+
version: ''
|
|
345
|
+
|
|
346
|
+
- regex: 'Windows/(\d+\.\d+)'
|
|
347
|
+
name: 'Windows'
|
|
348
|
+
version: '$1'
|
|
349
|
+
|
|
196
350
|
- regex: 'CYGWIN_NT-10.0|Windows NT 10.0|Windows 10'
|
|
197
351
|
name: 'Windows'
|
|
198
352
|
version: '10'
|
|
199
353
|
|
|
200
|
-
- regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10'
|
|
354
|
+
- regex: 'CYGWIN_NT-6.4|Windows NT 6.4|Windows 10|win10'
|
|
201
355
|
name: 'Windows'
|
|
202
356
|
version: '10'
|
|
203
|
-
|
|
357
|
+
|
|
204
358
|
- regex: 'CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1'
|
|
205
359
|
name: 'Windows'
|
|
206
360
|
version: '8.1'
|
|
207
361
|
|
|
208
|
-
|
|
209
362
|
- regex: 'CYGWIN_NT-6.2|Windows NT 6.2|Windows 8'
|
|
210
363
|
name: 'Windows'
|
|
211
364
|
version: '8'
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
- regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7'
|
|
365
|
+
|
|
366
|
+
- regex: 'CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7'
|
|
215
367
|
name: 'Windows'
|
|
216
368
|
version: '7'
|
|
217
|
-
|
|
218
|
-
|
|
369
|
+
|
|
219
370
|
- regex: 'CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista'
|
|
220
371
|
name: 'Windows'
|
|
221
372
|
version: 'Vista'
|
|
222
|
-
|
|
223
|
-
|
|
373
|
+
|
|
224
374
|
- regex: 'CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64'
|
|
225
375
|
name: 'Windows'
|
|
226
376
|
version: 'Server 2003'
|
|
227
|
-
|
|
228
|
-
|
|
377
|
+
|
|
229
378
|
- regex: 'CYGWIN_NT-5.1|Windows NT 5.1|Windows XP'
|
|
230
379
|
name: 'Windows'
|
|
231
380
|
version: 'XP'
|
|
232
|
-
|
|
233
|
-
|
|
381
|
+
|
|
234
382
|
- regex: 'CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000'
|
|
235
383
|
name: 'Windows'
|
|
236
384
|
version: '2000'
|
|
237
|
-
|
|
238
|
-
|
|
385
|
+
|
|
239
386
|
- regex: 'CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT'
|
|
240
387
|
name: 'Windows'
|
|
241
388
|
version: 'NT'
|
|
242
|
-
|
|
243
|
-
|
|
389
|
+
|
|
244
390
|
- regex: 'CYGWIN_ME-4.90|Win 9x 4.90|Windows ME'
|
|
245
391
|
name: 'Windows'
|
|
246
392
|
version: 'ME'
|
|
247
|
-
|
|
248
|
-
|
|
393
|
+
|
|
249
394
|
- regex: 'CYGWIN_98-4.10|Win98|Windows 98'
|
|
250
395
|
name: 'Windows'
|
|
251
396
|
version: '98'
|
|
252
|
-
|
|
253
|
-
|
|
397
|
+
|
|
254
398
|
- regex: 'CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95'
|
|
255
399
|
name: 'Windows'
|
|
256
400
|
version: '95'
|
|
257
|
-
|
|
258
|
-
|
|
401
|
+
|
|
259
402
|
- regex: 'Windows 3.1'
|
|
260
403
|
name: 'Windows'
|
|
261
404
|
version: '3.1'
|
|
262
|
-
|
|
263
|
-
|
|
405
|
+
|
|
264
406
|
- regex: 'Windows'
|
|
265
407
|
name: 'Windows'
|
|
266
408
|
version: ''
|
|
267
409
|
|
|
268
|
-
|
|
269
410
|
##########
|
|
270
411
|
# Haiku OS
|
|
271
412
|
##########
|
|
@@ -273,27 +414,147 @@
|
|
|
273
414
|
name: 'Haiku OS'
|
|
274
415
|
version: ''
|
|
275
416
|
|
|
276
|
-
|
|
417
|
+
##########
|
|
418
|
+
# tvOS (https://developer.apple.com/tvos/)
|
|
419
|
+
##########
|
|
420
|
+
- regex: 'Apple TV.*CPU (?:iPhone )?OS ((?:9|1[0-5])_\d+(?:[_\.]\d+)*)'
|
|
421
|
+
name: 'tvOS'
|
|
422
|
+
version: '$1'
|
|
423
|
+
|
|
424
|
+
- regex: 'iOS(?:; |/)((?:9|1[0-5]).\d+(?:[_\.]\d+)*) (?:model/)?AppleTV'
|
|
425
|
+
name: 'tvOS'
|
|
426
|
+
version: '$1'
|
|
427
|
+
|
|
428
|
+
##########
|
|
429
|
+
# watchOS (https://developer.apple.com/watchos/)
|
|
430
|
+
##########
|
|
431
|
+
- regex: '(?:Watch1,[12]/|Watch OS,|watchOS[ /])(\d+[\.\d]*)'
|
|
432
|
+
name: 'watchOS'
|
|
433
|
+
version: '$1'
|
|
434
|
+
|
|
435
|
+
##########
|
|
436
|
+
# iPadOS (https://www.apple.com/ipados/)
|
|
437
|
+
##########
|
|
438
|
+
- regex: 'FBMD/iPad;.*FBSV/ ?(1[345]).(\d+[\.\d]*);'
|
|
439
|
+
name: 'iPadOS'
|
|
440
|
+
version: '$1.$2'
|
|
441
|
+
|
|
442
|
+
- regex: 'iPad/(1[345]).(\d+[\.\d]*)'
|
|
443
|
+
name: 'iPadOS'
|
|
444
|
+
version: '$1.$2'
|
|
445
|
+
|
|
446
|
+
- regex: 'iPad.+CPU OS ((1[345])+(?:[_\.]\d+)*)'
|
|
447
|
+
name: 'iPadOS'
|
|
448
|
+
version: '$1'
|
|
449
|
+
|
|
450
|
+
- regex: 'iOS/(1[345]).(\d+[\.\d]*).+Apple/iPad'
|
|
451
|
+
name: 'iPadOS'
|
|
452
|
+
version: '$1.$2'
|
|
453
|
+
|
|
277
454
|
##########
|
|
278
455
|
# iOS
|
|
279
456
|
##########
|
|
280
|
-
- regex: '
|
|
457
|
+
- regex: 'iPad/([89]|1[012]).(\d+[\.\d]*)'
|
|
281
458
|
name: 'iOS'
|
|
282
|
-
version: '
|
|
459
|
+
version: '$1.$2'
|
|
283
460
|
|
|
284
|
-
- regex: '
|
|
285
|
-
name: '
|
|
286
|
-
version: '
|
|
461
|
+
- regex: 'Pinterest for iOS/.+; (\d(?:[\d\.]+)?)\)$'
|
|
462
|
+
name: 'iOS'
|
|
463
|
+
version: '$1'
|
|
287
464
|
|
|
288
|
-
- regex: 'CFNetwork/
|
|
465
|
+
- regex: 'CFNetwork/.+ Darwin/21.0.0(?!.*x86_64)'
|
|
289
466
|
name: 'iOS'
|
|
290
|
-
version: '
|
|
467
|
+
version: '15.0'
|
|
291
468
|
|
|
292
|
-
- regex: 'CFNetwork/
|
|
293
|
-
name: '
|
|
294
|
-
version: '
|
|
469
|
+
- regex: 'CFNetwork/.+ Darwin/20.6.0(?!.*x86_64)'
|
|
470
|
+
name: 'iOS'
|
|
471
|
+
version: '14.7'
|
|
472
|
+
|
|
473
|
+
- regex: 'CFNetwork/.+ Darwin/20.5.0(?!.*x86_64)'
|
|
474
|
+
name: 'iOS'
|
|
475
|
+
version: '14.6'
|
|
476
|
+
|
|
477
|
+
- regex: 'CFNetwork/.+ Darwin/20.4.0(?!.*x86_64)'
|
|
478
|
+
name: 'iOS'
|
|
479
|
+
version: '14.5'
|
|
480
|
+
|
|
481
|
+
- regex: 'CFNetwork/.+ Darwin/20.3.0(?!.*x86_64)'
|
|
482
|
+
name: 'iOS'
|
|
483
|
+
version: '14.4'
|
|
484
|
+
|
|
485
|
+
- regex: 'CFNetwork/.+ Darwin/20.2.0(?!.*x86_64)'
|
|
486
|
+
name: 'iOS'
|
|
487
|
+
version: '14.3'
|
|
488
|
+
|
|
489
|
+
- regex: 'CFNetwork/.+ Darwin/20.1.0(?!.*x86_64)'
|
|
490
|
+
name: 'iOS'
|
|
491
|
+
version: '14.2'
|
|
492
|
+
|
|
493
|
+
- regex: 'CFNetwork/.+ Darwin/20.0.0(?!.*x86_64)'
|
|
494
|
+
name: 'iOS'
|
|
495
|
+
version: '14.0'
|
|
496
|
+
|
|
497
|
+
- regex: 'CFNetwork/.+ Darwin/19.6.0(?!.*x86_64)'
|
|
498
|
+
name: 'iOS'
|
|
499
|
+
version: '13.6'
|
|
500
|
+
|
|
501
|
+
- regex: 'CFNetwork/.+ Darwin/19.5.0(?!.*x86_64)'
|
|
502
|
+
name: 'iOS'
|
|
503
|
+
version: '13.5'
|
|
504
|
+
|
|
505
|
+
- regex: 'CFNetwork/.+ Darwin/19.4.0(?!.*x86_64)'
|
|
506
|
+
name: 'iOS'
|
|
507
|
+
version: '13.4'
|
|
508
|
+
|
|
509
|
+
- regex: 'CFNetwork/.+ Darwin/19.3.0(?!.*x86_64)'
|
|
510
|
+
name: 'iOS'
|
|
511
|
+
version: '13.3.1'
|
|
512
|
+
|
|
513
|
+
- regex: 'CFNetwork/.+ Darwin/19.2.0(?!.*x86_64)'
|
|
514
|
+
name: 'iOS'
|
|
515
|
+
version: '13.3'
|
|
516
|
+
|
|
517
|
+
- regex: 'CFNetwork/.+ Darwin/19.0.0(?!.*x86_64)'
|
|
518
|
+
name: 'iOS'
|
|
519
|
+
version: '13.0'
|
|
520
|
+
|
|
521
|
+
- regex: 'CFNetwork/.+ Darwin/18.7.0(?!.*x86_64)'
|
|
522
|
+
name: 'iOS'
|
|
523
|
+
version: '12.4'
|
|
524
|
+
|
|
525
|
+
- regex: 'CFNetwork/.+ Darwin/18.6.0(?!.*x86_64)'
|
|
526
|
+
name: 'iOS'
|
|
527
|
+
version: '12.3'
|
|
528
|
+
|
|
529
|
+
- regex: 'CFNetwork/.+ Darwin/18.5.0(?!.*x86_64)'
|
|
530
|
+
name: 'iOS'
|
|
531
|
+
version: '12.2'
|
|
532
|
+
|
|
533
|
+
- regex: 'CFNetwork/.+ Darwin/18.2.0(?!.*x86_64)'
|
|
534
|
+
name: 'iOS'
|
|
535
|
+
version: '12.1'
|
|
536
|
+
|
|
537
|
+
- regex: 'CFNetwork/.+ Darwin/18.0.0(?!.*x86_64)'
|
|
538
|
+
name: 'iOS'
|
|
539
|
+
version: '12.0'
|
|
540
|
+
|
|
541
|
+
- regex: 'CFNetwork/.+ Darwin/17.7.0(?!.*x86_64)'
|
|
542
|
+
name: 'iOS'
|
|
543
|
+
version: '11.4.1'
|
|
544
|
+
|
|
545
|
+
- regex: 'CFNetwork/.+ Darwin/17.6.0(?!.*x86_64)'
|
|
546
|
+
name: 'iOS'
|
|
547
|
+
version: '11.4'
|
|
548
|
+
|
|
549
|
+
- regex: 'CFNetwork/889(?!.*x86_64)'
|
|
550
|
+
name: 'iOS'
|
|
551
|
+
version: '11.1'
|
|
552
|
+
|
|
553
|
+
- regex: 'CFNetwork/887(?!.*x86_64)'
|
|
554
|
+
name: 'iOS'
|
|
555
|
+
version: '11.0'
|
|
295
556
|
|
|
296
|
-
- regex: 'CFNetwork/811'
|
|
557
|
+
- regex: 'CFNetwork/811(?!.*x86_64)'
|
|
297
558
|
name: 'iOS'
|
|
298
559
|
version: '10.3'
|
|
299
560
|
|
|
@@ -409,47 +670,261 @@
|
|
|
409
670
|
name: 'iOS'
|
|
410
671
|
version: '3.1'
|
|
411
672
|
|
|
673
|
+
- regex: 'iPhone/(\d+[\.\d]*) hw/'
|
|
674
|
+
name: 'iOS'
|
|
675
|
+
version: '$1'
|
|
676
|
+
|
|
677
|
+
- regex: 'iOS(\d+\.\d+\.\d+)'
|
|
678
|
+
name: 'iOS'
|
|
679
|
+
version: '$1'
|
|
680
|
+
|
|
681
|
+
- regex: 'iOS(\d+)\.(\d+)0'
|
|
682
|
+
name: 'iOS'
|
|
683
|
+
version: '$1.$2'
|
|
684
|
+
|
|
685
|
+
- regex: 'iPhone OS ([0-9]{1})([0-9]{1})([0-9]{1})'
|
|
686
|
+
name: 'iOS'
|
|
687
|
+
version: '$1.$2.$3'
|
|
688
|
+
|
|
412
689
|
- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\d+(?:[_\.]\d+)*)'
|
|
413
690
|
name: 'iOS'
|
|
414
691
|
version: '$1'
|
|
415
692
|
|
|
693
|
+
- regex: '(?:FBIOS|Messenger(?:Lite)?ForiOS).*FBSV/ ?(\d+[\.\d]*);'
|
|
694
|
+
name: 'iOS'
|
|
695
|
+
version: '$1'
|
|
696
|
+
|
|
416
697
|
- regex: '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
|
417
698
|
name: 'iOS'
|
|
418
699
|
version: '$1'
|
|
419
700
|
|
|
420
|
-
- regex: 'Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|Overcast|Castro|Podcat|
|
|
701
|
+
- regex: '(?:Podcasts/(?:[\d\.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|\(iOS\)|iOS; Opera|Overcast|Castro|Podcat|iCatcher|RSSRadio/|MobileSafari/)(?!.*x86_64)'
|
|
421
702
|
name: 'iOS'
|
|
422
703
|
version: ''
|
|
423
704
|
|
|
424
|
-
- regex: 'iTunes-(iPod|iPad|iPhone)/(?:[\d\.]+)'
|
|
705
|
+
- regex: 'iTunes-(AppleTV|iPod|iPad|iPhone)/(?:[\d\.]+)'
|
|
425
706
|
name: 'iOS'
|
|
426
707
|
version: ''
|
|
427
708
|
|
|
709
|
+
- regex: 'iOS/Version ([\d\.]+)'
|
|
710
|
+
name: 'iOS'
|
|
711
|
+
version: '$1'
|
|
712
|
+
|
|
713
|
+
- regex: 'Sonos/.+\(ICRU_'
|
|
714
|
+
name: 'iOS'
|
|
715
|
+
version: ''
|
|
428
716
|
|
|
429
717
|
##########
|
|
430
718
|
# Mac
|
|
431
719
|
##########
|
|
720
|
+
- regex: 'CFNetwork/.+ Darwin/20.2.0.*(x86_64)|(x86_64-apple-)?darwin20.2.0'
|
|
721
|
+
name: 'Mac'
|
|
722
|
+
version: '11.1'
|
|
723
|
+
|
|
724
|
+
- regex: 'CFNetwork/.+ Darwin/20.[01].0.*(x86_64)|(x86_64-apple-)?darwin20.[01].0'
|
|
725
|
+
name: 'Mac'
|
|
726
|
+
version: '11.0'
|
|
727
|
+
|
|
728
|
+
- regex: 'CFNetwork/.+ Darwin/19.6.0.*(x86_64)|(x86_64-apple-)?darwin19.6.0'
|
|
729
|
+
name: 'Mac'
|
|
730
|
+
version: '10.15.6'
|
|
731
|
+
|
|
732
|
+
- regex: 'CFNetwork/.+ Darwin/19.5.0.*(x86_64)|(x86_64-apple-)?darwin19.5.0'
|
|
733
|
+
name: 'Mac'
|
|
734
|
+
version: '10.15.5'
|
|
735
|
+
|
|
736
|
+
- regex: 'CFNetwork/.+ Darwin/19.4.0.*(x86_64)|(x86_64-apple-)?darwin19.4.0'
|
|
737
|
+
name: 'Mac'
|
|
738
|
+
version: '10.15.4'
|
|
739
|
+
|
|
740
|
+
- regex: 'CFNetwork/.+ Darwin/19.3.0.*(x86_64)|(x86_64-apple-)?darwin19.3.0'
|
|
741
|
+
name: 'Mac'
|
|
742
|
+
version: '10.15.3'
|
|
743
|
+
|
|
744
|
+
- regex: 'CFNetwork/.+ Darwin/19.2.0.*(x86_64)|(x86_64-apple-)?darwin19.2.0'
|
|
745
|
+
name: 'Mac'
|
|
746
|
+
version: '10.15.2'
|
|
747
|
+
|
|
748
|
+
- regex: 'CFNetwork/(?:108[258]|109[18]|1103).*(x86_64)'
|
|
749
|
+
name: 'Mac'
|
|
750
|
+
version: '10.15'
|
|
751
|
+
|
|
752
|
+
- regex: 'CFNetwork/.+ Darwin/18.2.0.*(x86_64)|(x86_64-apple-)?darwin18.2.0'
|
|
753
|
+
name: 'Mac'
|
|
754
|
+
version: '10.14.1'
|
|
755
|
+
|
|
756
|
+
- regex: 'CFNetwork/(?:96[29]|97[14568]).*(x86_64)'
|
|
757
|
+
name: 'Mac'
|
|
758
|
+
version: '10.14'
|
|
759
|
+
|
|
760
|
+
- regex: 'CFNetwork/.+ Darwin/17.7.0.*(x86_64)|(x86_64-apple-)?darwin17.7.0'
|
|
761
|
+
name: 'Mac'
|
|
762
|
+
version: '10.13.6'
|
|
763
|
+
|
|
764
|
+
- regex: 'CFNetwork/.+ Darwin/17.6.0.*(x86_64)|(x86_64-apple-)?darwin17.6.0'
|
|
765
|
+
name: 'Mac'
|
|
766
|
+
version: '10.13.5'
|
|
767
|
+
|
|
768
|
+
- regex: 'CFNetwork/.+ Darwin/17.5.0.*(x86_64)|(x86_64-apple-)?darwin17.5.0'
|
|
769
|
+
name: 'Mac'
|
|
770
|
+
version: '10.13.4'
|
|
771
|
+
|
|
772
|
+
- regex: 'CFNetwork/.+ Darwin/17.4.0.*(x86_64)|(x86_64-apple-)?darwin17.4.0'
|
|
773
|
+
name: 'Mac'
|
|
774
|
+
version: '10.13.3'
|
|
775
|
+
|
|
776
|
+
- regex: 'CFNetwork/.+ Darwin/17.3.0.*(x86_64)|(x86_64-apple-)?darwin17.3.0'
|
|
777
|
+
name: 'Mac'
|
|
778
|
+
version: '10.13.2'
|
|
779
|
+
|
|
780
|
+
- regex: 'CFNetwork/.+ Darwin/17.2.0.*(x86_64)|(x86_64-apple-)?darwin17.2.0'
|
|
781
|
+
name: 'Mac'
|
|
782
|
+
version: '10.13.1'
|
|
783
|
+
|
|
784
|
+
- regex: 'CFNetwork/(?:887|889|893|897|901|902).*(x86_64)'
|
|
785
|
+
name: 'Mac'
|
|
786
|
+
version: '10.13'
|
|
787
|
+
|
|
788
|
+
- regex: 'CFNetwork/.+ Darwin/16.7.0.*(x86_64)|(x86_64-apple-)?darwin16.7.0'
|
|
789
|
+
name: 'Mac'
|
|
790
|
+
version: '10.12.6'
|
|
791
|
+
|
|
792
|
+
- regex: 'CFNetwork/.+ Darwin/16.6.0.*(x86_64)|(x86_64-apple-)?darwin16.6.0'
|
|
793
|
+
name: 'Mac'
|
|
794
|
+
version: '10.12.5'
|
|
795
|
+
|
|
796
|
+
- regex: 'CFNetwork/.+ Darwin/16.5.0.*(x86_64)|(x86_64-apple-)?darwin16.5.0'
|
|
797
|
+
name: 'Mac'
|
|
798
|
+
version: '10.12.4'
|
|
799
|
+
|
|
800
|
+
- regex: 'CFNetwork/.+ Darwin/16.3.0.*(x86_64)|(x86_64-apple-)?darwin16.3.0'
|
|
801
|
+
name: 'Mac'
|
|
802
|
+
version: '10.12.3'
|
|
803
|
+
|
|
804
|
+
- regex: 'CFNetwork/.+ Darwin/16.2.0.*(x86_64)|(x86_64-apple-)?darwin16.2.0'
|
|
805
|
+
name: 'Mac'
|
|
806
|
+
version: '10.12.2'
|
|
807
|
+
|
|
808
|
+
- regex: 'CFNetwork/.+ Darwin/16.1.0.*(x86_64)|(x86_64-apple-)?darwin16.1.0'
|
|
809
|
+
name: 'Mac'
|
|
810
|
+
version: '10.12.1'
|
|
811
|
+
|
|
812
|
+
- regex: 'CFNetwork/811.*(x86_64)'
|
|
813
|
+
name: 'Mac'
|
|
814
|
+
version: '10.12'
|
|
432
815
|
|
|
433
816
|
- regex: 'CFNetwork/807'
|
|
434
817
|
name: 'Mac'
|
|
435
818
|
version: '10.12'
|
|
436
819
|
|
|
820
|
+
- regex: 'CFNetwork/.+ Darwin/15.6.0.*(x86_64)|(x86_64-apple-)?darwin15.6.0'
|
|
821
|
+
name: 'Mac'
|
|
822
|
+
version: '10.11.6'
|
|
823
|
+
|
|
824
|
+
- regex: 'CFNetwork/.+ Darwin/15.5.0.*(x86_64)|(x86_64-apple-)?darwin15.5.0'
|
|
825
|
+
name: 'Mac'
|
|
826
|
+
version: '10.11.5'
|
|
827
|
+
|
|
828
|
+
- regex: 'CFNetwork/.+ Darwin/15.4.0.*(x86_64)|(x86_64-apple-)?darwin15.4.0'
|
|
829
|
+
name: 'Mac'
|
|
830
|
+
version: '10.11.4'
|
|
831
|
+
|
|
832
|
+
- regex: 'CFNetwork/.+ Darwin/15.3.0.*(x86_64)|(x86_64-apple-)?darwin15.3.0'
|
|
833
|
+
name: 'Mac'
|
|
834
|
+
version: '10.11.3'
|
|
835
|
+
|
|
836
|
+
- regex: 'CFNetwork/.+ Darwin/15.2.0.*(x86_64)|(x86_64-apple-)?darwin15.2.0'
|
|
837
|
+
name: 'Mac'
|
|
838
|
+
version: '10.11.2'
|
|
839
|
+
|
|
437
840
|
- regex: 'CFNetwork/760'
|
|
438
841
|
name: 'Mac'
|
|
439
842
|
version: '10.11'
|
|
440
843
|
|
|
844
|
+
- regex: 'CFNetwork/.+ Darwin/14.5.0.*(x86_64)|(x86_64-apple-)?darwin14.5.0'
|
|
845
|
+
name: 'Mac'
|
|
846
|
+
version: '10.10.5'
|
|
847
|
+
|
|
848
|
+
- regex: 'CFNetwork/.+ Darwin/14.4.0.*(x86_64)|(x86_64-apple-)?darwin14.4.0'
|
|
849
|
+
name: 'Mac'
|
|
850
|
+
version: '10.10.4'
|
|
851
|
+
|
|
852
|
+
- regex: 'CFNetwork/.+ Darwin/14.3.0.*(x86_64)|(x86_64-apple-)?darwin14.3.0'
|
|
853
|
+
name: 'Mac'
|
|
854
|
+
version: '10.10.3'
|
|
855
|
+
|
|
856
|
+
- regex: 'CFNetwork/.+ Darwin/14.1.0.*(x86_64)|(x86_64-apple-)?darwin14.1.0'
|
|
857
|
+
name: 'Mac'
|
|
858
|
+
version: '10.10.2'
|
|
859
|
+
|
|
441
860
|
- regex: 'CFNetwork/720'
|
|
442
861
|
name: 'Mac'
|
|
443
862
|
version: '10.10'
|
|
444
863
|
|
|
864
|
+
- regex: 'CFNetwork/.+ Darwin/13.4.0.*(x86_64)|(x86_64-apple-)?darwin13.4.0'
|
|
865
|
+
name: 'Mac'
|
|
866
|
+
version: '10.9.5'
|
|
867
|
+
|
|
868
|
+
- regex: 'CFNetwork/.+ Darwin/13.3.0.*(x86_64)|(x86_64-apple-)?darwin13.3.0'
|
|
869
|
+
name: 'Mac'
|
|
870
|
+
version: '10.9.4'
|
|
871
|
+
|
|
872
|
+
- regex: 'CFNetwork/.+ Darwin/13.2.0.*(x86_64)|(x86_64-apple-)?darwin13.2.0'
|
|
873
|
+
name: 'Mac'
|
|
874
|
+
version: '10.9.3'
|
|
875
|
+
|
|
876
|
+
- regex: 'CFNetwork/.+ Darwin/13.1.0.*(x86_64)|(x86_64-apple-)?darwin13.1.0'
|
|
877
|
+
name: 'Mac'
|
|
878
|
+
version: '10.9.2'
|
|
879
|
+
|
|
445
880
|
- regex: 'CFNetwork/673'
|
|
446
881
|
name: 'Mac'
|
|
447
882
|
version: '10.9'
|
|
448
883
|
|
|
884
|
+
- regex: 'CFNetwork/.+ Darwin/12.5.0.*(x86_64)|(x86_64-apple-)?darwin12.5.0'
|
|
885
|
+
name: 'Mac'
|
|
886
|
+
version: '10.8.5'
|
|
887
|
+
|
|
888
|
+
- regex: 'CFNetwork/.+ Darwin/12.4.0.*(x86_64)|(x86_64-apple-)?darwin12.4.0'
|
|
889
|
+
name: 'Mac'
|
|
890
|
+
version: '10.8.4'
|
|
891
|
+
|
|
892
|
+
- regex: 'CFNetwork/.+ Darwin/12.3.0.*(x86_64)|(x86_64-apple-)?darwin12.3.0'
|
|
893
|
+
name: 'Mac'
|
|
894
|
+
version: '10.8.3'
|
|
895
|
+
|
|
896
|
+
- regex: 'CFNetwork/.+ Darwin/12.2.0.*(x86_64)|(x86_64-apple-)?darwin12.2.0'
|
|
897
|
+
name: 'Mac'
|
|
898
|
+
version: '10.8.2'
|
|
899
|
+
|
|
900
|
+
- regex: 'CFNetwork/.+ Darwin/12.1.0.*(x86_64)|(x86_64-apple-)?darwin12.1.0'
|
|
901
|
+
name: 'Mac'
|
|
902
|
+
version: '10.8.1'
|
|
903
|
+
|
|
449
904
|
- regex: 'CFNetwork/596'
|
|
450
905
|
name: 'Mac'
|
|
451
906
|
version: '10.8'
|
|
452
907
|
|
|
908
|
+
- regex: 'CFNetwork/.+ Darwin/11.5.0.*(x86_64)|(x86_64-apple-)?darwin11.5.0'
|
|
909
|
+
name: 'Mac'
|
|
910
|
+
version: '10.7.5'
|
|
911
|
+
|
|
912
|
+
- regex: 'CFNetwork/.+ Darwin/11.4.0.*(x86_64)|(x86_64-apple-)?darwin11.4.0'
|
|
913
|
+
name: 'Mac'
|
|
914
|
+
version: '10.7.4'
|
|
915
|
+
|
|
916
|
+
- regex: 'CFNetwork/.+ Darwin/11.3.0.*(x86_64)|(x86_64-apple-)?darwin11.3.0'
|
|
917
|
+
name: 'Mac'
|
|
918
|
+
version: '10.7.3'
|
|
919
|
+
|
|
920
|
+
- regex: 'CFNetwork/.+ Darwin/11.2.0.*(x86_64)|(x86_64-apple-)?darwin11.2.0'
|
|
921
|
+
name: 'Mac'
|
|
922
|
+
version: '10.7.2'
|
|
923
|
+
|
|
924
|
+
- regex: 'CFNetwork/.+ Darwin/11.1.0.*(x86_64)|(x86_64-apple-)?darwin11.1.0'
|
|
925
|
+
name: 'Mac'
|
|
926
|
+
version: '10.7.1'
|
|
927
|
+
|
|
453
928
|
- regex: 'CFNetwork/520'
|
|
454
929
|
name: 'Mac'
|
|
455
930
|
version: '10.7'
|
|
@@ -474,56 +949,59 @@
|
|
|
474
949
|
name: 'Mac'
|
|
475
950
|
version: '10.2'
|
|
476
951
|
|
|
477
|
-
- regex: 'Mac[ +]OS[ +]X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?'
|
|
952
|
+
- regex: 'Mac[ +]OS[ +]?X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?'
|
|
953
|
+
name: 'Mac'
|
|
954
|
+
version: '$1'
|
|
955
|
+
|
|
956
|
+
- regex: 'Mac (?:OS/)?(\d+(?:[_\.]\d+)+)'
|
|
478
957
|
name: 'Mac'
|
|
479
958
|
version: '$1'
|
|
480
|
-
|
|
481
|
-
- regex: '
|
|
959
|
+
|
|
960
|
+
- regex: 'macOS/(\d+[\.\d]+)'
|
|
482
961
|
name: 'Mac'
|
|
483
962
|
version: '$1'
|
|
484
963
|
|
|
485
|
-
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook'
|
|
964
|
+
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook|macOS|Sonos/.+\(MDCR_'
|
|
486
965
|
name: 'Mac'
|
|
487
966
|
version: ''
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
967
|
+
|
|
968
|
+
##########
|
|
969
|
+
# SeewoOS
|
|
970
|
+
##########
|
|
971
|
+
- regex: 'SeewoOS x86_64 (\d+[\.\d]+)'
|
|
972
|
+
name: 'SeewoOS'
|
|
973
|
+
version: '$1'
|
|
974
|
+
|
|
491
975
|
##########
|
|
492
976
|
# ChromeOS
|
|
493
977
|
##########
|
|
494
978
|
- regex: 'CrOS [a-z0-9_]+ .* Chrome/(\d+[\.\d]+)'
|
|
495
979
|
name: 'Chrome OS'
|
|
496
980
|
version: '$1'
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
981
|
+
|
|
500
982
|
##########
|
|
501
983
|
# BlackBerry
|
|
502
984
|
##########
|
|
503
985
|
- regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)'
|
|
504
986
|
name: 'BlackBerry OS'
|
|
505
987
|
version: '$1'
|
|
506
|
-
|
|
507
|
-
|
|
988
|
+
|
|
508
989
|
- regex: 'RIM Tablet OS (\d+[\.\d]+)'
|
|
509
990
|
name: 'BlackBerry Tablet OS'
|
|
510
991
|
version: '$1'
|
|
511
|
-
|
|
512
|
-
|
|
992
|
+
|
|
513
993
|
- regex: 'RIM Tablet OS|QNX|Play[Bb]ook'
|
|
514
994
|
name: 'BlackBerry Tablet OS'
|
|
515
995
|
version: ''
|
|
516
|
-
|
|
517
|
-
|
|
996
|
+
|
|
518
997
|
- regex: 'BlackBerry'
|
|
519
998
|
name: 'BlackBerry OS'
|
|
520
999
|
version: ''
|
|
521
|
-
|
|
1000
|
+
|
|
522
1001
|
- regex: 'bPod'
|
|
523
1002
|
name: 'BlackBerry OS'
|
|
524
1003
|
version: ''
|
|
525
1004
|
|
|
526
|
-
|
|
527
1005
|
##########
|
|
528
1006
|
# BeOS
|
|
529
1007
|
##########
|
|
@@ -531,9 +1009,6 @@
|
|
|
531
1009
|
name: 'BeOS'
|
|
532
1010
|
version: ''
|
|
533
1011
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
1012
|
##########
|
|
538
1013
|
# Symbian
|
|
539
1014
|
##########
|
|
@@ -541,48 +1016,38 @@
|
|
|
541
1016
|
name: 'Symbian^3'
|
|
542
1017
|
version: 'Anna'
|
|
543
1018
|
|
|
544
|
-
|
|
545
1019
|
- regex: 'Symbian/3.+NokiaBrowser/7\.4'
|
|
546
1020
|
name: 'Symbian^3'
|
|
547
1021
|
version: 'Belle'
|
|
548
1022
|
|
|
549
|
-
|
|
550
1023
|
- regex: 'Symbian/3'
|
|
551
1024
|
name: 'Symbian^3'
|
|
552
1025
|
version: ''
|
|
553
1026
|
|
|
554
|
-
|
|
555
1027
|
- regex: '(?:Series ?60|SymbOS|S60)(?:[ /]?(\d+[\.\d]+|V\d+))?'
|
|
556
1028
|
name: 'Symbian OS Series 60'
|
|
557
1029
|
version: '$1'
|
|
558
1030
|
|
|
559
|
-
|
|
560
1031
|
- regex: 'Series40'
|
|
561
1032
|
name: 'Symbian OS Series 40'
|
|
562
1033
|
version: ''
|
|
563
1034
|
|
|
564
|
-
|
|
565
1035
|
- regex: 'SymbianOS/(\d+[\.\d]+)'
|
|
566
1036
|
name: 'Symbian OS'
|
|
567
1037
|
version: '$1'
|
|
568
|
-
|
|
569
|
-
|
|
1038
|
+
|
|
570
1039
|
- regex: 'MeeGo|WeTab'
|
|
571
1040
|
name: 'MeeGo'
|
|
572
1041
|
version: ''
|
|
573
|
-
|
|
574
|
-
|
|
1042
|
+
|
|
575
1043
|
- regex: 'Symbian(?: OS)?|SymbOS'
|
|
576
1044
|
name: 'Symbian OS'
|
|
577
1045
|
version: ''
|
|
578
|
-
|
|
579
|
-
|
|
1046
|
+
|
|
580
1047
|
- regex: 'Nokia'
|
|
581
1048
|
name: 'Symbian'
|
|
582
1049
|
version: ''
|
|
583
1050
|
|
|
584
|
-
|
|
585
|
-
|
|
586
1051
|
##########
|
|
587
1052
|
# Firefox OS
|
|
588
1053
|
##########
|
|
@@ -590,7 +1055,6 @@
|
|
|
590
1055
|
name: 'Firefox OS'
|
|
591
1056
|
version: ''
|
|
592
1057
|
|
|
593
|
-
|
|
594
1058
|
##########
|
|
595
1059
|
# RISC OS
|
|
596
1060
|
##########
|
|
@@ -598,7 +1062,6 @@
|
|
|
598
1062
|
name: 'RISC OS'
|
|
599
1063
|
version: '$1'
|
|
600
1064
|
|
|
601
|
-
|
|
602
1065
|
##########
|
|
603
1066
|
# Inferno
|
|
604
1067
|
##########
|
|
@@ -606,50 +1069,41 @@
|
|
|
606
1069
|
name: 'Inferno'
|
|
607
1070
|
version: '$1'
|
|
608
1071
|
|
|
609
|
-
|
|
610
1072
|
##########
|
|
611
1073
|
# Bada
|
|
612
1074
|
##########
|
|
613
|
-
- regex: 'bada(?:[ /](\d+[\.\d]+))'
|
|
1075
|
+
- regex: 'bada(?:[ /](\d+[\.\d]+))?'
|
|
614
1076
|
name: 'Bada'
|
|
615
1077
|
version: '$1'
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
- regex: 'bada'
|
|
619
|
-
name: 'Bada'
|
|
620
|
-
version: ''
|
|
621
1078
|
|
|
1079
|
+
##########
|
|
1080
|
+
# REX
|
|
1081
|
+
##########
|
|
1082
|
+
- regex: 'REX; U;'
|
|
1083
|
+
name: 'REX'
|
|
1084
|
+
version: ''
|
|
622
1085
|
|
|
623
1086
|
##########
|
|
624
1087
|
# Brew
|
|
625
1088
|
##########
|
|
626
|
-
- regex: '(?:Brew MP
|
|
1089
|
+
- regex: '(?:Brew(?!-Applet)(?: MP)?|BMP)(?:[ /](\d+[\.\d]+))?'
|
|
627
1090
|
name: 'Brew'
|
|
628
1091
|
version: '$1'
|
|
629
1092
|
|
|
630
|
-
|
|
631
|
-
- regex: 'Brew MP|BREW|BMP'
|
|
632
|
-
name: 'Brew'
|
|
633
|
-
version: ''
|
|
634
|
-
|
|
635
|
-
|
|
636
1093
|
##########
|
|
637
1094
|
# Web TV
|
|
638
1095
|
##########
|
|
639
1096
|
- regex: 'GoogleTV(?:[ /](\d+[\.\d]+))?'
|
|
640
1097
|
name: 'Google TV'
|
|
641
1098
|
version: '$1'
|
|
642
|
-
|
|
643
|
-
|
|
1099
|
+
|
|
644
1100
|
- regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
|
|
645
1101
|
name: 'Apple TV'
|
|
646
1102
|
version: '$1'
|
|
647
|
-
|
|
648
|
-
|
|
1103
|
+
|
|
649
1104
|
- regex: 'WebTV/(\d+[\.\d]+)'
|
|
650
1105
|
name: 'WebTV'
|
|
651
1106
|
version: '$1'
|
|
652
|
-
|
|
653
1107
|
|
|
654
1108
|
##########
|
|
655
1109
|
# Remix OS
|
|
@@ -666,108 +1120,92 @@
|
|
|
666
1120
|
name: 'Remix OS'
|
|
667
1121
|
version: ''
|
|
668
1122
|
|
|
669
|
-
|
|
670
1123
|
##########
|
|
671
1124
|
# Unix
|
|
672
1125
|
##########
|
|
673
1126
|
- regex: '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?'
|
|
674
1127
|
name: 'Solaris'
|
|
675
1128
|
version: '$1'
|
|
676
|
-
|
|
677
|
-
|
|
1129
|
+
|
|
678
1130
|
- regex: 'AIX(?:[/ ]?(\d+[\.\d]+))?'
|
|
679
1131
|
name: 'AIX'
|
|
680
1132
|
version: '$1'
|
|
681
|
-
|
|
682
|
-
|
|
1133
|
+
|
|
683
1134
|
- regex: 'HP-UX(?:[/ ]?(\d+[\.\d]+))?'
|
|
684
1135
|
name: 'HP-UX'
|
|
685
1136
|
version: '$1'
|
|
686
|
-
|
|
687
|
-
|
|
1137
|
+
|
|
688
1138
|
- regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?'
|
|
689
1139
|
name: 'FreeBSD'
|
|
690
1140
|
version: '$1'
|
|
691
|
-
|
|
692
|
-
|
|
1141
|
+
|
|
693
1142
|
- regex: 'NetBSD(?:[/ ]?(\d+[\.\d]+))?'
|
|
694
1143
|
name: 'NetBSD'
|
|
695
1144
|
version: '$1'
|
|
696
|
-
|
|
697
|
-
|
|
1145
|
+
|
|
698
1146
|
- regex: 'OpenBSD(?:[/ ]?(\d+[\.\d]+))?'
|
|
699
1147
|
name: 'OpenBSD'
|
|
700
1148
|
version: '$1'
|
|
701
|
-
|
|
702
|
-
|
|
1149
|
+
|
|
703
1150
|
- regex: 'DragonFly(?:[/ ]?(\d+[\.\d]+))?'
|
|
704
1151
|
name: 'DragonFly'
|
|
705
1152
|
version: '$1'
|
|
706
|
-
|
|
707
|
-
|
|
1153
|
+
|
|
708
1154
|
- regex: 'Syllable(?:[/ ]?(\d+[\.\d]+))?'
|
|
709
1155
|
name: 'Syllable'
|
|
710
1156
|
version: '$1'
|
|
711
|
-
|
|
712
|
-
|
|
1157
|
+
|
|
713
1158
|
- regex: 'IRIX(?:;64)?(?:[/ ]?(\d+[\.\d]+))'
|
|
714
1159
|
name: 'IRIX'
|
|
715
1160
|
version: '$1'
|
|
716
|
-
|
|
717
|
-
|
|
1161
|
+
|
|
718
1162
|
- regex: 'OSF1(?:[/ ]?v?(\d+[\.\d]+))?'
|
|
719
1163
|
name: 'OSF1'
|
|
720
1164
|
version: '$1'
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
1165
|
+
|
|
724
1166
|
##########
|
|
725
1167
|
# Gaming Console
|
|
726
1168
|
##########
|
|
727
|
-
- regex: 'Nintendo Wii'
|
|
1169
|
+
- regex: 'Nintendo (Wii|Switch)'
|
|
728
1170
|
name: 'Nintendo'
|
|
729
|
-
version: '
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
- regex: 'PlayStation ?([3|4])'
|
|
1171
|
+
version: '$1'
|
|
1172
|
+
|
|
1173
|
+
- regex: 'PlayStation ?([34])'
|
|
733
1174
|
name: 'PlayStation'
|
|
734
1175
|
version: '$1'
|
|
735
|
-
|
|
736
|
-
|
|
1176
|
+
|
|
737
1177
|
- regex: 'Xbox|KIN\.(?:One|Two)'
|
|
738
1178
|
name: 'Xbox'
|
|
739
1179
|
version: '360'
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
1180
|
+
|
|
743
1181
|
##########
|
|
744
1182
|
# Mobile Gaming Console
|
|
745
1183
|
##########
|
|
746
1184
|
- regex: 'Nitro|Nintendo ([3]?DS[i]?)'
|
|
747
1185
|
name: 'Nintendo Mobile'
|
|
748
1186
|
version: '$1'
|
|
749
|
-
|
|
750
|
-
|
|
1187
|
+
|
|
751
1188
|
- regex: 'PlayStation ((?:Portable|Vita))'
|
|
752
1189
|
name: 'PlayStation Portable'
|
|
753
1190
|
version: '$1'
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
1191
|
+
|
|
757
1192
|
##########
|
|
758
1193
|
# IBM
|
|
759
1194
|
##########
|
|
760
1195
|
- regex: 'OS/2'
|
|
761
1196
|
name: 'OS/2'
|
|
762
1197
|
version: ''
|
|
763
|
-
|
|
764
|
-
|
|
765
1198
|
|
|
766
1199
|
###########
|
|
767
1200
|
# Linux (Generic)
|
|
768
1201
|
###########
|
|
769
|
-
- regex: 'Linux(?:OS)?[^a-z]'
|
|
1202
|
+
- regex: 'Linux(?:OS)?[^a-z]|Cinnamon/(?:\d+[\.\d]+)'
|
|
770
1203
|
name: 'GNU/Linux'
|
|
771
1204
|
version: ''
|
|
772
1205
|
|
|
773
|
-
|
|
1206
|
+
##########
|
|
1207
|
+
# Java ME (Java Platform, Micro Edition)
|
|
1208
|
+
##########
|
|
1209
|
+
- regex: 'Java ME|(J2ME|Profile)/MIDP|MIDP-(?:\d+[\.\d]+)/CLDC|Configuration/CLDC|Java; U; MIDP|MMP/\d.\d'
|
|
1210
|
+
name: 'Java ME'
|
|
1211
|
+
version: ''
|