device_detector 1.0.7 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +25 -4
- data/lib/device_detector/browser.rb +178 -5
- data/lib/device_detector/client_hint.rb +166 -0
- data/lib/device_detector/device.rb +291 -2
- data/lib/device_detector/os.rb +33 -3
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector.rb +50 -15
- data/regexes/bots.yml +594 -16
- data/regexes/client/browsers.yml +334 -40
- data/regexes/client/hints/apps.yml +102 -0
- data/regexes/client/hints/browsers.yml +190 -0
- data/regexes/client/libraries.yml +199 -2
- data/regexes/client/mobile_apps.yml +320 -12
- data/regexes/client/pim.yml +15 -0
- data/regexes/device/car_browsers.yml +1 -1
- data/regexes/device/consoles.yml +6 -1
- data/regexes/device/mobiles.yml +8406 -1948
- data/regexes/device/portable_media_player.yml +18 -2
- data/regexes/device/shell_tv.yml +11 -0
- data/regexes/device/televisions.yml +26 -4
- data/regexes/oss.yml +329 -47
- metadata +10 -7
@@ -36,8 +36,10 @@ FiiO:
|
|
36
36
|
regex: 'FiiO'
|
37
37
|
device: 'portable media player'
|
38
38
|
models:
|
39
|
-
- regex: '
|
40
|
-
model: '
|
39
|
+
- regex: 'M11 Plus LTD'
|
40
|
+
model: 'M11 Plus LTD'
|
41
|
+
- regex: 'M(1[57])'
|
42
|
+
model: 'M$1'
|
41
43
|
|
42
44
|
Microsoft:
|
43
45
|
regex: 'Microsoft ZuneHD'
|
@@ -84,3 +86,17 @@ SONOS:
|
|
84
86
|
model: 'Play:5'
|
85
87
|
- regex: 'Sonos;One;'
|
86
88
|
model: 'One'
|
89
|
+
|
90
|
+
# Shanling
|
91
|
+
Shanling:
|
92
|
+
regex: 'Shanling M6'
|
93
|
+
device: 'portable media player'
|
94
|
+
models:
|
95
|
+
- regex: 'Shanling (M6\(21\))'
|
96
|
+
model: '$1'
|
97
|
+
|
98
|
+
# Sylvania
|
99
|
+
Sylvania:
|
100
|
+
regex: '(SLTDVD102[34])'
|
101
|
+
device: 'portable media player'
|
102
|
+
model: '$1'
|
data/regexes/device/shell_tv.yml
CHANGED
@@ -110,8 +110,19 @@ Loview:
|
|
110
110
|
device: 'tv'
|
111
111
|
model: ''
|
112
112
|
|
113
|
+
# Supra
|
114
|
+
Supra:
|
115
|
+
regex: 'Supra Shell'
|
116
|
+
device: 'tv'
|
117
|
+
model: ''
|
118
|
+
|
113
119
|
# Yuno (yuno.bbk.ru)
|
114
120
|
Yuno:
|
115
121
|
regex: 'Yuno Shell'
|
116
122
|
device: 'tv'
|
117
123
|
model: ''
|
124
|
+
|
125
|
+
TCL:
|
126
|
+
regex: 'TCL/TCL-'
|
127
|
+
device: 'tv'
|
128
|
+
model: ''
|
@@ -26,7 +26,9 @@ Airties:
|
|
26
26
|
'ALDI SÜD':
|
27
27
|
regex: 'ALDISUED[;,]'
|
28
28
|
device: 'tv'
|
29
|
-
|
29
|
+
models:
|
30
|
+
- regex: 'ALDISUED, ([a-z0-9_ \-]+), (?:wired|wireless)'
|
31
|
+
model: ''
|
30
32
|
|
31
33
|
# Altech UEC
|
32
34
|
'Altech UEC':
|
@@ -152,7 +154,9 @@ GoGEN:
|
|
152
154
|
Grundig:
|
153
155
|
regex: '(OWB|Grundig|Arcelik)'
|
154
156
|
device: 'tv'
|
155
|
-
|
157
|
+
models:
|
158
|
+
- regex: 'G7'
|
159
|
+
model: 'G7'
|
156
160
|
|
157
161
|
# Haier
|
158
162
|
Haier:
|
@@ -212,13 +216,21 @@ Hotel:
|
|
212
216
|
|
213
217
|
# Humax
|
214
218
|
Humax:
|
215
|
-
regex: 'Humax'
|
219
|
+
regex: 'Humax|hdr1000s'
|
216
220
|
device: 'tv'
|
217
221
|
models:
|
218
222
|
- regex: '(HD-FOX C|HD (FOX\+|NANO)|iCord (HD\+|MINI|Cable)|(CX|IR)HD-5100(C|S)|HM9503HD)'
|
219
223
|
model: '$1'
|
220
224
|
- regex: 'HMS1000S'
|
221
225
|
model: 'HMS-1000S'
|
226
|
+
- regex: 'FVP4000T'
|
227
|
+
model: 'FVP-4000T'
|
228
|
+
- regex: 'HGS1000S'
|
229
|
+
model: 'HGS-1000S'
|
230
|
+
- regex: 'HDR1000S'
|
231
|
+
model: 'HDR-1000S'
|
232
|
+
- regex: 'HDR4000T'
|
233
|
+
model: 'HDR-4000T'
|
222
234
|
- regex: 'Humax; ([^);/]+)'
|
223
235
|
model: '$1'
|
224
236
|
|
@@ -364,7 +376,9 @@ MediaTek:
|
|
364
376
|
Medion:
|
365
377
|
regex: 'Medion'
|
366
378
|
device: 'tv'
|
367
|
-
|
379
|
+
models:
|
380
|
+
- regex: 'MEDION, ([a-z0-9_ \-]+), (?:wired|wireless)'
|
381
|
+
model: ''
|
368
382
|
|
369
383
|
# Miray
|
370
384
|
Miray:
|
@@ -517,6 +531,8 @@ Sharp:
|
|
517
531
|
regex: '(?:UMC-)?Sharp'
|
518
532
|
device: 'tv'
|
519
533
|
models:
|
534
|
+
- regex: 'SHARP, ([a-z0-9_ \-]+), (?:wired|wireless)'
|
535
|
+
model: ''
|
520
536
|
- regex: 'Sharp[,;] ?((?! |HbbTV)[^),;/]+)'
|
521
537
|
model: '$1'
|
522
538
|
- regex: '(LE[0-9]{3}[A-Z]{0,3})'
|
@@ -699,3 +715,9 @@ Vestel:
|
|
699
715
|
regex: '(?:Vestel.+VESTEL|VESTEL;)'
|
700
716
|
device: 'tv'
|
701
717
|
model: ''
|
718
|
+
|
719
|
+
# Unknown
|
720
|
+
Unknown:
|
721
|
+
regex: 'OEM, ([a-z0-9_ \-]+), (?:wired|wireless)'
|
722
|
+
device: 'tv'
|
723
|
+
model: ''
|
data/regexes/oss.yml
CHANGED
@@ -5,6 +5,87 @@
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
8
|
+
##########
|
9
|
+
# RouterOS (https://help.mikrotik.com/docs/display/ROS/RouterOS)
|
10
|
+
##########
|
11
|
+
- regex: 'Mikrotik/(\d).x'
|
12
|
+
name: 'RouterOS'
|
13
|
+
version: '$1'
|
14
|
+
|
15
|
+
##########
|
16
|
+
# Sirin OS (https://sirinlabs.com/sirin-os/)
|
17
|
+
##########
|
18
|
+
- regex: 'FINNEY U1'
|
19
|
+
name: 'Sirin OS'
|
20
|
+
version: ''
|
21
|
+
|
22
|
+
##########
|
23
|
+
# Nova (https://www.nova.cu/)
|
24
|
+
##########
|
25
|
+
- regex: 'Nova; Linux'
|
26
|
+
name: 'Nova'
|
27
|
+
version: ''
|
28
|
+
|
29
|
+
##########
|
30
|
+
# Bliss OS (https://blissos.org/)
|
31
|
+
##########
|
32
|
+
- regex: 'Android 10.+bliss_maple'
|
33
|
+
name: 'Bliss OS'
|
34
|
+
version: '12'
|
35
|
+
|
36
|
+
##########
|
37
|
+
# TencentOS (https://github.com/Tencent/TencentOS-kernel)
|
38
|
+
##########
|
39
|
+
- regex: 'Linux/(\d+[\.\d]*).+tlinux'
|
40
|
+
name: 'TencentOS'
|
41
|
+
version: '$1'
|
42
|
+
|
43
|
+
##########
|
44
|
+
# Amazon Linux (https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)
|
45
|
+
##########
|
46
|
+
- regex: '.+.amzn(\d).x86_64'
|
47
|
+
name: 'Amazon Linux'
|
48
|
+
version: '$1'
|
49
|
+
|
50
|
+
##########
|
51
|
+
# COS (China Operating System - https://web.archive.org/web/20170825001023/http://www.china-cos.com/)
|
52
|
+
##########
|
53
|
+
- regex: ' COS like Android'
|
54
|
+
name: 'China OS'
|
55
|
+
version: ''
|
56
|
+
|
57
|
+
##########
|
58
|
+
# ClearOS Mobile (https://www.clearos.com/products/clearos-editions/clearos-mobile)
|
59
|
+
##########
|
60
|
+
- regex: 'Android (\d+[\.\d]*); ClearPHONE'
|
61
|
+
name: 'ClearOS Mobile'
|
62
|
+
version: '$1'
|
63
|
+
|
64
|
+
##########
|
65
|
+
# Plasma Mobile (https://plasma-mobile.org/)
|
66
|
+
##########
|
67
|
+
- regex: 'Plasma Mobile'
|
68
|
+
name: 'Plasma Mobile'
|
69
|
+
version: ''
|
70
|
+
|
71
|
+
##########
|
72
|
+
# KreaTV
|
73
|
+
##########
|
74
|
+
- regex: 'KreaTV/0.0.0.0'
|
75
|
+
name: 'KreaTV'
|
76
|
+
version: ''
|
77
|
+
|
78
|
+
- regex: 'KreaTV/(\d+[\.\d]+)'
|
79
|
+
name: 'KreaTV'
|
80
|
+
version: '$1'
|
81
|
+
|
82
|
+
##########
|
83
|
+
# Opera TV (https://blogs.opera.com/news/2016/01/ces-2016-meet-opera-tv/)
|
84
|
+
##########
|
85
|
+
- regex: 'Linux (?:[^;]+); Opera TV(?: Store)?/|^Opera/\d+\.\d+ \(Linux mips'
|
86
|
+
name: 'Opera TV'
|
87
|
+
version: ''
|
88
|
+
|
8
89
|
##########
|
9
90
|
# GridOS (https://web.archive.org/web/20111123141630/http://fusiongarage.com/grid-os/about)
|
10
91
|
##########
|
@@ -132,6 +213,105 @@
|
|
132
213
|
name: 'FydeOS'
|
133
214
|
version: ''
|
134
215
|
|
216
|
+
##########
|
217
|
+
# Revenge OS
|
218
|
+
##########
|
219
|
+
- regex: 'revengeos_x2'
|
220
|
+
name: 'Revenge OS'
|
221
|
+
version: '2'
|
222
|
+
|
223
|
+
##########
|
224
|
+
# Lineage OS
|
225
|
+
##########
|
226
|
+
- regex: 'lineage_\w+'
|
227
|
+
name: 'Lineage OS'
|
228
|
+
version: ''
|
229
|
+
|
230
|
+
#########
|
231
|
+
# Resurrection Remix OS (https://resurrectionremix.com/)
|
232
|
+
##########
|
233
|
+
- regex: 'Android 8(?:[\d.]*);(?: [\w-]+;)? rr_fortuna3g'
|
234
|
+
name: 'Resurrection Remix OS'
|
235
|
+
version: '6'
|
236
|
+
|
237
|
+
##########
|
238
|
+
# Remix OS
|
239
|
+
##########
|
240
|
+
- regex: 'RemixOS|Remix (?:Pro|Mini)'
|
241
|
+
name: 'Remix OS'
|
242
|
+
versions:
|
243
|
+
- regex: 'RemixOS 5'
|
244
|
+
version: '1'
|
245
|
+
- regex: 'RemixOS 6|Remix Mini'
|
246
|
+
version: '2'
|
247
|
+
- regex: 'Remix Pro'
|
248
|
+
version: '3'
|
249
|
+
|
250
|
+
##########
|
251
|
+
# FreeBSD
|
252
|
+
##########
|
253
|
+
- regex: 'FreeBSD.+Android'
|
254
|
+
name: 'FreeBSD'
|
255
|
+
version: ''
|
256
|
+
|
257
|
+
##########
|
258
|
+
# Android TV (https://android.com/tv/)
|
259
|
+
##########
|
260
|
+
- regex: 'Linux; Andr0id[; ](\d+[\.\d]*)'
|
261
|
+
name: 'Android TV'
|
262
|
+
version: '$1'
|
263
|
+
|
264
|
+
- regex: 'Android[; ](\d+[\.\d]*).+(?:Android|AT&T) TV'
|
265
|
+
name: 'Android TV'
|
266
|
+
version: '$1'
|
267
|
+
|
268
|
+
- regex: 'Windows.+Andr0id TV|.+K_?Android_?TV_'
|
269
|
+
name: 'Android TV'
|
270
|
+
version: ''
|
271
|
+
|
272
|
+
##########
|
273
|
+
# Android SDK Level Api
|
274
|
+
##########
|
275
|
+
- regex: '\d+/tclwebkit(?:\d+[\.\d]*)'
|
276
|
+
name: 'Android'
|
277
|
+
versions:
|
278
|
+
- regex: '33/tclwebkit'
|
279
|
+
version: '13'
|
280
|
+
- regex: '3[12]/tclwebkit'
|
281
|
+
version: '12'
|
282
|
+
- regex: '30/tclwebkit'
|
283
|
+
version: '11'
|
284
|
+
- regex: '29/tclwebkit'
|
285
|
+
version: '10'
|
286
|
+
- regex: '28/tclwebkit'
|
287
|
+
version: '9'
|
288
|
+
- regex: '27/tclwebkit'
|
289
|
+
version: '8.1'
|
290
|
+
- regex: '26/tclwebkit'
|
291
|
+
version: '8'
|
292
|
+
- regex: '25/tclwebkit'
|
293
|
+
version: '7.1'
|
294
|
+
- regex: '24/tclwebkit'
|
295
|
+
version: '7'
|
296
|
+
- regex: '23/tclwebkit'
|
297
|
+
version: '6'
|
298
|
+
- regex: '22/tclwebkit'
|
299
|
+
version: '5.1'
|
300
|
+
- regex: '21/tclwebkit'
|
301
|
+
version: '5'
|
302
|
+
- regex: '(?:20|19)/tclwebkit'
|
303
|
+
version: '4.4'
|
304
|
+
- regex: '18/tclwebkit'
|
305
|
+
version: '4.3'
|
306
|
+
- regex: '17/tclwebkit'
|
307
|
+
version: '4.2'
|
308
|
+
- regex: '16/tclwebkit'
|
309
|
+
version: '4.2'
|
310
|
+
- regex: '15/tclwebkit'
|
311
|
+
version: '4.0.3'
|
312
|
+
- regex: '15/tclwebkit'
|
313
|
+
version: '4.0.1'
|
314
|
+
|
135
315
|
##########
|
136
316
|
# Android
|
137
317
|
##########
|
@@ -143,7 +323,7 @@
|
|
143
323
|
name: 'Android'
|
144
324
|
version: ''
|
145
325
|
|
146
|
-
- regex: 'Android OS/(\d+[\.\d]*)'
|
326
|
+
- regex: '(?:Android OS|OMDroid)[ /](\d+[\.\d]*)'
|
147
327
|
name: 'Android'
|
148
328
|
version: '$1'
|
149
329
|
|
@@ -159,7 +339,7 @@
|
|
159
339
|
name: 'Android'
|
160
340
|
version: '$1'
|
161
341
|
|
162
|
-
- regex: '(?:(?:Orca-)?Android|Adr)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
|
342
|
+
- regex: '(?:(?:Orca-)?(?<!like )Android|Adr|AOSP)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
|
163
343
|
name: 'Android'
|
164
344
|
version: '$1'
|
165
345
|
|
@@ -175,7 +355,7 @@
|
|
175
355
|
name: 'Android'
|
176
356
|
version: '$1'
|
177
357
|
|
178
|
-
- regex: ' Adr |Android|Silk-Accelerated=[a-z]{4,5}'
|
358
|
+
- regex: ' Adr |DDG-Android|(?<!like )Android|Silk-Accelerated=[a-z]{4,5}'
|
179
359
|
name: 'Android'
|
180
360
|
version: ''
|
181
361
|
|
@@ -183,14 +363,10 @@
|
|
183
363
|
name: 'Android'
|
184
364
|
version: '$1'
|
185
365
|
|
186
|
-
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe
|
366
|
+
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe|Sonos/.+\(ACR_|Linux x86_64; Quest'
|
187
367
|
name: 'Android'
|
188
368
|
version: ''
|
189
369
|
|
190
|
-
- regex: 'Linux; Andr0id[; ](\d+[\.\d]*)'
|
191
|
-
name: 'Android'
|
192
|
-
version: '$1'
|
193
|
-
|
194
370
|
# Inverted Android
|
195
371
|
- regex: 'Linux; diordnA[; ](\d+[\.\d]*)'
|
196
372
|
name: 'Android'
|
@@ -245,6 +421,46 @@
|
|
245
421
|
##########
|
246
422
|
# Linux
|
247
423
|
##########
|
424
|
+
# Linspire (https://www.linspirelinux.com/)
|
425
|
+
- regex: 'Linspire'
|
426
|
+
name: 'Linspire'
|
427
|
+
version: ''
|
428
|
+
|
429
|
+
# LindowsOS (https://web.archive.org/web/20040304161245/http://www.lindows.com/)
|
430
|
+
- regex: 'LindowsOS'
|
431
|
+
name: 'LindowsOS'
|
432
|
+
version: ''
|
433
|
+
|
434
|
+
# Zenwalk (http://www.zenwalk.org/)
|
435
|
+
- regex: 'Zenwalk GNU Linux'
|
436
|
+
name: 'Zenwalk'
|
437
|
+
version: ''
|
438
|
+
|
439
|
+
# Kanotix (http://www.kanotix.com/)
|
440
|
+
- regex: 'Linux.+kanotix'
|
441
|
+
name: 'Kanotix'
|
442
|
+
version: ''
|
443
|
+
|
444
|
+
# moonOS (https://www.moonos.org/)
|
445
|
+
- regex: 'moonOS/(\d+.[\d.]+)'
|
446
|
+
name: 'moonOS'
|
447
|
+
version: '$1'
|
448
|
+
|
449
|
+
# Foresight Linux (https://www.foresightlinux.org/)
|
450
|
+
- regex: 'Foresight Linux'
|
451
|
+
name: 'Foresight Linux'
|
452
|
+
version: ''
|
453
|
+
|
454
|
+
# Pardus (https://www.pardus.org.tr/)
|
455
|
+
- regex: 'Pardus/(\d+.[\d.]+)'
|
456
|
+
name: 'Pardus'
|
457
|
+
version: '$1'
|
458
|
+
|
459
|
+
# Pure OS (https://pureos.net/)
|
460
|
+
- regex: 'Librem 5'
|
461
|
+
name: 'PureOS'
|
462
|
+
version: ''
|
463
|
+
|
248
464
|
# OpenWrt (https://openwrt.org/)
|
249
465
|
- regex: 'uclient-fetch'
|
250
466
|
name: 'OpenWrt'
|
@@ -255,7 +471,7 @@
|
|
255
471
|
name: 'Roku OS'
|
256
472
|
version: '$1'
|
257
473
|
|
258
|
-
- regex: 'Roku(?:OS)?/(?:DVP|Pluto)?-?(\d+[\.\d]+)'
|
474
|
+
- regex: 'Roku(?:OS|4640X)?/(?:DVP|Pluto)?-?(\d+[\.\d]+)?'
|
259
475
|
name: 'Roku OS'
|
260
476
|
version: '$1'
|
261
477
|
|
@@ -308,6 +524,34 @@
|
|
308
524
|
name: 'VectorLinux'
|
309
525
|
version: '$1'
|
310
526
|
|
527
|
+
- regex: 'CentOS Stream (\d)'
|
528
|
+
name: 'CentOS Stream'
|
529
|
+
version: '$1'
|
530
|
+
|
531
|
+
- regex: '.+.el(\d+(?:[_\.]\d+)*).(?:centos|x86_64)'
|
532
|
+
name: 'CentOS'
|
533
|
+
version: '$1'
|
534
|
+
|
535
|
+
- regex: 'CentOS Linux (\d)'
|
536
|
+
name: 'CentOS'
|
537
|
+
version: '$1'
|
538
|
+
|
539
|
+
- regex: 'Fedora/.+.fc(\d+)'
|
540
|
+
name: 'Fedora'
|
541
|
+
version: '$1'
|
542
|
+
|
543
|
+
- regex: 'Mandriva(?: Linux)?/.+mdv(\d+[\.\d]+)'
|
544
|
+
name: 'Mandriva'
|
545
|
+
version: '$1'
|
546
|
+
|
547
|
+
- regex: 'Linux Mint/(\d)'
|
548
|
+
name: 'Mint'
|
549
|
+
version: '$1'
|
550
|
+
|
551
|
+
- regex: 'Zorin OS (\d+)'
|
552
|
+
name: 'ZorinOS'
|
553
|
+
version: '$1'
|
554
|
+
|
311
555
|
- regex: 'Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\d+[\.\d]+)'
|
312
556
|
name: '$1'
|
313
557
|
version: '$2'
|
@@ -320,12 +564,14 @@
|
|
320
564
|
name: '$1'
|
321
565
|
version: '$2'
|
322
566
|
|
567
|
+
- regex: '.+redhat-linux-gnu'
|
568
|
+
name: 'Red Hat'
|
569
|
+
version: ''
|
570
|
+
|
323
571
|
- regex: 'OS ROSA; Linux'
|
324
572
|
name: 'Rosa'
|
325
573
|
version: ''
|
326
574
|
|
327
|
-
# generic linux match -> end of file
|
328
|
-
|
329
575
|
##########
|
330
576
|
# webOS
|
331
577
|
##########
|
@@ -335,12 +581,16 @@
|
|
335
581
|
versions:
|
336
582
|
- regex: 'WEBOS(\d+[\.\d]+)'
|
337
583
|
version: '$1'
|
338
|
-
- regex: 'Web0S; Linux/SmartTV.+
|
584
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/79'
|
585
|
+
version: '6'
|
586
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/68'
|
339
587
|
version: '5'
|
340
|
-
- regex: 'Web0S; Linux/SmartTV.+
|
588
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/53'
|
341
589
|
version: '4'
|
342
|
-
- regex: 'Web0S; Linux/SmartTV.+
|
590
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/38'
|
343
591
|
version: '3'
|
592
|
+
- regex: 'WEBOS1'
|
593
|
+
version: '1'
|
344
594
|
- regex: 'Web0S; Linux/SmartTV.+Safari/538'
|
345
595
|
version: '2'
|
346
596
|
- regex: 'Web0S; Linux/SmartTV.+Safari/537'
|
@@ -358,7 +608,6 @@
|
|
358
608
|
name: 'MorphOS'
|
359
609
|
version: '$1'
|
360
610
|
|
361
|
-
|
362
611
|
##########
|
363
612
|
# Windows
|
364
613
|
##########
|
@@ -378,7 +627,7 @@
|
|
378
627
|
name: 'Windows'
|
379
628
|
version: ''
|
380
629
|
|
381
|
-
- regex: '(?:Windows(?:-Update-Agent)?|Microsoft-(?:CryptoAPI|Delivery-Optimization|WebDAV-MiniRedir|WNS))/(\d+\.\d+)'
|
630
|
+
- regex: '(?:Windows(?:-Update-Agent)?|Microsoft-(?:CryptoAPI|Delivery-Optimization|WebDAV-MiniRedir|WNS)|WINDOWS_64)/(\d+\.\d+)'
|
382
631
|
name: 'Windows'
|
383
632
|
version: '$1'
|
384
633
|
|
@@ -438,10 +687,14 @@
|
|
438
687
|
name: 'Windows'
|
439
688
|
version: '3.1'
|
440
689
|
|
441
|
-
- regex: 'Windows|.+win32|Win64|MSDW|HandBrake Win Upd|Microsoft BITS'
|
690
|
+
- regex: 'Windows|.+win32|Win64|MSDW|HandBrake Win Upd|Microsoft BITS|ms-office; MSOffice'
|
442
691
|
name: 'Windows'
|
443
692
|
version: ''
|
444
693
|
|
694
|
+
- regex: 'OS/Microsoft_Windows_NT_(\d+\.\d+)'
|
695
|
+
name: 'Windows'
|
696
|
+
version: '$1'
|
697
|
+
|
445
698
|
##########
|
446
699
|
# Haiku OS
|
447
700
|
##########
|
@@ -452,11 +705,11 @@
|
|
452
705
|
##########
|
453
706
|
# tvOS (https://developer.apple.com/tvos/)
|
454
707
|
##########
|
455
|
-
- regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-
|
708
|
+
- regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-6])[_\.]\d+(?:[_.]\d+)*)'
|
456
709
|
name: 'tvOS'
|
457
710
|
version: '$1'
|
458
711
|
|
459
|
-
- regex: 'iOS(?:; |/)((?:9|1[0-
|
712
|
+
- regex: 'iOS(?:; |/)((?:9|1[0-6]).\d+(?:[_\.]\d+)*) (?:model/)?AppleTV'
|
460
713
|
name: 'tvOS'
|
461
714
|
version: '$1'
|
462
715
|
|
@@ -470,27 +723,27 @@
|
|
470
723
|
##########
|
471
724
|
# iPadOS (https://www.apple.com/ipados/)
|
472
725
|
##########
|
473
|
-
- regex: 'FBMD/iPad;.*FBSV/ ?(1[
|
726
|
+
- regex: 'FBMD/iPad;.*FBSV/ ?(1[3-6]).(\d+[\.\d]*);'
|
474
727
|
name: 'iPadOS'
|
475
728
|
version: '$1.$2'
|
476
729
|
|
477
|
-
- regex: 'iPad/(1[
|
730
|
+
- regex: 'iPad/(1[3-6]).(\d+[\.\d]*)'
|
478
731
|
name: 'iPadOS'
|
479
732
|
version: '$1.$2'
|
480
733
|
|
481
|
-
- regex: '^iPad(?:\d+[\,\d]*)/(1[
|
734
|
+
- regex: '^iPad(?:\d+[\,\d]*)/(1[3-6]).(\d+[\.\d]*)'
|
482
735
|
name: 'iPadOS'
|
483
736
|
version: '$1.$2'
|
484
737
|
|
485
|
-
- regex: 'iPad(?:; iOS|.+CPU OS) ((1[
|
738
|
+
- regex: 'iPad(?:; (?:iOS|iPhone OS)|.+CPU OS) ((1[3-6])+(?:[_\.]\d+)*)'
|
486
739
|
name: 'iPadOS'
|
487
740
|
version: '$1'
|
488
741
|
|
489
|
-
- regex: 'iOS/(1[
|
742
|
+
- regex: 'iOS/(1[3-6]).(\d+[\.\d]*).+Apple/iPad'
|
490
743
|
name: 'iPadOS'
|
491
744
|
version: '$1.$2'
|
492
745
|
|
493
|
-
- regex: 'iPhone OS,(1[
|
746
|
+
- regex: 'iPhone OS,(1[3-6]).(\d+[\.\d]*).+iPad'
|
494
747
|
name: 'iPadOS'
|
495
748
|
version: '$1.$2'
|
496
749
|
|
@@ -509,13 +762,27 @@
|
|
509
762
|
name: 'iOS'
|
510
763
|
version: '$1'
|
511
764
|
|
765
|
+
- regex: 'iOS (\d+[\.\d]+)\)'
|
766
|
+
name: 'iOS'
|
767
|
+
version: '$1'
|
768
|
+
|
512
769
|
- regex: '(?:iPhone ?OS|iOS(?: Version)?)(?:/|; |,)(\d+[\.\d]+)'
|
513
770
|
name: 'iOS'
|
514
771
|
version: '$1'
|
515
772
|
|
516
|
-
- regex: 'CFNetwork/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac))'
|
773
|
+
- regex: '^(?!com.apple.Safari.SearchHelper).*CFNetwork/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac|Power%20Macintosh))'
|
517
774
|
name: 'iOS'
|
518
775
|
versions:
|
776
|
+
- regex: 'Darwin/22.0.0'
|
777
|
+
version: '16.0'
|
778
|
+
- regex: 'Darwin/21.6.0'
|
779
|
+
version: '15.6'
|
780
|
+
- regex: 'Darwin/21.5.0'
|
781
|
+
version: '15.5'
|
782
|
+
- regex: 'Darwin/21.4.0'
|
783
|
+
version: '15.4'
|
784
|
+
- regex: 'Darwin/21.3.0'
|
785
|
+
version: '15.3'
|
519
786
|
- regex: 'Darwin/21.2.0'
|
520
787
|
version: '15.2'
|
521
788
|
- regex: 'Darwin/21.1.0'
|
@@ -649,7 +916,7 @@
|
|
649
916
|
name: 'iOS'
|
650
917
|
version: '$1.$2.$3'
|
651
918
|
|
652
|
-
- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\d+(?:[_\.]\d+)*)'
|
919
|
+
- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iPhone.+ OS|iOS)[ _/](\d+(?:[_\.]\d+)*)'
|
653
920
|
name: 'iOS'
|
654
921
|
version: '$1'
|
655
922
|
|
@@ -681,7 +948,11 @@
|
|
681
948
|
name: 'iOS'
|
682
949
|
version: '$1'
|
683
950
|
|
684
|
-
- regex: '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
951
|
+
- regex: '(?:Apple-)?(?<!like )(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
952
|
+
name: 'iOS'
|
953
|
+
version: '$1'
|
954
|
+
|
955
|
+
- regex: 'dv\(iPh.+ov\((\d+(?:[_\.]\d+)*)\);'
|
685
956
|
name: 'iOS'
|
686
957
|
version: '$1'
|
687
958
|
|
@@ -708,9 +979,19 @@
|
|
708
979
|
##########
|
709
980
|
# Mac
|
710
981
|
##########
|
711
|
-
- regex: 'CFNetwork/.+ Darwin/(?:[\d\.]+).+(?:x86_64|i386)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|PowerMac'
|
982
|
+
- regex: 'CFNetwork/.+ Darwin/(?:[\d\.]+).+(?:x86_64|i386|Power%20Macintosh)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|PowerMac|com.apple.Safari.SearchHelper'
|
712
983
|
name: 'Mac'
|
713
984
|
versions:
|
985
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.0.0'
|
986
|
+
version: '13.0'
|
987
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.6.0'
|
988
|
+
version: '12.5'
|
989
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.5.0'
|
990
|
+
version: '12.4'
|
991
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.4.0'
|
992
|
+
version: '12.3'
|
993
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.3.0'
|
994
|
+
version: '12.2'
|
714
995
|
- regex: '(?:x86_64-apple-)?Darwin/?21.2.0'
|
715
996
|
version: '12.1'
|
716
997
|
- regex: '(?:x86_64-apple-)?Darwin/?21.1.0'
|
@@ -866,7 +1147,7 @@
|
|
866
1147
|
name: 'Mac'
|
867
1148
|
version: '$1'
|
868
1149
|
|
869
|
-
- regex: '(?:macOS[/,]|Mac-)(\d+[\.\d]+)'
|
1150
|
+
- regex: '(?:macOS[ /,]|Mac-)(\d+[\.\d]+)'
|
870
1151
|
name: 'Mac'
|
871
1152
|
version: '$1'
|
872
1153
|
|
@@ -888,10 +1169,17 @@
|
|
888
1169
|
##########
|
889
1170
|
# ChromeOS
|
890
1171
|
##########
|
891
|
-
- regex: 'CrOS [a-z0-9_]+
|
1172
|
+
- regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)'
|
892
1173
|
name: 'Chrome OS'
|
893
1174
|
version: '$1'
|
894
1175
|
|
1176
|
+
##########
|
1177
|
+
# Fuchsia
|
1178
|
+
##########
|
1179
|
+
- regex: 'Fuchsia'
|
1180
|
+
name: 'Fuchsia'
|
1181
|
+
version: ''
|
1182
|
+
|
895
1183
|
##########
|
896
1184
|
# BlackBerry
|
897
1185
|
##########
|
@@ -1018,20 +1306,6 @@
|
|
1018
1306
|
name: 'WebTV'
|
1019
1307
|
version: '$1'
|
1020
1308
|
|
1021
|
-
##########
|
1022
|
-
# Remix OS
|
1023
|
-
##########
|
1024
|
-
- regex: 'RemixOS 5.1.1'
|
1025
|
-
name: 'Remix OS'
|
1026
|
-
version: '1'
|
1027
|
-
|
1028
|
-
- regex: 'RemixOS 6.0'
|
1029
|
-
name: 'Remix OS'
|
1030
|
-
version: '2'
|
1031
|
-
|
1032
|
-
- regex: 'RemixOS'
|
1033
|
-
name: 'Remix OS'
|
1034
|
-
version: ''
|
1035
1309
|
|
1036
1310
|
##########
|
1037
1311
|
# Unix
|
@@ -1083,10 +1357,14 @@
|
|
1083
1357
|
name: 'Nintendo'
|
1084
1358
|
version: '$1'
|
1085
1359
|
|
1086
|
-
- regex: 'PlayStation
|
1360
|
+
- regex: 'PlayStation.+; Linux (\d+[\.\d]+)'
|
1087
1361
|
name: 'PlayStation'
|
1088
1362
|
version: '$1'
|
1089
1363
|
|
1364
|
+
- regex: 'PlayStation ?(\d)(?:[/ ](?:Pro )?(\d+[\.\d]+))?'
|
1365
|
+
name: 'PlayStation'
|
1366
|
+
version: '$1.$2'
|
1367
|
+
|
1090
1368
|
- regex: 'Xbox|KIN\.(?:One|Two)'
|
1091
1369
|
name: 'Xbox'
|
1092
1370
|
version: '360'
|
@@ -1112,7 +1390,11 @@
|
|
1112
1390
|
###########
|
1113
1391
|
# Linux (Generic)
|
1114
1392
|
###########
|
1115
|
-
- regex: 'Linux
|
1393
|
+
- regex: 'Linux/(\d+[\.\d]+)'
|
1394
|
+
name: 'GNU/Linux'
|
1395
|
+
version: '$1'
|
1396
|
+
|
1397
|
+
- regex: 'Linux(?:OS)?[^a-z]|Cinnamon/(?:\d+[\.\d]+)|.+(?:pc|unknown)-linux-gnu'
|
1116
1398
|
name: 'GNU/Linux'
|
1117
1399
|
version: ''
|
1118
1400
|
|