device_detector 1.1.1 → 1.1.2
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 +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: ''
|