device_detector 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +19 -17
- data/lib/device_detector/browser.rb +16 -2
- data/lib/device_detector/os.rb +10 -2
- data/lib/device_detector/version.rb +1 -1
- data/lib/device_detector.rb +4 -3
- data/regexes/bots.yml +138 -9
- data/regexes/client/browsers.yml +48 -8
- data/regexes/client/feed_readers.yml +31 -23
- data/regexes/client/hints/apps.yml +22 -0
- data/regexes/client/hints/browsers.yml +15 -0
- data/regexes/client/libraries.yml +171 -23
- data/regexes/client/mediaplayers.yml +47 -0
- data/regexes/client/mobile_apps.yml +784 -40
- data/regexes/client/pim.yml +4 -0
- data/regexes/device/consoles.yml +6 -2
- data/regexes/device/mobiles.yml +737 -269
- data/regexes/device/portable_media_player.yml +13 -3
- data/regexes/device/televisions.yml +144 -6
- data/regexes/oss.yml +161 -96
- metadata +4 -3
data/regexes/client/browsers.yml
CHANGED
@@ -5,6 +5,41 @@
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
8
|
+
# Roku Browser (https://www.roku.com/)
|
9
|
+
- regex: 'RokuBrowser/(\d+\.[\.\d]+)'
|
10
|
+
name: 'Roku Browser'
|
11
|
+
version: '$1'
|
12
|
+
engine:
|
13
|
+
default: 'Blink'
|
14
|
+
|
15
|
+
# PICO Browser (https://www.picoxr.com/)
|
16
|
+
- regex: 'PicoBrowser/(\d+\.[\.\d]+)'
|
17
|
+
name: 'PICO Browser'
|
18
|
+
version: '$1'
|
19
|
+
engine:
|
20
|
+
default: 'Blink'
|
21
|
+
|
22
|
+
# ALVA (https://oyealva.com/)
|
23
|
+
- regex: 'Alva/(\d+\.[\.\d]+)'
|
24
|
+
name: 'ALVA'
|
25
|
+
version: '$1'
|
26
|
+
engine:
|
27
|
+
default: 'Blink'
|
28
|
+
|
29
|
+
# Norton Secure Browser (https://norton.com/products/norton-secure-browser)
|
30
|
+
- regex: 'Norton/(\d+\.[\.\d]+)'
|
31
|
+
name: 'Norton Secure Browser'
|
32
|
+
version: '$1'
|
33
|
+
engine:
|
34
|
+
default: 'Blink'
|
35
|
+
|
36
|
+
# Odd Browser (https://play.google.com/store/apps/details?id=com.corproxy.browser)
|
37
|
+
- regex: 'Odd/(\d+\.[\.\d]+)'
|
38
|
+
name: 'Odd Browser'
|
39
|
+
version: '$1'
|
40
|
+
engine:
|
41
|
+
default: 'Blink'
|
42
|
+
|
8
43
|
# APN Browser
|
9
44
|
- regex: 'Safari/537.36 (?:Browser|Navegador)'
|
10
45
|
name: 'APN Browser'
|
@@ -131,7 +166,7 @@
|
|
131
166
|
version: ""
|
132
167
|
|
133
168
|
# Hi Browser (https://play.google.com/store/apps/details?id=com.talpa.hibrowser)
|
134
|
-
- regex: 'HiBrowser/(\d+[\.\d]+)'
|
169
|
+
- regex: 'HiBrowser/v?(\d+[\.\d]+)'
|
135
170
|
name: 'Hi Browser'
|
136
171
|
version: '$1'
|
137
172
|
engine:
|
@@ -427,9 +462,9 @@
|
|
427
462
|
engine:
|
428
463
|
default: 'Blink'
|
429
464
|
|
430
|
-
# Avira
|
431
|
-
- regex: '
|
432
|
-
name: 'Avira
|
465
|
+
# Avira Secure Browser (https://www.avira.com/en/avira-secure-browser)
|
466
|
+
- regex: 'Avira(?:Scout)?/(\d+[\.\d]+)'
|
467
|
+
name: 'Avira Secure Browser'
|
433
468
|
version: '$1'
|
434
469
|
engine:
|
435
470
|
default: 'Blink'
|
@@ -553,12 +588,17 @@
|
|
553
588
|
engine:
|
554
589
|
default: 'Blink'
|
555
590
|
|
556
|
-
# T-Browser (https://play.google.com/store/apps/details?id=com.tcl.browser)
|
591
|
+
# T-Browser and new BrowseHere (https://play.google.com/store/apps/details?id=com.tcl.browser)
|
557
592
|
- regex: 'Tbrowser/(\d+[\.\d]+)'
|
558
593
|
name: 'T-Browser'
|
559
594
|
version: '$1'
|
560
595
|
engine:
|
561
596
|
default: 'Blink'
|
597
|
+
- regex: 'com.tcl.browser'
|
598
|
+
name: 'BrowseHere'
|
599
|
+
version: '$1'
|
600
|
+
engine:
|
601
|
+
default: 'Blink'
|
562
602
|
|
563
603
|
# SFive (https://sfive.vn/)
|
564
604
|
- regex: 'SFive(?:_Android)?/.+ Chrome/(\d+[\.\d]+)'
|
@@ -1556,7 +1596,7 @@
|
|
1556
1596
|
default: 'WebKit'
|
1557
1597
|
|
1558
1598
|
#Opera
|
1559
|
-
- regex: '(?:Opera Tablet.*Version|Opera/.+Opera Mobi.+Version|Mobile.+OPR)/(\d+[\.\d]+)'
|
1599
|
+
- regex: '(?:Opera Tablet.*Version|Opera/.+(?<!SymbOS; )Opera Mobi.+Version|Mobile.+OPR)/(\d+[\.\d]+)'
|
1560
1600
|
name: 'Opera Mobile'
|
1561
1601
|
version: '$1'
|
1562
1602
|
engine:
|
@@ -1588,7 +1628,7 @@
|
|
1588
1628
|
version: '$1'
|
1589
1629
|
engine:
|
1590
1630
|
default: 'Blink'
|
1591
|
-
- regex: 'Opera/(\d+\.[\.\d]+) .*Opera Mobi'
|
1631
|
+
- regex: 'Opera/(\d+\.[\.\d]+) .*(?<!SymbOS; )Opera Mobi'
|
1592
1632
|
name: 'Opera Mobile'
|
1593
1633
|
version: '$1'
|
1594
1634
|
engine:
|
@@ -2685,7 +2725,7 @@
|
|
2685
2725
|
version: '$1'
|
2686
2726
|
engine:
|
2687
2727
|
default: 'WebKit'
|
2688
|
-
- regex: '(?:iPod|(?<!Apple TV; U; CPU )iPhone|iPad)'
|
2728
|
+
- regex: '(?!^AppleCoreMedia/1\.0\.0)(?:iPod|(?<!Apple TV; U; CPU )iPhone|iPad)'
|
2689
2729
|
name: 'Mobile Safari'
|
2690
2730
|
version: ''
|
2691
2731
|
engine:
|
@@ -9,130 +9,138 @@
|
|
9
9
|
name: 'Akregator'
|
10
10
|
version: '$1'
|
11
11
|
url: 'http://userbase.kde.org/Akregator'
|
12
|
-
type: 'Feed Reader'
|
13
12
|
|
14
13
|
- regex: 'Apple-PubSub(?:/(\d+[\.\d]+))?'
|
15
14
|
name: 'Apple PubSub'
|
16
15
|
version: '$1'
|
17
16
|
url: 'https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/pubsub.1.html'
|
18
|
-
type: 'Feed Reader'
|
19
17
|
|
20
18
|
- regex: 'BashPodder'
|
21
19
|
name: 'BashPodder'
|
22
20
|
version: ''
|
23
21
|
url: 'http://lincgeek.org/bashpodder/'
|
24
|
-
type: 'Feed Reader'
|
25
22
|
|
26
|
-
- regex: 'Breaker/v([\d\.]+)'
|
23
|
+
- regex: 'Breaker/v?([\d\.]+)'
|
27
24
|
name: 'Breaker'
|
28
25
|
version: '$1'
|
29
26
|
url: 'https://www.breaker.audio/'
|
30
|
-
type: 'Feed Reader App'
|
31
27
|
|
32
28
|
- regex: 'FeedDemon(?:/(\d+[\.\d]+))?'
|
33
29
|
name: 'FeedDemon'
|
34
30
|
version: '$1'
|
35
31
|
url: 'http://www.feeddemon.com/'
|
36
|
-
type: 'Feed Reader'
|
37
32
|
|
38
33
|
- regex: 'Feeddler(?:RSS|PRO)(?:[/ ](\d+[\.\d]+))?'
|
39
34
|
name: 'Feeddler RSS Reader'
|
40
35
|
version: '$1'
|
41
36
|
url: 'http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/'
|
42
|
-
type: 'Feed Reader App'
|
43
37
|
|
44
38
|
- regex: 'QuiteRSS(?:[/ ](\d+[\.\d]+))?'
|
45
39
|
name: 'QuiteRSS'
|
46
40
|
version: '$1'
|
47
41
|
url: 'https://quiterss.org'
|
48
|
-
type: 'Feed Reader App'
|
49
42
|
|
50
43
|
- regex: 'gPodder/([\d\.]+)'
|
51
44
|
name: 'gPodder'
|
52
45
|
version: '$1'
|
53
46
|
url: 'http://gpodder.org/'
|
54
|
-
type: 'Feed Reader App'
|
55
47
|
|
56
48
|
- regex: 'JetBrains Omea Reader(?:[/ ](\d+[\.\d]+))?'
|
57
49
|
name: 'JetBrains Omea Reader'
|
58
50
|
version: '$1'
|
59
51
|
url: 'http://www.jetbrains.com/omea/reader/'
|
60
|
-
type: 'Feed Reader'
|
61
52
|
|
62
53
|
- regex: 'Liferea(?:[/ ](\d+[\.\d]+))?'
|
63
54
|
name: 'Liferea'
|
64
55
|
version: '$1'
|
65
56
|
url: 'http://liferea.sf.net/'
|
66
|
-
type: 'Feed Reader'
|
67
57
|
|
68
58
|
- regex: '(?:NetNewsWire|Evergreen.+MacOS)(?:[/ ](\d+[\.\d]+))?'
|
69
59
|
name: 'NetNewsWire'
|
70
60
|
version: '$1'
|
71
61
|
url: 'http://netnewswireapp.com/'
|
72
|
-
type: 'Feed Reader'
|
73
62
|
|
74
63
|
- regex: 'NewsBlur (?:iPhone|iPad) App(?: v(\d+[\.\d]+))?'
|
75
64
|
name: 'NewsBlur Mobile App'
|
76
65
|
version: '$1'
|
77
66
|
url: 'http://www.newsblur.com'
|
78
|
-
type: 'Feed Reader App'
|
79
67
|
|
80
68
|
- regex: 'NewsBlur(?:/(\d+[\.\d]+))'
|
81
69
|
name: 'NewsBlur'
|
82
70
|
version: '$1'
|
83
71
|
url: 'http://www.newsblur.com'
|
84
|
-
type: 'Feed Reader'
|
85
72
|
|
86
73
|
- regex: 'newsbeuter(?:[/ ](\d+[\.\d]+))?'
|
87
74
|
name: 'Newsbeuter'
|
88
75
|
version: '$1'
|
89
76
|
url: 'http://www.newsbeuter.org/'
|
90
|
-
type: 'Feed Reader'
|
91
77
|
|
92
78
|
- regex: 'PritTorrent/([\d\.]+)'
|
93
79
|
name: 'PritTorrent'
|
94
80
|
version: '$1'
|
95
81
|
url: 'http://bitlove.org'
|
96
|
-
type: 'Feed Reader'
|
97
82
|
|
98
83
|
- regex: 'Pulp[/ ](\d+[\.\d]+)'
|
99
84
|
name: 'Pulp'
|
100
85
|
version: '$1'
|
101
86
|
url: 'http://www.acrylicapps.com/pulp/'
|
102
|
-
type: 'Feed Reader App'
|
103
87
|
|
104
88
|
- regex: 'ReadKit(?:[/ ](\d+[\.\d]+))?'
|
105
89
|
name: 'ReadKit'
|
106
90
|
version: '$1'
|
107
91
|
url: 'http://readkitapp.com/'
|
108
|
-
type: 'Feed Reader App'
|
109
92
|
|
110
93
|
- regex: 'Reeder[/ ](\d+[\.\d]+)'
|
111
94
|
name: 'Reeder'
|
112
95
|
version: '$1'
|
113
96
|
url: 'http://reederapp.com/'
|
114
|
-
type: 'Feed Reader App'
|
115
97
|
|
116
98
|
- regex: 'RSSBandit(?:[/ ](\d+[\.\d]+))?'
|
117
99
|
name: 'RSS Bandit'
|
118
100
|
version: '$1'
|
119
101
|
url: 'http://www.rssbandit.org)'
|
120
|
-
type: 'Feed Reader'
|
121
102
|
|
122
103
|
- regex: 'RSS Junkie(?:[/ ](\d+[\.\d]+))?'
|
123
104
|
name: 'RSS Junkie'
|
124
105
|
version: '$1'
|
125
106
|
url: 'https://play.google.com/store/apps/details?id=com.bitpowder.rssjunkie'
|
126
|
-
type: 'Feed Reader App'
|
127
107
|
|
128
108
|
- regex: 'RSSOwl(?:[/ ](\d+[\.\d]+))?'
|
129
109
|
name: 'RSSOwl'
|
130
110
|
version: '$1'
|
131
111
|
url: 'http://www.rssowl.org/'
|
132
|
-
type: 'Feed Reader'
|
133
112
|
|
134
113
|
- regex: 'Stringer'
|
135
114
|
name: 'Stringer'
|
136
115
|
version: ''
|
137
116
|
url: 'https://github.com/swanson/stringer'
|
138
|
-
|
117
|
+
|
118
|
+
- regex: '^castero (\d+\.[.\d]+)'
|
119
|
+
name: 'castero'
|
120
|
+
version: '$1'
|
121
|
+
url: 'https://github.com/xgi/castero'
|
122
|
+
|
123
|
+
- regex: '^castget (\d+\.[.\d]+)'
|
124
|
+
name: 'castget'
|
125
|
+
version: '$1'
|
126
|
+
url: 'https://castget.johndal.com/'
|
127
|
+
|
128
|
+
- regex: '^Newsboat/([a-z\d\.]+)'
|
129
|
+
name: 'Newsboat'
|
130
|
+
version: '$1'
|
131
|
+
url: 'https://newsboat.org/index.html'
|
132
|
+
|
133
|
+
- regex: '^Playapod(?: Lite)?/(\d+\.[.\d]+)'
|
134
|
+
name: 'Playapod'
|
135
|
+
version: '$1'
|
136
|
+
url: 'https://playapod.com/'
|
137
|
+
|
138
|
+
- regex: 'PodPuppy (\d+\.[.\d]+)'
|
139
|
+
name: 'PodPuppy'
|
140
|
+
version: '$1'
|
141
|
+
url: 'https://github.com/felixwatts/PodPuppy'
|
142
|
+
|
143
|
+
- regex: '^Reeder/([\d\.]+)'
|
144
|
+
name: 'Reeder'
|
145
|
+
version: '$1'
|
146
|
+
url: 'https://reederapp.com/'
|
@@ -92,6 +92,27 @@
|
|
92
92
|
'mobi.deallauncher.coupons.shopping': 'Coupons & Deals'
|
93
93
|
'com.wukongtv.wkcast.intl': 'Quick Cast'
|
94
94
|
'com.tt.android.dm.view': 'Download Manager'
|
95
|
+
'com.fsecure.ms.kpn.veilig': 'KPN Veilig'
|
96
|
+
'com.fsecure.ms.actshield': 'ACT Shield'
|
97
|
+
'com.fsecure.ms.talktalksa': 'TalkTalk SuperSafe'
|
98
|
+
'com.bifrostwallet.app': 'Bifrost Wallet'
|
99
|
+
'com.anydesk.anydeskandroid': 'AnyDesk Remote Desktop'
|
100
|
+
'com.google.android.youtube': 'YouTube'
|
101
|
+
'io.bluewallet.bluewallet': 'BlueWallet'
|
102
|
+
'com.google.android.apps.searchlite': 'Google Go'
|
103
|
+
'com.snaptube.premium': 'SnapTube'
|
104
|
+
'com.myhomescreen.sms': 'Messenger Home'
|
105
|
+
'com.myhomescreen.email': 'Email Home'
|
106
|
+
'com.myhomescreen.weather': 'Weather Home'
|
107
|
+
'com.myhomescreen.access': 'Big Keyboard'
|
108
|
+
'com.myhomescreen.messenger.home.emoji.lite': 'Messenger Lite'
|
109
|
+
'com.myhomescreen.fitness': 'Fit Home'
|
110
|
+
'com.myhomescreen.news': 'News Home'
|
111
|
+
'com.amazon.webapps.gms.search': 'Google Search App'
|
112
|
+
'com.huawei.fastapp': 'Huawei Quick App Center'
|
113
|
+
'com.flatfish.cal.privacy': 'HideX'
|
114
|
+
'com.sweep.cleaner.trash.junk': 'Sweep'
|
115
|
+
'com.google.android.apps.maps': 'Google Maps'
|
95
116
|
|
96
117
|
# Vpns
|
97
118
|
'org.torproject.android': 'Orbot'
|
@@ -100,3 +121,4 @@
|
|
100
121
|
'com.v2.vpn.security.free': 'V2Free'
|
101
122
|
'com.surfshark.vpnclient.android': 'Surfshark'
|
102
123
|
'com.omshyapps.vpn': 'Omshy VPN'
|
124
|
+
'com.kuto.vpn': 'KUTO VPN'
|
@@ -193,3 +193,18 @@
|
|
193
193
|
'com.ivvi.browser': 'IVVI Browser'
|
194
194
|
'com.nomone.vrbrowser': 'NOMone VR Browser'
|
195
195
|
'com.opus.browser': 'Opus Browser'
|
196
|
+
'com.arvin.browser': 'Arvin'
|
197
|
+
'com.pawxy.browser': 'Pawxy'
|
198
|
+
'com.internet.tvbrowser': 'LUJO TV Browser'
|
199
|
+
'com.logicui.tvbrowser2': 'LogicUI TV Browser'
|
200
|
+
'com.opera.browser.afin': 'Opera'
|
201
|
+
'com.quark.browser': 'Quark'
|
202
|
+
'jp.co.yahoo.android.ybrowser': 'Yahoo! Japan Browser'
|
203
|
+
'com.tv.browser.open': 'Open TV Browser'
|
204
|
+
'com.ornet.torbrowser': 'OrNET Browser'
|
205
|
+
'com.browsbit': 'BrowsBit'
|
206
|
+
'org.mozilla.firefox': 'Firefox Mobile'
|
207
|
+
'com.yandex.browser': 'Yandex Browser'
|
208
|
+
'com.opera.mini.native.beta': 'Opera Mini'
|
209
|
+
'com.sec.android.app.sbrowser': 'Samsung Browser'
|
210
|
+
'com.sec.android.app.sbrowser.lite': 'Samsung Browser Lite'
|
@@ -5,75 +5,109 @@
|
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
- regex: 'Fuzz Faster U Fool v(\d+[\.\d]+)'
|
9
|
+
name: 'FFUF'
|
10
|
+
version: '$1'
|
11
|
+
url: 'https://github.com/ffuf/ffuf'
|
12
|
+
|
13
|
+
- regex: 'Slim Framework'
|
14
|
+
name: 'Slim Framework'
|
15
|
+
version: ''
|
16
|
+
url: 'https://www.slimframework.com/'
|
17
|
+
|
18
|
+
- regex: 'msray-plus'
|
19
|
+
name: 'Msray-Plus'
|
11
20
|
version: ''
|
21
|
+
url: 'https://github.com/super-l/msray'
|
22
|
+
|
23
|
+
- regex: 'HTMLParser(?:/(\d+[\.\d]+))?'
|
24
|
+
name: 'HTML Parser'
|
25
|
+
version: '$1'
|
26
|
+
url: 'https://htmlparser.sourceforge.net/'
|
12
27
|
|
13
|
-
#
|
28
|
+
# got - a nodejs library
|
29
|
+
- regex: '^got(?:/(\d+\.[.\d]+))? \('
|
30
|
+
name: 'got'
|
31
|
+
version: '$1'
|
32
|
+
url: 'https://github.com/sindresorhus/got'
|
33
|
+
|
34
|
+
# Typhoeus
|
14
35
|
- regex: 'Typhoeus'
|
15
36
|
name: 'Typhoeus'
|
16
37
|
version: ''
|
38
|
+
url: 'https://github.com/typhoeus/typhoeus'
|
17
39
|
|
18
|
-
# req
|
40
|
+
# req
|
19
41
|
- regex: 'req/v([\.\d]+)'
|
20
42
|
name: 'req'
|
21
43
|
version: '$1'
|
44
|
+
url: 'https://github.com/imroc/req'
|
22
45
|
|
23
|
-
# quic-go
|
46
|
+
# quic-go
|
24
47
|
- regex: 'quic-go-HTTP/3'
|
25
48
|
name: 'quic-go'
|
26
49
|
version: ''
|
50
|
+
url: 'https://github.com/lucas-clemente/quic-go'
|
27
51
|
|
28
|
-
# Azure Data Factory
|
52
|
+
# Azure Data Factory
|
29
53
|
- regex: 'azure-data-factory(?:/(\d+[\.\d]+))?'
|
30
54
|
name: 'Azure Data Factory'
|
31
55
|
version: '$1'
|
56
|
+
url: 'https://azure.microsoft.com/en-us/products/data-factory/'
|
32
57
|
|
33
|
-
# Dart
|
58
|
+
# Dart
|
34
59
|
- regex: 'Dart(?:/(\d+[\.\d]+))?'
|
35
60
|
name: 'Dart'
|
36
61
|
version: '$1'
|
62
|
+
url: 'https://dart.dev/'
|
37
63
|
|
38
|
-
# r-curl
|
64
|
+
# r-curl
|
39
65
|
- regex: 'r-curl(?:/(\d+[\.\d]+))?'
|
40
66
|
name: 'r-curl'
|
41
67
|
version: '$1'
|
68
|
+
url: 'https://github.com/jeroen/curl'
|
42
69
|
|
43
|
-
# HTTPX
|
70
|
+
# HTTPX
|
44
71
|
- regex: 'python-httpx(?:/(\d+[\.\d]+))?'
|
45
72
|
name: 'HTTPX'
|
46
73
|
version: '$1'
|
74
|
+
url: 'https://www.python-httpx.org/'
|
47
75
|
|
48
|
-
# fasthttp
|
76
|
+
# fasthttp
|
49
77
|
- regex: 'fasthttp(?:/(\d+[\.\d]+))?'
|
50
78
|
name: 'fasthttp'
|
51
79
|
version: '$1'
|
80
|
+
url: 'https://github.com/valyala/fasthttp'
|
52
81
|
|
53
|
-
# GeoIP Update
|
82
|
+
# GeoIP Update
|
54
83
|
- regex: 'geoipupdate(?:/(\d+[\.\d]+))?'
|
55
84
|
name: 'GeoIP Update'
|
56
85
|
version: '$1'
|
86
|
+
url: 'https://github.com/maxmind/geoipupdate'
|
57
87
|
|
58
|
-
# PHP cURL Class
|
88
|
+
# PHP cURL Class
|
59
89
|
- regex: 'PHP-Curl-Class(?:/(\d+[\.\d]+))?'
|
60
90
|
name: 'PHP cURL Class'
|
61
91
|
version: '$1'
|
92
|
+
url: 'https://github.com/php-curl-class/php-curl-class'
|
62
93
|
|
63
|
-
# cPanel HTTP Client
|
94
|
+
# cPanel HTTP Client
|
64
95
|
- regex: 'Cpanel-HTTP-Client(?:/(\d+[\.\d]+))?'
|
65
96
|
name: 'cPanel HTTP Client'
|
66
97
|
version: '$1'
|
98
|
+
url: 'https://www.cpanel.net/'
|
67
99
|
|
68
|
-
# AnyEvent HTTP
|
100
|
+
# AnyEvent HTTP
|
69
101
|
- regex: 'AnyEvent-HTTP(?:/(\d+[\.\d]+))?'
|
70
102
|
name: 'AnyEvent HTTP'
|
71
103
|
version: '$1'
|
104
|
+
url: 'http://software.schmorp.de/pkg/AnyEvent'
|
72
105
|
|
73
|
-
# SlimerJS
|
106
|
+
# SlimerJS
|
74
107
|
- regex: 'SlimerJS/(\d+[\.\d]+)'
|
75
108
|
name: 'SlimerJS'
|
76
109
|
version: '$1'
|
110
|
+
url: 'https://www.slimerjs.org/'
|
77
111
|
|
78
112
|
- regex: 'Wget(?:/(\d+[\.\d]+))?'
|
79
113
|
name: 'Wget'
|
@@ -83,6 +117,11 @@
|
|
83
117
|
name: 'Guzzle (PHP HTTP Client)'
|
84
118
|
version: '$1'
|
85
119
|
|
120
|
+
# symphony php http client
|
121
|
+
- regex: '^Symfony HttpClient/'
|
122
|
+
name: 'Symfony'
|
123
|
+
version: '$1'
|
124
|
+
|
86
125
|
- regex: '(?:lib)?curl(?:/(\d+[\.\d]+))?'
|
87
126
|
name: 'curl'
|
88
127
|
version: '$1'
|
@@ -96,7 +135,7 @@
|
|
96
135
|
version: '$1'
|
97
136
|
url: 'https://pypi.org/project/httplib2/'
|
98
137
|
|
99
|
-
- regex: 'Python-
|
138
|
+
- regex: 'Python-urllib3?(?:/?(\d+[\.\d]+))?'
|
100
139
|
name: 'Python urllib'
|
101
140
|
version: '$1'
|
102
141
|
|
@@ -121,9 +160,11 @@
|
|
121
160
|
version: '$1'
|
122
161
|
url: 'https://github.com/grpc/grpc-java'
|
123
162
|
|
163
|
+
# java library
|
124
164
|
- regex: '(?:okhttp|network-okhttp3)/([\d\.]+)'
|
125
165
|
name: 'OkHttp'
|
126
166
|
version: '$1'
|
167
|
+
|
127
168
|
- regex: 'okhttp3-([\d\.]+)'
|
128
169
|
name: 'OkHttp'
|
129
170
|
version: '$1'
|
@@ -135,12 +176,12 @@
|
|
135
176
|
- regex: 'HTTP_Request2(?:/(\d+[\.\d]+))?'
|
136
177
|
name: 'HTTP_Request2'
|
137
178
|
version: '$1'
|
138
|
-
url: '
|
179
|
+
url: 'https://pear.php.net/package/http_request2'
|
139
180
|
|
140
181
|
- regex: 'Mechanize(?:/(\d+[\.\d]+))?'
|
141
182
|
name: 'Mechanize'
|
142
183
|
version: '$1'
|
143
|
-
url: '
|
184
|
+
url: 'https://github.com/sparklemotion/mechanize'
|
144
185
|
|
145
186
|
- regex: 'aiohttp(?:/(\d+[\.\d]+))?'
|
146
187
|
name: 'aiohttp'
|
@@ -181,7 +222,7 @@
|
|
181
222
|
- regex: 'RestSharp/(\d+[\.\d]+)'
|
182
223
|
name: 'RestSharp'
|
183
224
|
version: '$1'
|
184
|
-
url: '
|
225
|
+
url: 'https://github.com/restsharp/RestSharp'
|
185
226
|
|
186
227
|
- regex: 'scalaj-http/(\d+[\.\d]+)'
|
187
228
|
name: 'ScalaJ HTTP'
|
@@ -193,7 +234,7 @@
|
|
193
234
|
version: '$1'
|
194
235
|
url: 'https://metacpan.org/pod/REST::Client'
|
195
236
|
|
196
|
-
- regex: 'node-fetch
|
237
|
+
- regex: 'node-fetch/?(\d+[\.\d]+)?'
|
197
238
|
name: 'Node Fetch'
|
198
239
|
version: '$1'
|
199
240
|
url: 'https://github.com/node-fetch/node-fetch'
|
@@ -249,7 +290,7 @@
|
|
249
290
|
name: 'Aria2'
|
250
291
|
version: '$1'
|
251
292
|
|
252
|
-
- regex: 'BTWebClient/'
|
293
|
+
- regex: '(?:BTWebClient/|^uTorrent/)'
|
253
294
|
name: 'uTorrent'
|
254
295
|
version: ''
|
255
296
|
|
@@ -281,7 +322,7 @@
|
|
281
322
|
name: 'jsdom'
|
282
323
|
version: '$1'
|
283
324
|
|
284
|
-
# hackney (https://github.com/benoitc/hackney)
|
325
|
+
# hackney (https://github.com/benoitc/hackney) (elixir)
|
285
326
|
- regex: 'hackney/([\.\d]+)'
|
286
327
|
name: 'hackney'
|
287
328
|
version: '$1'
|
@@ -372,3 +413,110 @@
|
|
372
413
|
- regex: 'axios(?:/?(\d+[\.\d]+))?'
|
373
414
|
name: Axios
|
374
415
|
version: '$1'
|
416
|
+
|
417
|
+
# Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks
|
418
|
+
- regex: '^CarrierWave/(\d+\.[.\d]+)'
|
419
|
+
name: 'CarrierWave'
|
420
|
+
version: '$1'
|
421
|
+
|
422
|
+
- regex: '^Deno/(\d+\.[.\d]+)'
|
423
|
+
name: 'Deno'
|
424
|
+
version: '$1'
|
425
|
+
|
426
|
+
# Streaming downloads using net/http, http.rb, HTTPX or wget (ruby)
|
427
|
+
- regex: '^Down/(\d+\.[.\d]+)'
|
428
|
+
name: 'Down'
|
429
|
+
version: '$1'
|
430
|
+
|
431
|
+
# various programs can use this, like vlc, but the underlying lib is ffmpeg
|
432
|
+
- regex: '^Lavf/'
|
433
|
+
name: 'ffmpeg'
|
434
|
+
version: '$1'
|
435
|
+
|
436
|
+
- regex: '^FileDownloader/(\d+\.[.\d]+)'
|
437
|
+
name: 'FileDownloader'
|
438
|
+
version: '$1'
|
439
|
+
|
440
|
+
# Allows managing large files with git, without storing the file contents in git
|
441
|
+
- regex: '^git-annex/(\d+\.[.\d]+)'
|
442
|
+
name: 'git-annex'
|
443
|
+
version: '$1'
|
444
|
+
|
445
|
+
- regex: '^GStreamer(?: souphttpsrc)[ /](\d+\.[.\d]+)?'
|
446
|
+
name: 'GStreamer'
|
447
|
+
version: '$1'
|
448
|
+
|
449
|
+
# A small, simple, correct HTTP/1.1 client (Perl)
|
450
|
+
- regex: '^HTTP-Tiny/(\d+\.[.\d]+)'
|
451
|
+
name: 'HTTP:Tiny'
|
452
|
+
version: '$1'
|
453
|
+
|
454
|
+
- regex: 'KaiOS Downloader'
|
455
|
+
name: 'KaiOS Downloader'
|
456
|
+
version: ''
|
457
|
+
|
458
|
+
# HTTP client/server library for GNOME
|
459
|
+
- regex: '^libsoup/(\d+\.[.\d]+)'
|
460
|
+
name: 'libsoup'
|
461
|
+
version: '$1'
|
462
|
+
|
463
|
+
- regex: '^Android\.LVLDM$'
|
464
|
+
name: 'Android License Verification Library'
|
465
|
+
version: '$1'
|
466
|
+
|
467
|
+
# A file downloader library for Android with pause and resume support
|
468
|
+
- regex: '^PRDownloader$'
|
469
|
+
name: 'PRDownloader'
|
470
|
+
version: ''
|
471
|
+
|
472
|
+
# a rust http library
|
473
|
+
- regex: '^reqwest/(\d+\.[.\d]+)'
|
474
|
+
name: 'reqwest'
|
475
|
+
version: '$1'
|
476
|
+
|
477
|
+
# lua http library
|
478
|
+
- regex: '^resty-requests'
|
479
|
+
name: 'resty-requests'
|
480
|
+
version: ''
|
481
|
+
|
482
|
+
# ruby core lib http download
|
483
|
+
- regex: '^Ruby'
|
484
|
+
name: 'ruby'
|
485
|
+
version: ''
|
486
|
+
|
487
|
+
# SFSafariViewController, some safari service
|
488
|
+
- regex: '^SafariViewService/(\d+\.[.\d]+)'
|
489
|
+
name: 'Safari View Service'
|
490
|
+
version: '$1'
|
491
|
+
|
492
|
+
# a nodejs lib
|
493
|
+
- regex: '^undici$'
|
494
|
+
name: 'undici'
|
495
|
+
version: ''
|
496
|
+
|
497
|
+
# URL, an emacs plugin
|
498
|
+
- regex: '^URL/Emacs Emacs/(\d+\.[.\d]+)'
|
499
|
+
name: 'Emacs'
|
500
|
+
version: '$1'
|
501
|
+
|
502
|
+
- regex: '^FDM[ /]([\d\.]+)'
|
503
|
+
name: 'Free Download Manager'
|
504
|
+
version: '$1'
|
505
|
+
|
506
|
+
# 'https://github.com/lingochamp/okdownload'
|
507
|
+
- regex: 'OkDownload/([\d\.]+)'
|
508
|
+
name: 'OKDownload Library'
|
509
|
+
version: '$1'
|
510
|
+
|
511
|
+
# podcast host https://libsyn.com (probably an importer)
|
512
|
+
- regex: '^Libsyn4-?(?:peek|download)$'
|
513
|
+
name: 'Libsyn'
|
514
|
+
version: ''
|
515
|
+
|
516
|
+
# any ios application that uses apple core media but doesn't set its user
|
517
|
+
# agent will default to this, always with 1.0.0 version.
|
518
|
+
# there was a time when (not even that long ago) apple didn't let you set
|
519
|
+
# a user agent so a ton of random applications still identify themselves this way.
|
520
|
+
- regex: 'AppleCoreMedia/1\.0\.0'
|
521
|
+
name: 'iOS Application'
|
522
|
+
version: ''
|
@@ -77,6 +77,10 @@
|
|
77
77
|
name: 'Winamp'
|
78
78
|
version: '$1'
|
79
79
|
|
80
|
+
- regex: 'J\. River Internet Reader/(\d+\.[.\d]+)'
|
81
|
+
name: 'JRiver Media Center'
|
82
|
+
version: '$1'
|
83
|
+
|
80
84
|
- regex: '(?:Windows-Media-Player|NSPlayer)(?:/(\d+[\.\d]+))?'
|
81
85
|
name: 'Windows Media Player'
|
82
86
|
version: '$1'
|
@@ -124,3 +128,46 @@
|
|
124
128
|
- regex: 'Downcast/(\d+\.[\d\.]+)?'
|
125
129
|
name: 'Downcast'
|
126
130
|
version: '$1'
|
131
|
+
|
132
|
+
- regex: '^Juice/([\d\.]+)'
|
133
|
+
name: 'Juice'
|
134
|
+
version: '$1'
|
135
|
+
|
136
|
+
- regex: 'just_audio/(\d+\.[.\d]+)'
|
137
|
+
name: 'Just Audio'
|
138
|
+
version: '$1'
|
139
|
+
|
140
|
+
# https://apps.kde.org/kasts/ ?
|
141
|
+
- regex: '^Kasts/(\d+\.[.\d]+)'
|
142
|
+
name: 'Kasts'
|
143
|
+
version: '$1'
|
144
|
+
|
145
|
+
- regex: 'MixerBox(?:%20Pro)?/([.\d]+)'
|
146
|
+
name: 'MixerBox'
|
147
|
+
version: '$1'
|
148
|
+
|
149
|
+
- regex: '^MusicBee(?:/(\d+\.[.\d]+))?'
|
150
|
+
name: 'MusicBee'
|
151
|
+
version: '$1'
|
152
|
+
|
153
|
+
- regex: '^amarok/(\d+\.[.\d]+)'
|
154
|
+
name: 'Amarok'
|
155
|
+
version: '$1'
|
156
|
+
|
157
|
+
- regex: 'Hubhopper/([\d\.]+)'
|
158
|
+
name: 'Hubhopper'
|
159
|
+
version: '$1'
|
160
|
+
|
161
|
+
- regex: 'StudioDisplay/(\d+\.[\d\.]+)'
|
162
|
+
name: 'StudioDisplay'
|
163
|
+
version: '$1'
|
164
|
+
|
165
|
+
# JHelioviewer (https://www.jhelioviewer.org/)
|
166
|
+
- regex: 'JHV/SWHV-([.\d+]+)'
|
167
|
+
name: 'JHelioviewer'
|
168
|
+
version: '$1'
|
169
|
+
|
170
|
+
# Xtream Player (https://play.google.com/store/apps/details?id=com.devcoder.iptvxtreamplayer)
|
171
|
+
- regex: 'com.devcoder.iptvxtreamplayer'
|
172
|
+
name: 'Xtream Player'
|
173
|
+
version: ''
|