device_detector 1.0.7 → 1.1.1
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 +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +25 -4
- data/lib/device_detector/browser.rb +184 -5
- data/lib/device_detector/client_hint.rb +181 -0
- data/lib/device_detector/device.rb +522 -3
- data/lib/device_detector/os.rb +33 -3
- data/lib/device_detector/parser.rb +25 -3
- data/lib/device_detector/vendor_fragment.rb +25 -0
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector.rb +82 -16
- data/regexes/bots.yml +757 -17
- data/regexes/client/browsers.yml +365 -54
- data/regexes/client/hints/apps.yml +102 -0
- data/regexes/client/hints/browsers.yml +195 -0
- data/regexes/client/libraries.yml +200 -3
- data/regexes/client/mobile_apps.yml +396 -14
- data/regexes/client/pim.yml +15 -0
- data/regexes/device/car_browsers.yml +1 -1
- data/regexes/device/consoles.yml +8 -3
- data/regexes/device/mobiles.yml +12126 -2425
- data/regexes/device/portable_media_player.yml +24 -2
- data/regexes/device/shell_tv.yml +16 -0
- data/regexes/device/televisions.yml +26 -4
- data/regexes/oss.yml +381 -50
- metadata +11 -7
data/regexes/oss.yml
CHANGED
|
@@ -5,6 +5,94 @@
|
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
|
6
6
|
###############
|
|
7
7
|
|
|
8
|
+
##########
|
|
9
|
+
# RedOS (https://redos.red-soft.ru/)
|
|
10
|
+
##########
|
|
11
|
+
- regex: 'RED OS; Linux'
|
|
12
|
+
name: 'RedOS'
|
|
13
|
+
version: ''
|
|
14
|
+
|
|
15
|
+
##########
|
|
16
|
+
# RouterOS (https://help.mikrotik.com/docs/display/ROS/RouterOS)
|
|
17
|
+
##########
|
|
18
|
+
- regex: 'Mikrotik/(\d).x'
|
|
19
|
+
name: 'RouterOS'
|
|
20
|
+
version: '$1'
|
|
21
|
+
|
|
22
|
+
##########
|
|
23
|
+
# Sirin OS (https://sirinlabs.com/sirin-os/)
|
|
24
|
+
##########
|
|
25
|
+
- regex: 'FINNEY U1'
|
|
26
|
+
name: 'Sirin OS'
|
|
27
|
+
version: ''
|
|
28
|
+
|
|
29
|
+
##########
|
|
30
|
+
# Nova (https://www.nova.cu/)
|
|
31
|
+
##########
|
|
32
|
+
- regex: 'Nova; Linux'
|
|
33
|
+
name: 'Nova'
|
|
34
|
+
version: ''
|
|
35
|
+
|
|
36
|
+
##########
|
|
37
|
+
# Bliss OS (https://blissos.org/)
|
|
38
|
+
##########
|
|
39
|
+
- regex: 'Android 10.+bliss_maple'
|
|
40
|
+
name: 'Bliss OS'
|
|
41
|
+
version: '12'
|
|
42
|
+
|
|
43
|
+
##########
|
|
44
|
+
# TencentOS (https://github.com/Tencent/TencentOS-kernel)
|
|
45
|
+
##########
|
|
46
|
+
- regex: 'Linux/(\d+[\.\d]*).+tlinux'
|
|
47
|
+
name: 'TencentOS'
|
|
48
|
+
version: '$1'
|
|
49
|
+
|
|
50
|
+
##########
|
|
51
|
+
# Amazon Linux (https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)
|
|
52
|
+
##########
|
|
53
|
+
- regex: '.+.amzn(\d).x86_64'
|
|
54
|
+
name: 'Amazon Linux'
|
|
55
|
+
version: '$1'
|
|
56
|
+
|
|
57
|
+
##########
|
|
58
|
+
# COS (China Operating System - https://web.archive.org/web/20170825001023/http://www.china-cos.com/)
|
|
59
|
+
##########
|
|
60
|
+
- regex: ' COS like Android'
|
|
61
|
+
name: 'China OS'
|
|
62
|
+
version: ''
|
|
63
|
+
|
|
64
|
+
##########
|
|
65
|
+
# ClearOS Mobile (https://www.clearos.com/products/clearos-editions/clearos-mobile)
|
|
66
|
+
##########
|
|
67
|
+
- regex: 'Android (\d+[\.\d]*); ClearPHONE'
|
|
68
|
+
name: 'ClearOS Mobile'
|
|
69
|
+
version: '$1'
|
|
70
|
+
|
|
71
|
+
##########
|
|
72
|
+
# Plasma Mobile (https://plasma-mobile.org/)
|
|
73
|
+
##########
|
|
74
|
+
- regex: 'Plasma Mobile'
|
|
75
|
+
name: 'Plasma Mobile'
|
|
76
|
+
version: ''
|
|
77
|
+
|
|
78
|
+
##########
|
|
79
|
+
# KreaTV
|
|
80
|
+
##########
|
|
81
|
+
- regex: 'KreaTV/0.0.0.0'
|
|
82
|
+
name: 'KreaTV'
|
|
83
|
+
version: ''
|
|
84
|
+
|
|
85
|
+
- regex: 'KreaTV/(\d+[\.\d]+)'
|
|
86
|
+
name: 'KreaTV'
|
|
87
|
+
version: '$1'
|
|
88
|
+
|
|
89
|
+
##########
|
|
90
|
+
# Opera TV (https://blogs.opera.com/news/2016/01/ces-2016-meet-opera-tv/)
|
|
91
|
+
##########
|
|
92
|
+
- regex: 'Linux (?:[^;]+); Opera TV(?: Store)?/|^Opera/\d+\.\d+ \(Linux mips'
|
|
93
|
+
name: 'Opera TV'
|
|
94
|
+
version: ''
|
|
95
|
+
|
|
8
96
|
##########
|
|
9
97
|
# GridOS (https://web.archive.org/web/20111123141630/http://fusiongarage.com/grid-os/about)
|
|
10
98
|
##########
|
|
@@ -99,6 +187,9 @@
|
|
|
99
187
|
- regex: 'HarmonyOS(?:[/ ](\d+[\.\d]+))?'
|
|
100
188
|
name: 'HarmonyOS'
|
|
101
189
|
version: '$1'
|
|
190
|
+
- regex: 'Hmos/1'
|
|
191
|
+
name: 'HarmonyOS'
|
|
192
|
+
version: '1.0.0'
|
|
102
193
|
|
|
103
194
|
- regex: 'RazoDroiD(?: v(\d+[\.\d]*))?'
|
|
104
195
|
name: 'RazoDroiD'
|
|
@@ -132,6 +223,109 @@
|
|
|
132
223
|
name: 'FydeOS'
|
|
133
224
|
version: ''
|
|
134
225
|
|
|
226
|
+
##########
|
|
227
|
+
# Revenge OS
|
|
228
|
+
##########
|
|
229
|
+
- regex: 'revengeos_x2'
|
|
230
|
+
name: 'Revenge OS'
|
|
231
|
+
version: '2'
|
|
232
|
+
|
|
233
|
+
##########
|
|
234
|
+
# Lineage OS
|
|
235
|
+
##########
|
|
236
|
+
- regex: 'lineage_\w+'
|
|
237
|
+
name: 'Lineage OS'
|
|
238
|
+
version: ''
|
|
239
|
+
|
|
240
|
+
#########
|
|
241
|
+
# Resurrection Remix OS (https://resurrectionremix.com/)
|
|
242
|
+
##########
|
|
243
|
+
- regex: 'Android 8(?:[\d.]*);(?: [\w-]+;)? rr_fortuna3g'
|
|
244
|
+
name: 'Resurrection Remix OS'
|
|
245
|
+
version: '6'
|
|
246
|
+
|
|
247
|
+
##########
|
|
248
|
+
# Remix OS
|
|
249
|
+
##########
|
|
250
|
+
- regex: 'RemixOS|Remix (?:Pro|Mini)'
|
|
251
|
+
name: 'Remix OS'
|
|
252
|
+
versions:
|
|
253
|
+
- regex: 'RemixOS 5'
|
|
254
|
+
version: '1'
|
|
255
|
+
- regex: 'RemixOS 6|Remix Mini'
|
|
256
|
+
version: '2'
|
|
257
|
+
- regex: 'Remix Pro'
|
|
258
|
+
version: '3'
|
|
259
|
+
|
|
260
|
+
##########
|
|
261
|
+
# FreeBSD
|
|
262
|
+
##########
|
|
263
|
+
- regex: 'FreeBSD.+Android'
|
|
264
|
+
name: 'FreeBSD'
|
|
265
|
+
version: ''
|
|
266
|
+
|
|
267
|
+
##########
|
|
268
|
+
# Android TV (https://android.com/tv/)
|
|
269
|
+
##########
|
|
270
|
+
- regex: 'Linux; Andr0id[; ](\d+[\.\d]*)'
|
|
271
|
+
name: 'Android TV'
|
|
272
|
+
version: '$1'
|
|
273
|
+
|
|
274
|
+
- regex: 'Android[; ](\d+[\.\d]*).+(?:(?:Android|AT&T) TV|AOSP on r33a0)'
|
|
275
|
+
name: 'Android TV'
|
|
276
|
+
version: '$1'
|
|
277
|
+
|
|
278
|
+
- regex: 'Windows.+Andr0id TV|.+K_?Android_?TV_'
|
|
279
|
+
name: 'Android TV'
|
|
280
|
+
version: ''
|
|
281
|
+
|
|
282
|
+
##########
|
|
283
|
+
# Android SDK Level Api
|
|
284
|
+
##########
|
|
285
|
+
- regex: '(?:Android API \d+|\d+/tclwebkit(?:\d+[\.\d]*))'
|
|
286
|
+
name: 'Android'
|
|
287
|
+
versions:
|
|
288
|
+
- regex: '(?:Android API 34|34/tclwebkit)'
|
|
289
|
+
version: '14'
|
|
290
|
+
- regex: '(?:Android API 33|33/tclwebkit)'
|
|
291
|
+
version: '13'
|
|
292
|
+
- regex: '(?:Android API 32|32/tclwebkit)'
|
|
293
|
+
version: '12.1'
|
|
294
|
+
- regex: '(?:Android API 31|31/tclwebkit)'
|
|
295
|
+
version: '12'
|
|
296
|
+
- regex: '(?:Android API 30|30/tclwebkit)'
|
|
297
|
+
version: '11'
|
|
298
|
+
- regex: '(?:Android API 29|29/tclwebkit)'
|
|
299
|
+
version: '10'
|
|
300
|
+
- regex: '(?:Android API 28|28/tclwebkit)'
|
|
301
|
+
version: '9'
|
|
302
|
+
- regex: '(?:Android API 27|27/tclwebkit)'
|
|
303
|
+
version: '8.1'
|
|
304
|
+
- regex: '(?:Android API 26|26/tclwebkit)'
|
|
305
|
+
version: '8'
|
|
306
|
+
- regex: '(?:Android API 25|25/tclwebkit)'
|
|
307
|
+
version: '7.1'
|
|
308
|
+
- regex: '(?:Android API 24|24/tclwebkit)'
|
|
309
|
+
version: '7'
|
|
310
|
+
- regex: '(?:Android API 23|23/tclwebkit)'
|
|
311
|
+
version: '6'
|
|
312
|
+
- regex: '(?:Android API 22|22/tclwebkit)'
|
|
313
|
+
version: '5.1'
|
|
314
|
+
- regex: '21/tclwebkit'
|
|
315
|
+
version: '5'
|
|
316
|
+
- regex: '(?:20|19)/tclwebkit'
|
|
317
|
+
version: '4.4'
|
|
318
|
+
- regex: '18/tclwebkit'
|
|
319
|
+
version: '4.3'
|
|
320
|
+
- regex: '17/tclwebkit'
|
|
321
|
+
version: '4.2'
|
|
322
|
+
- regex: '16/tclwebkit'
|
|
323
|
+
version: '4.2'
|
|
324
|
+
- regex: '15/tclwebkit'
|
|
325
|
+
version: '4.0.3'
|
|
326
|
+
- regex: '15/tclwebkit'
|
|
327
|
+
version: '4.0.1'
|
|
328
|
+
|
|
135
329
|
##########
|
|
136
330
|
# Android
|
|
137
331
|
##########
|
|
@@ -139,11 +333,11 @@
|
|
|
139
333
|
name: 'Android'
|
|
140
334
|
version: '6'
|
|
141
335
|
|
|
142
|
-
- regex: '(?:Podbean|Podimo)(?:.*)/Android'
|
|
336
|
+
- regex: '(?:Podbean|Podimo)(?:.*)/Android|Rutube(?:TV)?BlackAndroid'
|
|
143
337
|
name: 'Android'
|
|
144
338
|
version: ''
|
|
145
339
|
|
|
146
|
-
- regex: 'Android OS/(\d+[\.\d]*)'
|
|
340
|
+
- regex: '(?:Android OS|OMDroid)[ /](\d+[\.\d]*)'
|
|
147
341
|
name: 'Android'
|
|
148
342
|
version: '$1'
|
|
149
343
|
|
|
@@ -159,7 +353,7 @@
|
|
|
159
353
|
name: 'Android'
|
|
160
354
|
version: '$1'
|
|
161
355
|
|
|
162
|
-
- regex: '(?:(?:Orca-)?Android|Adr)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
|
|
356
|
+
- regex: '(?:(?:Orca-)?(?<!like )Android|Adr|AOSP)[ /]?(?:[a-z]+ )?(\d+[\.\d]*)'
|
|
163
357
|
name: 'Android'
|
|
164
358
|
version: '$1'
|
|
165
359
|
|
|
@@ -175,7 +369,7 @@
|
|
|
175
369
|
name: 'Android'
|
|
176
370
|
version: '$1'
|
|
177
371
|
|
|
178
|
-
- regex: ' Adr |Android|Silk-Accelerated=[a-z]{4,5}'
|
|
372
|
+
- regex: ' Adr |DDG-Android|(?<!like )Android|Silk-Accelerated=[a-z]{4,5}'
|
|
179
373
|
name: 'Android'
|
|
180
374
|
version: ''
|
|
181
375
|
|
|
@@ -183,14 +377,10 @@
|
|
|
183
377
|
name: 'Android'
|
|
184
378
|
version: '$1'
|
|
185
379
|
|
|
186
|
-
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe
|
|
380
|
+
- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe|Sonos/.+\(ACR_|Linux x86_64; Quest'
|
|
187
381
|
name: 'Android'
|
|
188
382
|
version: ''
|
|
189
383
|
|
|
190
|
-
- regex: 'Linux; Andr0id[; ](\d+[\.\d]*)'
|
|
191
|
-
name: 'Android'
|
|
192
|
-
version: '$1'
|
|
193
|
-
|
|
194
384
|
# Inverted Android
|
|
195
385
|
- regex: 'Linux; diordnA[; ](\d+[\.\d]*)'
|
|
196
386
|
name: 'Android'
|
|
@@ -245,6 +435,46 @@
|
|
|
245
435
|
##########
|
|
246
436
|
# Linux
|
|
247
437
|
##########
|
|
438
|
+
# Linspire (https://www.linspirelinux.com/)
|
|
439
|
+
- regex: 'Linspire'
|
|
440
|
+
name: 'Linspire'
|
|
441
|
+
version: ''
|
|
442
|
+
|
|
443
|
+
# LindowsOS (https://web.archive.org/web/20040304161245/http://www.lindows.com/)
|
|
444
|
+
- regex: 'LindowsOS'
|
|
445
|
+
name: 'LindowsOS'
|
|
446
|
+
version: ''
|
|
447
|
+
|
|
448
|
+
# Zenwalk (http://www.zenwalk.org/)
|
|
449
|
+
- regex: 'Zenwalk GNU Linux'
|
|
450
|
+
name: 'Zenwalk'
|
|
451
|
+
version: ''
|
|
452
|
+
|
|
453
|
+
# Kanotix (http://www.kanotix.com/)
|
|
454
|
+
- regex: 'Linux.+kanotix'
|
|
455
|
+
name: 'Kanotix'
|
|
456
|
+
version: ''
|
|
457
|
+
|
|
458
|
+
# moonOS (https://www.moonos.org/)
|
|
459
|
+
- regex: 'moonOS/(\d+.[\d.]+)'
|
|
460
|
+
name: 'moonOS'
|
|
461
|
+
version: '$1'
|
|
462
|
+
|
|
463
|
+
# Foresight Linux (https://www.foresightlinux.org/)
|
|
464
|
+
- regex: 'Foresight Linux'
|
|
465
|
+
name: 'Foresight Linux'
|
|
466
|
+
version: ''
|
|
467
|
+
|
|
468
|
+
# Pardus (https://www.pardus.org.tr/)
|
|
469
|
+
- regex: 'Pardus/(\d+.[\d.]+)'
|
|
470
|
+
name: 'Pardus'
|
|
471
|
+
version: '$1'
|
|
472
|
+
|
|
473
|
+
# Pure OS (https://pureos.net/)
|
|
474
|
+
- regex: 'Librem 5'
|
|
475
|
+
name: 'PureOS'
|
|
476
|
+
version: ''
|
|
477
|
+
|
|
248
478
|
# OpenWrt (https://openwrt.org/)
|
|
249
479
|
- regex: 'uclient-fetch'
|
|
250
480
|
name: 'OpenWrt'
|
|
@@ -255,7 +485,7 @@
|
|
|
255
485
|
name: 'Roku OS'
|
|
256
486
|
version: '$1'
|
|
257
487
|
|
|
258
|
-
- regex: 'Roku(?:OS)?/(?:DVP|Pluto)?-?(\d+[\.\d]+)'
|
|
488
|
+
- regex: 'Roku(?:OS|4640X)?/(?:DVP|Pluto)?-?(\d+[\.\d]+)?'
|
|
259
489
|
name: 'Roku OS'
|
|
260
490
|
version: '$1'
|
|
261
491
|
|
|
@@ -308,6 +538,34 @@
|
|
|
308
538
|
name: 'VectorLinux'
|
|
309
539
|
version: '$1'
|
|
310
540
|
|
|
541
|
+
- regex: 'CentOS Stream (\d)'
|
|
542
|
+
name: 'CentOS Stream'
|
|
543
|
+
version: '$1'
|
|
544
|
+
|
|
545
|
+
- regex: '.+.el(\d+(?:[_\.]\d+)*).(?:centos|x86_64)'
|
|
546
|
+
name: 'CentOS'
|
|
547
|
+
version: '$1'
|
|
548
|
+
|
|
549
|
+
- regex: 'CentOS Linux (\d)'
|
|
550
|
+
name: 'CentOS'
|
|
551
|
+
version: '$1'
|
|
552
|
+
|
|
553
|
+
- regex: 'Fedora/.+.fc(\d+)'
|
|
554
|
+
name: 'Fedora'
|
|
555
|
+
version: '$1'
|
|
556
|
+
|
|
557
|
+
- regex: 'Mandriva(?: Linux)?/.+mdv(\d+[\.\d]+)'
|
|
558
|
+
name: 'Mandriva'
|
|
559
|
+
version: '$1'
|
|
560
|
+
|
|
561
|
+
- regex: 'Linux Mint/(\d)'
|
|
562
|
+
name: 'Mint'
|
|
563
|
+
version: '$1'
|
|
564
|
+
|
|
565
|
+
- regex: 'Zorin OS (\d+)'
|
|
566
|
+
name: 'ZorinOS'
|
|
567
|
+
version: '$1'
|
|
568
|
+
|
|
311
569
|
- regex: 'Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\d+[\.\d]+)'
|
|
312
570
|
name: '$1'
|
|
313
571
|
version: '$2'
|
|
@@ -320,12 +578,14 @@
|
|
|
320
578
|
name: '$1'
|
|
321
579
|
version: '$2'
|
|
322
580
|
|
|
581
|
+
- regex: '.+redhat-linux-gnu'
|
|
582
|
+
name: 'Red Hat'
|
|
583
|
+
version: ''
|
|
584
|
+
|
|
323
585
|
- regex: 'OS ROSA; Linux'
|
|
324
586
|
name: 'Rosa'
|
|
325
587
|
version: ''
|
|
326
588
|
|
|
327
|
-
# generic linux match -> end of file
|
|
328
|
-
|
|
329
589
|
##########
|
|
330
590
|
# webOS
|
|
331
591
|
##########
|
|
@@ -335,12 +595,16 @@
|
|
|
335
595
|
versions:
|
|
336
596
|
- regex: 'WEBOS(\d+[\.\d]+)'
|
|
337
597
|
version: '$1'
|
|
338
|
-
- regex: 'Web0S; Linux/SmartTV.+
|
|
598
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/79'
|
|
599
|
+
version: '6'
|
|
600
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/68'
|
|
339
601
|
version: '5'
|
|
340
|
-
- regex: 'Web0S; Linux/SmartTV.+
|
|
602
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/53'
|
|
341
603
|
version: '4'
|
|
342
|
-
- regex: 'Web0S; Linux/SmartTV.+
|
|
604
|
+
- regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/38'
|
|
343
605
|
version: '3'
|
|
606
|
+
- regex: 'WEBOS1'
|
|
607
|
+
version: '1'
|
|
344
608
|
- regex: 'Web0S; Linux/SmartTV.+Safari/538'
|
|
345
609
|
version: '2'
|
|
346
610
|
- regex: 'Web0S; Linux/SmartTV.+Safari/537'
|
|
@@ -358,7 +622,6 @@
|
|
|
358
622
|
name: 'MorphOS'
|
|
359
623
|
version: '$1'
|
|
360
624
|
|
|
361
|
-
|
|
362
625
|
##########
|
|
363
626
|
# Windows
|
|
364
627
|
##########
|
|
@@ -378,7 +641,7 @@
|
|
|
378
641
|
name: 'Windows'
|
|
379
642
|
version: ''
|
|
380
643
|
|
|
381
|
-
- regex: '(?:Windows(?:-Update-Agent)?|Microsoft-(?:CryptoAPI|Delivery-Optimization|WebDAV-MiniRedir|WNS))/(\d+\.\d+)'
|
|
644
|
+
- regex: '(?:Windows(?:-Update-Agent)?|Microsoft-(?:CryptoAPI|Delivery-Optimization|WebDAV-MiniRedir|WNS)|WINDOWS_64)/(\d+\.\d+)'
|
|
382
645
|
name: 'Windows'
|
|
383
646
|
version: '$1'
|
|
384
647
|
|
|
@@ -438,10 +701,14 @@
|
|
|
438
701
|
name: 'Windows'
|
|
439
702
|
version: '3.1'
|
|
440
703
|
|
|
441
|
-
- regex: 'Windows|.+win32|Win64|MSDW|HandBrake Win Upd|Microsoft BITS'
|
|
704
|
+
- regex: 'Windows|.+win32|Win64|MSDW|HandBrake Win Upd|Microsoft BITS|ms-office; MSOffice'
|
|
442
705
|
name: 'Windows'
|
|
443
706
|
version: ''
|
|
444
707
|
|
|
708
|
+
- regex: 'OS/Microsoft_Windows_NT_(\d+\.\d+)'
|
|
709
|
+
name: 'Windows'
|
|
710
|
+
version: '$1'
|
|
711
|
+
|
|
445
712
|
##########
|
|
446
713
|
# Haiku OS
|
|
447
714
|
##########
|
|
@@ -452,11 +719,15 @@
|
|
|
452
719
|
##########
|
|
453
720
|
# tvOS (https://developer.apple.com/tvos/)
|
|
454
721
|
##########
|
|
455
|
-
- regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-
|
|
722
|
+
- regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-7])[_\.]\d+(?:[_.]\d+)*)'
|
|
723
|
+
name: 'tvOS'
|
|
724
|
+
version: '$1'
|
|
725
|
+
|
|
726
|
+
- regex: 'iOS(?:; |/)((?:9|1[0-7]).\d+(?:[_\.]\d+)*) (?:model/)?AppleTV'
|
|
456
727
|
name: 'tvOS'
|
|
457
728
|
version: '$1'
|
|
458
729
|
|
|
459
|
-
- regex: '
|
|
730
|
+
- regex: 'tvOS((?:9|1[0-7]).\d+(?:[_\.]\d+)*);'
|
|
460
731
|
name: 'tvOS'
|
|
461
732
|
version: '$1'
|
|
462
733
|
|
|
@@ -466,31 +737,34 @@
|
|
|
466
737
|
- regex: '(?:Watch1,[12]/|Watch OS,|watchOS[ /])(\d+[\.\d]*)'
|
|
467
738
|
name: 'watchOS'
|
|
468
739
|
version: '$1'
|
|
740
|
+
- regex: 'Apple Watch(?!;)'
|
|
741
|
+
name: 'watchOS'
|
|
742
|
+
version: ''
|
|
469
743
|
|
|
470
744
|
##########
|
|
471
745
|
# iPadOS (https://www.apple.com/ipados/)
|
|
472
746
|
##########
|
|
473
|
-
- regex: 'FBMD/iPad;.*FBSV/ ?(1[
|
|
747
|
+
- regex: 'FBMD/iPad;.*FBSV/ ?(1[3-6]).(\d+[\.\d]*);'
|
|
474
748
|
name: 'iPadOS'
|
|
475
749
|
version: '$1.$2'
|
|
476
750
|
|
|
477
|
-
- regex: 'iPad
|
|
751
|
+
- regex: 'iPad(?:OS)?/(1[3-6]).(\d+[\.\d]*)'
|
|
478
752
|
name: 'iPadOS'
|
|
479
753
|
version: '$1.$2'
|
|
480
754
|
|
|
481
|
-
- regex: '^iPad(?:\d+[\,\d]*)/(1[
|
|
755
|
+
- regex: '^iPad(?:\d+[\,\d]*)/(1[3-6]).(\d+[\.\d]*)'
|
|
482
756
|
name: 'iPadOS'
|
|
483
757
|
version: '$1.$2'
|
|
484
758
|
|
|
485
|
-
- regex: 'iPad(?:; iOS|.+CPU OS) ((1[
|
|
759
|
+
- regex: 'iPad(?:; (?:iOS|iPadOS|iPhone OS)|.+CPU OS) ((1[3-6])+(?:[_\.]\d+)*)'
|
|
486
760
|
name: 'iPadOS'
|
|
487
761
|
version: '$1'
|
|
488
762
|
|
|
489
|
-
- regex: 'iOS/(1[
|
|
763
|
+
- regex: 'iOS/(1[3-6]).(\d+[\.\d]*).+Apple/iPad'
|
|
490
764
|
name: 'iPadOS'
|
|
491
765
|
version: '$1.$2'
|
|
492
766
|
|
|
493
|
-
- regex: 'iPhone OS,(1[
|
|
767
|
+
- regex: 'iPhone OS,(1[3-6]).(\d+[\.\d]*).+iPad'
|
|
494
768
|
name: 'iPadOS'
|
|
495
769
|
version: '$1.$2'
|
|
496
770
|
|
|
@@ -509,13 +783,41 @@
|
|
|
509
783
|
name: 'iOS'
|
|
510
784
|
version: '$1'
|
|
511
785
|
|
|
786
|
+
- regex: 'iOS (\d+[\.\d]+)\)'
|
|
787
|
+
name: 'iOS'
|
|
788
|
+
version: '$1'
|
|
789
|
+
|
|
512
790
|
- regex: '(?:iPhone ?OS|iOS(?: Version)?)(?:/|; |,)(\d+[\.\d]+)'
|
|
513
791
|
name: 'iOS'
|
|
514
792
|
version: '$1'
|
|
515
793
|
|
|
516
|
-
- regex: 'CFNetwork/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac))'
|
|
794
|
+
- regex: '^(?!com.apple.Safari.SearchHelper|Safari).*CFNetwork/.+ Darwin/(\d+[\.\d]+)(?!.*(?:x86_64|i386|PowerMac|Power%20Macintosh))'
|
|
517
795
|
name: 'iOS'
|
|
518
796
|
versions:
|
|
797
|
+
- regex: 'Darwin/23.0.0'
|
|
798
|
+
version: '17.0'
|
|
799
|
+
- regex: 'Darwin/22.6.0'
|
|
800
|
+
version: '16.6'
|
|
801
|
+
- regex: 'Darwin/22.5.0'
|
|
802
|
+
version: '16.5'
|
|
803
|
+
- regex: 'Darwin/22.4.0'
|
|
804
|
+
version: '16.4'
|
|
805
|
+
- regex: 'Darwin/22.3.0'
|
|
806
|
+
version: '16.3'
|
|
807
|
+
- regex: 'Darwin/22.2.0'
|
|
808
|
+
version: '16.2'
|
|
809
|
+
- regex: 'Darwin/22.1.0'
|
|
810
|
+
version: '16.1'
|
|
811
|
+
- regex: 'Darwin/22.0.0'
|
|
812
|
+
version: '16.0'
|
|
813
|
+
- regex: 'Darwin/21.6.0'
|
|
814
|
+
version: '15.6'
|
|
815
|
+
- regex: 'Darwin/21.5.0'
|
|
816
|
+
version: '15.5'
|
|
817
|
+
- regex: 'Darwin/21.4.0'
|
|
818
|
+
version: '15.4'
|
|
819
|
+
- regex: 'Darwin/21.3.0'
|
|
820
|
+
version: '15.3'
|
|
519
821
|
- regex: 'Darwin/21.2.0'
|
|
520
822
|
version: '15.2'
|
|
521
823
|
- regex: 'Darwin/21.1.0'
|
|
@@ -649,7 +951,7 @@
|
|
|
649
951
|
name: 'iOS'
|
|
650
952
|
version: '$1.$2.$3'
|
|
651
953
|
|
|
652
|
-
- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\d+(?:[_\.]\d+)*)'
|
|
954
|
+
- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iPhone.+ OS|iOS)[ _/](\d+(?:[_\.]\d+)*)'
|
|
653
955
|
name: 'iOS'
|
|
654
956
|
version: '$1'
|
|
655
957
|
|
|
@@ -681,7 +983,11 @@
|
|
|
681
983
|
name: 'iOS'
|
|
682
984
|
version: '$1'
|
|
683
985
|
|
|
684
|
-
- regex: '(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
|
986
|
+
- regex: '(?:Apple-)?(?<!like )(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
|
|
987
|
+
name: 'iOS'
|
|
988
|
+
version: '$1'
|
|
989
|
+
|
|
990
|
+
- regex: 'dv\(iPh.+ov\((\d+(?:[_\.]\d+)*)\);'
|
|
685
991
|
name: 'iOS'
|
|
686
992
|
version: '$1'
|
|
687
993
|
|
|
@@ -708,9 +1014,33 @@
|
|
|
708
1014
|
##########
|
|
709
1015
|
# Mac
|
|
710
1016
|
##########
|
|
711
|
-
- regex: 'CFNetwork/.+ Darwin/(?:[\d\.]+).+(?:x86_64|i386)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|PowerMac'
|
|
1017
|
+
- regex: 'CFNetwork/.+ Darwin/(?:[\d\.]+).+(?:x86_64|i386|Power%20Macintosh)|(?:x86_64-apple-)?darwin(?:[\d\.]+)|PowerMac|com.apple.Safari.SearchHelper|^Safari'
|
|
712
1018
|
name: 'Mac'
|
|
713
1019
|
versions:
|
|
1020
|
+
- regex: '(?:x86_64-apple-)?Darwin/?23.0.0'
|
|
1021
|
+
version: '14.0'
|
|
1022
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.6.0'
|
|
1023
|
+
version: '13.5'
|
|
1024
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.5.0'
|
|
1025
|
+
version: '13.4'
|
|
1026
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.4.0'
|
|
1027
|
+
version: '13.3'
|
|
1028
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.3.0'
|
|
1029
|
+
version: '13.2'
|
|
1030
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.2.0'
|
|
1031
|
+
version: '13.1'
|
|
1032
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.1.0'
|
|
1033
|
+
version: '13.0.1'
|
|
1034
|
+
- regex: '(?:x86_64-apple-)?Darwin/?22.0.0'
|
|
1035
|
+
version: '13.0'
|
|
1036
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.6.0'
|
|
1037
|
+
version: '12.5'
|
|
1038
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.5.0'
|
|
1039
|
+
version: '12.4'
|
|
1040
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.4.0'
|
|
1041
|
+
version: '12.3'
|
|
1042
|
+
- regex: '(?:x86_64-apple-)?Darwin/?21.3.0'
|
|
1043
|
+
version: '12.2'
|
|
714
1044
|
- regex: '(?:x86_64-apple-)?Darwin/?21.2.0'
|
|
715
1045
|
version: '12.1'
|
|
716
1046
|
- regex: '(?:x86_64-apple-)?Darwin/?21.1.0'
|
|
@@ -866,7 +1196,7 @@
|
|
|
866
1196
|
name: 'Mac'
|
|
867
1197
|
version: '$1'
|
|
868
1198
|
|
|
869
|
-
- regex: '(?:macOS[/,]|Mac-)(\d+[\.\d]+)'
|
|
1199
|
+
- regex: '(?:macOS[ /,]|Mac-)(\d+[\.\d]+)'
|
|
870
1200
|
name: 'Mac'
|
|
871
1201
|
version: '$1'
|
|
872
1202
|
|
|
@@ -888,10 +1218,17 @@
|
|
|
888
1218
|
##########
|
|
889
1219
|
# ChromeOS
|
|
890
1220
|
##########
|
|
891
|
-
- regex: 'CrOS [a-z0-9_]+
|
|
1221
|
+
- regex: 'CrOS [a-z0-9_]+ (\d+[\.\d]+)'
|
|
892
1222
|
name: 'Chrome OS'
|
|
893
1223
|
version: '$1'
|
|
894
1224
|
|
|
1225
|
+
##########
|
|
1226
|
+
# Fuchsia
|
|
1227
|
+
##########
|
|
1228
|
+
- regex: 'Fuchsia'
|
|
1229
|
+
name: 'Fuchsia'
|
|
1230
|
+
version: ''
|
|
1231
|
+
|
|
895
1232
|
##########
|
|
896
1233
|
# BlackBerry
|
|
897
1234
|
##########
|
|
@@ -918,9 +1255,9 @@
|
|
|
918
1255
|
##########
|
|
919
1256
|
# BeOS
|
|
920
1257
|
##########
|
|
921
|
-
- regex: 'BeOS'
|
|
1258
|
+
- regex: 'BeOS[ +]?(\d[.\d]*)?'
|
|
922
1259
|
name: 'BeOS'
|
|
923
|
-
version: ''
|
|
1260
|
+
version: '$1'
|
|
924
1261
|
|
|
925
1262
|
##########
|
|
926
1263
|
# Symbian
|
|
@@ -1018,20 +1355,6 @@
|
|
|
1018
1355
|
name: 'WebTV'
|
|
1019
1356
|
version: '$1'
|
|
1020
1357
|
|
|
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
1358
|
|
|
1036
1359
|
##########
|
|
1037
1360
|
# Unix
|
|
@@ -1083,10 +1406,14 @@
|
|
|
1083
1406
|
name: 'Nintendo'
|
|
1084
1407
|
version: '$1'
|
|
1085
1408
|
|
|
1086
|
-
- regex: 'PlayStation
|
|
1409
|
+
- regex: 'PlayStation.+; Linux (\d+[\.\d]+)'
|
|
1087
1410
|
name: 'PlayStation'
|
|
1088
1411
|
version: '$1'
|
|
1089
1412
|
|
|
1413
|
+
- regex: 'PlayStation ?(\d)(?:[/ ](?:Pro )?(\d+[\.\d]+))?'
|
|
1414
|
+
name: 'PlayStation'
|
|
1415
|
+
version: '$1.$2'
|
|
1416
|
+
|
|
1090
1417
|
- regex: 'Xbox|KIN\.(?:One|Two)'
|
|
1091
1418
|
name: 'Xbox'
|
|
1092
1419
|
version: '360'
|
|
@@ -1112,7 +1439,11 @@
|
|
|
1112
1439
|
###########
|
|
1113
1440
|
# Linux (Generic)
|
|
1114
1441
|
###########
|
|
1115
|
-
- regex: 'Linux
|
|
1442
|
+
- regex: 'Linux/(\d+[\.\d]+)'
|
|
1443
|
+
name: 'GNU/Linux'
|
|
1444
|
+
version: '$1'
|
|
1445
|
+
|
|
1446
|
+
- regex: 'Linux(?:OS)?[^a-z]|Cinnamon/(?:\d+[\.\d]+)|.+(?:pc|unknown)-linux-gnu'
|
|
1116
1447
|
name: 'GNU/Linux'
|
|
1117
1448
|
version: ''
|
|
1118
1449
|
|