device_detector 1.0.0 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +58 -4
- data/README.md +57 -21
- data/lib/device_detector/bot.rb +2 -2
- data/lib/device_detector/browser.rb +691 -0
- data/lib/device_detector/client.rb +11 -2
- data/lib/device_detector/client_hint.rb +249 -0
- data/lib/device_detector/device.rb +1954 -23
- data/lib/device_detector/memory_cache.rb +26 -19
- data/lib/device_detector/metadata_extractor.rb +7 -8
- data/lib/device_detector/model_extractor.rb +3 -3
- data/lib/device_detector/name_extractor.rb +2 -2
- data/lib/device_detector/os.rb +289 -112
- data/lib/device_detector/parser.rb +49 -13
- data/lib/device_detector/vendor_fragment.rb +25 -0
- data/lib/device_detector/version.rb +3 -1
- data/lib/device_detector/version_extractor.rb +29 -2
- data/lib/device_detector.rb +192 -44
- data/regexes/bots.yml +3399 -91
- data/regexes/client/browser_engine.yml +28 -4
- data/regexes/client/browsers.yml +2697 -408
- data/regexes/client/feed_readers.yml +60 -22
- data/regexes/client/hints/apps.yml +150 -0
- data/regexes/client/hints/browsers.yml +292 -0
- data/regexes/client/libraries.yml +598 -4
- data/regexes/client/mediaplayers.yml +110 -5
- data/regexes/client/mobile_apps.yml +2451 -14
- data/regexes/client/pim.yml +128 -3
- data/regexes/device/cameras.yml +6 -6
- data/regexes/device/car_browsers.yml +39 -3
- data/regexes/device/consoles.yml +40 -6
- data/regexes/device/mobiles.yml +38844 -2907
- data/regexes/device/notebooks.yml +127 -0
- data/regexes/device/portable_media_player.yml +75 -12
- data/regexes/device/shell_tv.yml +145 -0
- data/regexes/device/televisions.yml +981 -40
- data/regexes/oss.yml +1560 -311
- data/regexes/vendorfragments.yml +6 -2
- metadata +31 -105
- data/.gitignore +0 -14
- data/.travis.yml +0 -18
- data/Gemfile +0 -8
- data/Rakefile +0 -79
- data/device_detector.gemspec +0 -26
- data/spec/device_detector/bot_fixtures_spec.rb +0 -30
- data/spec/device_detector/client_fixtures_spec.rb +0 -31
- data/spec/device_detector/concrete_user_agent_spec.rb +0 -136
- data/spec/device_detector/detector_fixtures_spec.rb +0 -60
- data/spec/device_detector/device_fixtures_spec.rb +0 -36
- data/spec/device_detector/device_spec.rb +0 -151
- data/spec/device_detector/memory_cache_spec.rb +0 -116
- data/spec/device_detector/model_extractor_spec.rb +0 -63
- data/spec/device_detector/os_fixtures_spec.rb +0 -26
- data/spec/device_detector/version_extractor_spec.rb +0 -80
- data/spec/device_detector_spec.rb +0 -198
- data/spec/fixtures/client/browser.yml +0 -1313
- data/spec/fixtures/client/feed_reader.yml +0 -187
- data/spec/fixtures/client/library.yml +0 -84
- data/spec/fixtures/client/mediaplayer.yml +0 -168
- data/spec/fixtures/client/mobile_app.yml +0 -30
- data/spec/fixtures/client/pim.yml +0 -96
- data/spec/fixtures/detector/bots.yml +0 -2418
- data/spec/fixtures/detector/camera.yml +0 -115
- data/spec/fixtures/detector/car_browser.yml +0 -20
- data/spec/fixtures/detector/console.yml +0 -267
- data/spec/fixtures/detector/desktop.yml +0 -4828
- data/spec/fixtures/detector/feature_phone.yml +0 -782
- data/spec/fixtures/detector/feed_reader.yml +0 -486
- data/spec/fixtures/detector/mediaplayer.yml +0 -179
- data/spec/fixtures/detector/mobile_apps.yml +0 -149
- data/spec/fixtures/detector/phablet.yml +0 -2140
- data/spec/fixtures/detector/portable_media_player.yml +0 -153
- data/spec/fixtures/detector/smart_display.yml +0 -58
- data/spec/fixtures/detector/smartphone-1.yml +0 -9469
- data/spec/fixtures/detector/smartphone-2.yml +0 -9414
- data/spec/fixtures/detector/smartphone-3.yml +0 -9396
- data/spec/fixtures/detector/smartphone-4.yml +0 -5742
- data/spec/fixtures/detector/smartphone.yml +0 -9411
- data/spec/fixtures/detector/tablet-1.yml +0 -9495
- data/spec/fixtures/detector/tablet-2.yml +0 -248
- data/spec/fixtures/detector/tablet.yml +0 -9484
- data/spec/fixtures/detector/tv.yml +0 -2582
- data/spec/fixtures/detector/unknown.yml +0 -3196
- data/spec/fixtures/device/camera.yml +0 -18
- data/spec/fixtures/device/car_browser.yml +0 -6
- data/spec/fixtures/device/console.yml +0 -78
- data/spec/fixtures/parser/oss.yml +0 -800
- data/spec/fixtures/parser/vendorfragments.yml +0 -162
- data/spec/spec_helper.rb +0 -9
@@ -1,18 +1,142 @@
|
|
1
1
|
###############
|
2
2
|
# Device Detector - The Universal Device Detection library for parsing User Agents
|
3
3
|
#
|
4
|
-
# @link
|
4
|
+
# @link https://matomo.org
|
5
5
|
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6
6
|
###############
|
7
7
|
|
8
|
+
- regex: 'IPinfoClient/.*/(\d+[\.\d]+)'
|
9
|
+
name: 'IPinfo'
|
10
|
+
version: '$1'
|
11
|
+
url: 'https://github.com/ipinfo'
|
12
|
+
|
13
|
+
- regex: 'kiwi-tcms/(\d+[\.\d]+)'
|
14
|
+
name: 'Kiwi TCMS'
|
15
|
+
version: '$1'
|
16
|
+
url: 'https://kiwitcms.org'
|
17
|
+
|
18
|
+
- regex: 'tcms-api/(\d+[\.\d]+)'
|
19
|
+
name: 'Kiwi TCMS API'
|
20
|
+
version: '$1'
|
21
|
+
url: 'https://kiwitcms.org'
|
22
|
+
|
23
|
+
- regex: 'Fuzz Faster U Fool v(\d+[\.\d]+)'
|
24
|
+
name: 'FFUF'
|
25
|
+
version: '$1'
|
26
|
+
url: 'https://github.com/ffuf/ffuf'
|
27
|
+
|
28
|
+
- regex: 'Slim Framework'
|
29
|
+
name: 'Slim Framework'
|
30
|
+
version: ''
|
31
|
+
url: 'https://www.slimframework.com/'
|
32
|
+
|
33
|
+
- regex: 'msray-plus'
|
34
|
+
name: 'Msray-Plus'
|
35
|
+
version: ''
|
36
|
+
url: 'https://github.com/super-l/msray'
|
37
|
+
|
38
|
+
- regex: 'HTMLParser(?:/(\d+[\.\d]+))?'
|
39
|
+
name: 'HTML Parser'
|
40
|
+
version: '$1'
|
41
|
+
url: 'https://htmlparser.sourceforge.net/'
|
42
|
+
|
43
|
+
# got - a nodejs library
|
44
|
+
- regex: '^got(?:/(\d+\.[.\d]+))? \('
|
45
|
+
name: 'got'
|
46
|
+
version: '$1'
|
47
|
+
url: 'https://github.com/sindresorhus/got'
|
48
|
+
|
49
|
+
# Typhoeus
|
50
|
+
- regex: 'Typhoeus'
|
51
|
+
name: 'Typhoeus'
|
52
|
+
version: ''
|
53
|
+
url: 'https://github.com/typhoeus/typhoeus'
|
54
|
+
|
55
|
+
# req
|
56
|
+
- regex: 'req/v([\.\d]+)'
|
57
|
+
name: 'req'
|
58
|
+
version: '$1'
|
59
|
+
url: 'https://github.com/imroc/req'
|
60
|
+
|
61
|
+
# quic-go
|
62
|
+
- regex: 'quic-go-HTTP/3'
|
63
|
+
name: 'quic-go'
|
64
|
+
version: ''
|
65
|
+
url: 'https://github.com/lucas-clemente/quic-go'
|
66
|
+
|
67
|
+
# Azure Data Factory
|
68
|
+
- regex: 'azure-data-factory(?:/(\d+[\.\d]+))?'
|
69
|
+
name: 'Azure Data Factory'
|
70
|
+
version: '$1'
|
71
|
+
url: 'https://azure.microsoft.com/en-us/products/data-factory/'
|
72
|
+
|
73
|
+
# Dart
|
74
|
+
- regex: 'Dart(?:/(\d+[\.\d]+))?'
|
75
|
+
name: 'Dart'
|
76
|
+
version: '$1'
|
77
|
+
url: 'https://dart.dev/'
|
78
|
+
|
79
|
+
# r-curl
|
80
|
+
- regex: 'r-curl(?:/(\d+[\.\d]+))?'
|
81
|
+
name: 'r-curl'
|
82
|
+
version: '$1'
|
83
|
+
url: 'https://github.com/jeroen/curl'
|
84
|
+
|
85
|
+
# HTTPX
|
86
|
+
- regex: 'python-httpx(?:/(\d+[\.\d]+))?'
|
87
|
+
name: 'HTTPX'
|
88
|
+
version: '$1'
|
89
|
+
url: 'https://www.python-httpx.org/'
|
90
|
+
|
91
|
+
# fasthttp
|
92
|
+
- regex: 'fasthttp(?:/(\d+[\.\d]+))?'
|
93
|
+
name: 'fasthttp'
|
94
|
+
version: '$1'
|
95
|
+
url: 'https://github.com/valyala/fasthttp'
|
96
|
+
|
97
|
+
# GeoIP Update
|
98
|
+
- regex: 'geoipupdate(?:/(\d+[\.\d]+))?'
|
99
|
+
name: 'GeoIP Update'
|
100
|
+
version: '$1'
|
101
|
+
url: 'https://github.com/maxmind/geoipupdate'
|
102
|
+
|
103
|
+
# PHP cURL Class
|
104
|
+
- regex: 'PHP-Curl-Class(?:/(\d+[\.\d]+))?'
|
105
|
+
name: 'PHP cURL Class'
|
106
|
+
version: '$1'
|
107
|
+
url: 'https://github.com/php-curl-class/php-curl-class'
|
108
|
+
|
109
|
+
# cPanel HTTP Client
|
110
|
+
- regex: 'Cpanel-HTTP-Client(?:/(\d+[\.\d]+))?'
|
111
|
+
name: 'cPanel HTTP Client'
|
112
|
+
version: '$1'
|
113
|
+
url: 'https://www.cpanel.net/'
|
114
|
+
|
115
|
+
# AnyEvent HTTP
|
116
|
+
- regex: 'AnyEvent-HTTP(?:/(\d+[\.\d]+))?'
|
117
|
+
name: 'AnyEvent HTTP'
|
118
|
+
version: '$1'
|
119
|
+
url: 'http://software.schmorp.de/pkg/AnyEvent'
|
120
|
+
|
121
|
+
# SlimerJS
|
122
|
+
- regex: 'SlimerJS/(\d+[\.\d]+)'
|
123
|
+
name: 'SlimerJS'
|
124
|
+
version: '$1'
|
125
|
+
url: 'https://www.slimerjs.org/'
|
126
|
+
|
8
127
|
- regex: 'Wget(?:/(\d+[\.\d]+))?'
|
9
128
|
name: 'Wget'
|
10
129
|
version: '$1'
|
11
130
|
|
12
|
-
- regex: 'Guzzle(?:/(\d+[\.\d]+))?'
|
131
|
+
- regex: 'Guzzle(?:Http)?(?:/(\d+[\.\d]+))?'
|
13
132
|
name: 'Guzzle (PHP HTTP Client)'
|
14
133
|
version: '$1'
|
15
134
|
|
135
|
+
# symphony php http client
|
136
|
+
- regex: '^Symfony HttpClient/'
|
137
|
+
name: 'Symfony'
|
138
|
+
version: '$1'
|
139
|
+
|
16
140
|
- regex: '(?:lib)?curl(?:/(\d+[\.\d]+))?'
|
17
141
|
name: 'curl'
|
18
142
|
version: '$1'
|
@@ -21,14 +145,484 @@
|
|
21
145
|
name: 'Python Requests'
|
22
146
|
version: '$1'
|
23
147
|
|
24
|
-
- regex: 'Python-
|
148
|
+
- regex: 'Python-httplib2(?:/(\d+[\.\d]+))?'
|
149
|
+
name: 'httplib2'
|
150
|
+
version: '$1'
|
151
|
+
url: 'https://pypi.org/project/httplib2/'
|
152
|
+
|
153
|
+
- regex: 'Python-urllib3?(?:/?(\d+[\.\d]+))?'
|
25
154
|
name: 'Python urllib'
|
26
155
|
version: '$1'
|
27
156
|
|
157
|
+
- regex: 'Apache-HttpClient(?:/?(\d+[\.\d]+))?'
|
158
|
+
name: 'Apache HTTP Client'
|
159
|
+
version: '$1'
|
160
|
+
|
161
|
+
- regex: 'Java-http-client(?:/?(\d+[\.\d]+))?'
|
162
|
+
name: 'Java HTTP Client'
|
163
|
+
version: '$1'
|
164
|
+
|
28
165
|
- regex: 'Java(?:/?(\d+[\.\d]+))?'
|
29
166
|
name: 'Java'
|
30
167
|
version: '$1'
|
31
168
|
|
32
169
|
- regex: '(?:perlclient|libwww-perl)(?:/?(\d+[\.\d]+))?'
|
33
170
|
name: 'Perl'
|
34
|
-
version: '$1'
|
171
|
+
version: '$1'
|
172
|
+
|
173
|
+
- regex: 'grpc-java-okhttp/([\d\.]+)'
|
174
|
+
name: 'gRPC-Java'
|
175
|
+
version: '$1'
|
176
|
+
url: 'https://github.com/grpc/grpc-java'
|
177
|
+
|
178
|
+
# java library
|
179
|
+
- regex: '(?:okhttp|network-okhttp3)/([\d\.]+)'
|
180
|
+
name: 'OkHttp'
|
181
|
+
version: '$1'
|
182
|
+
|
183
|
+
- regex: 'okhttp3-([\d\.]+)'
|
184
|
+
name: 'OkHttp'
|
185
|
+
version: '$1'
|
186
|
+
|
187
|
+
- regex: 'HTTP_Request2(?:/(\d+[\.\d]+))?'
|
188
|
+
name: 'HTTP_Request2'
|
189
|
+
version: '$1'
|
190
|
+
|
191
|
+
- regex: 'HTTP_Request2(?:/(\d+[\.\d]+))?'
|
192
|
+
name: 'HTTP_Request2'
|
193
|
+
version: '$1'
|
194
|
+
url: 'https://pear.php.net/package/http_request2'
|
195
|
+
|
196
|
+
- regex: 'Mechanize(?:/(\d+[\.\d]+))?'
|
197
|
+
name: 'Mechanize'
|
198
|
+
version: '$1'
|
199
|
+
url: 'https://github.com/sparklemotion/mechanize'
|
200
|
+
|
201
|
+
- regex: 'aiohttp(?:/(\d+[\.\d]+))?'
|
202
|
+
name: 'aiohttp'
|
203
|
+
version: '$1'
|
204
|
+
|
205
|
+
- regex: 'Google-HTTP-Java-Client(?:/(\d+[\.\w-]+))?'
|
206
|
+
name: 'Google HTTP Java Client'
|
207
|
+
version: '$1'
|
208
|
+
|
209
|
+
- regex: 'WWW-Mechanize(?:/(\d+[\.\d]+))?'
|
210
|
+
name: 'WWW-Mechanize'
|
211
|
+
version: '$1'
|
212
|
+
|
213
|
+
- regex: 'Faraday(?: v(\d+[\.\d]+))?'
|
214
|
+
name: 'Faraday'
|
215
|
+
version: '$1'
|
216
|
+
url: 'https://github.com/lostisland/faraday'
|
217
|
+
|
218
|
+
- regex: '(?:Go-http-client|Go )/?(?:(\d+[\.\d]+))?(?: package http)?'
|
219
|
+
name: 'Go-http-client'
|
220
|
+
version: '$1'
|
221
|
+
|
222
|
+
- regex: 'urlgrabber(?:/(\d+[\.\d]+))?'
|
223
|
+
name: 'urlgrabber (yum)'
|
224
|
+
version: '$1'
|
225
|
+
|
226
|
+
- regex: 'libdnf(?:/(\d+[\.\d]+))?'
|
227
|
+
name: 'libdnf'
|
228
|
+
version: '$1'
|
229
|
+
|
230
|
+
- regex: 'HTTPie(?:/(\d+[\.\d]+))?'
|
231
|
+
name: 'HTTPie'
|
232
|
+
version: '$1'
|
233
|
+
|
234
|
+
- regex: 'rest-client/(\d+\.[\.\d]+) .*ruby'
|
235
|
+
name: 'REST Client for Ruby'
|
236
|
+
version: '$1'
|
237
|
+
|
238
|
+
- regex: 'RestSharp/(\d+[\.\d]+)'
|
239
|
+
name: 'RestSharp'
|
240
|
+
version: '$1'
|
241
|
+
url: 'https://github.com/restsharp/RestSharp'
|
242
|
+
|
243
|
+
- regex: 'scalaj-http/(\d+[\.\d]+)'
|
244
|
+
name: 'ScalaJ HTTP'
|
245
|
+
version: '$1'
|
246
|
+
url: 'https://github.com/scalaj/scalaj-http'
|
247
|
+
|
248
|
+
- regex: 'REST::Client/(\d+)'
|
249
|
+
name: 'Perl REST::Client'
|
250
|
+
version: '$1'
|
251
|
+
url: 'https://metacpan.org/pod/REST::Client'
|
252
|
+
|
253
|
+
- regex: 'node-fetch/?(\d+[\.\d]+)?'
|
254
|
+
name: 'Node Fetch'
|
255
|
+
version: '$1'
|
256
|
+
url: 'https://github.com/node-fetch/node-fetch'
|
257
|
+
|
258
|
+
- regex: 'electron-fetch/?(\d+[\.\d]+)?'
|
259
|
+
name: 'Electron Fetch'
|
260
|
+
version: '$1'
|
261
|
+
url: 'https://github.com/arantes555/electron-fetch'
|
262
|
+
|
263
|
+
- regex: 'ReactorNetty/(\d+[\.\d]+)'
|
264
|
+
name: 'ReactorNetty'
|
265
|
+
version: '$1'
|
266
|
+
url: 'https://github.com/reactor/reactor-netty'
|
267
|
+
|
268
|
+
- regex: 'PostmanRuntime(?:/(\d+[\.\d]+))?'
|
269
|
+
name: 'Postman Desktop'
|
270
|
+
version: '$1'
|
271
|
+
url: 'https://github.com/postmanlabs/postman-runtime'
|
272
|
+
|
273
|
+
- regex: 'insomnia(?:/(\d+[\.\d]+))?'
|
274
|
+
name: 'Insomnia REST Client'
|
275
|
+
version: '$1'
|
276
|
+
url: 'https://insomnia.rest'
|
277
|
+
|
278
|
+
- regex: 'Jakarta Commons-HttpClient/([\.\d]+)'
|
279
|
+
name: 'Jakarta Commons HttpClient'
|
280
|
+
version: '$1'
|
281
|
+
url: 'https://hc.apache.org/httpclient-3.x'
|
282
|
+
|
283
|
+
- regex: 'WinHttp\.WinHttpRequest.+([\.\d]+)'
|
284
|
+
name: 'WinHttp WinHttpRequest'
|
285
|
+
version: '$1'
|
286
|
+
|
287
|
+
- regex: 'WinHTTP'
|
288
|
+
name: 'Windows HTTP'
|
289
|
+
version: ''
|
290
|
+
|
291
|
+
# THTTPClient in delphi 10+ default useragent
|
292
|
+
- regex: 'Embarcadero URI Client/([\.\d]+)'
|
293
|
+
name: 'Embarcadero URI Client'
|
294
|
+
version: '$1'
|
295
|
+
|
296
|
+
- regex: 'Mikrotik/([\.\d]+)'
|
297
|
+
name: 'Mikrotik Fetch'
|
298
|
+
version: '$1'
|
299
|
+
|
300
|
+
- regex: 'GRequests(?:/(\d+[\.\d]+))?'
|
301
|
+
name: 'GRequests'
|
302
|
+
version: '$1'
|
303
|
+
|
304
|
+
# https://doc.akka.io/
|
305
|
+
- regex: 'akka-http/([\.\d]+)'
|
306
|
+
name: 'Akka HTTP'
|
307
|
+
version: '$1'
|
308
|
+
|
309
|
+
# this added need added tests
|
310
|
+
- regex: 'aria2(?:/(\d+[\.\d]+))?'
|
311
|
+
name: 'Aria2'
|
312
|
+
version: '$1'
|
313
|
+
|
314
|
+
- regex: '(?:BTWebClient/|^uTorrent/)'
|
315
|
+
name: 'uTorrent'
|
316
|
+
version: ''
|
317
|
+
|
318
|
+
- regex: 'gvfs/(?:(\d+[\.\d]+))?'
|
319
|
+
name: 'gvfs'
|
320
|
+
version: '$1'
|
321
|
+
|
322
|
+
# https://openwrt.org/packages/pkgdata/uclient-fetch
|
323
|
+
- regex: 'uclient-fetch'
|
324
|
+
name: 'uclient-fetch'
|
325
|
+
version: ''
|
326
|
+
|
327
|
+
# https://github.com/microsoft/cpprestsdk
|
328
|
+
- regex: 'cpprestsdk/([\.\d]+)'
|
329
|
+
name: 'C++ REST SDK'
|
330
|
+
version: '$1'
|
331
|
+
|
332
|
+
- regex: 'lua-resty-http/([\.\d]+).+ngx_'
|
333
|
+
name: 'LUA OpenResty NGINX'
|
334
|
+
version: '$1'
|
335
|
+
|
336
|
+
# https://github.com/Kong/unirest-java
|
337
|
+
- regex: 'unirest-java/([\.\d]+)'
|
338
|
+
name: 'Unirest for Java'
|
339
|
+
version: '$1'
|
340
|
+
|
341
|
+
# jsdom (https://github.com/jsdom/jsdom)
|
342
|
+
- regex: 'jsdom/([\.\d]+)'
|
343
|
+
name: 'jsdom'
|
344
|
+
version: '$1'
|
345
|
+
|
346
|
+
# hackney (https://github.com/benoitc/hackney) (elixir)
|
347
|
+
- regex: 'hackney/([\.\d]+)'
|
348
|
+
name: 'hackney'
|
349
|
+
version: '$1'
|
350
|
+
|
351
|
+
# Resty (https://github.com/go-resty/resty)
|
352
|
+
- regex: 'go-resty/([\.\d]+)'
|
353
|
+
name: 'Resty'
|
354
|
+
version: '$1'
|
355
|
+
|
356
|
+
# Pa11y (https://pa11y.org/)
|
357
|
+
- regex: 'pa11y/([\.\d]+)'
|
358
|
+
name: 'Pa11y'
|
359
|
+
version: '$1'
|
360
|
+
|
361
|
+
# Ultimate Sitemap Parser (https://github.com/mediacloud/ultimate-sitemap-parser)
|
362
|
+
- regex: 'ultimate_sitemap_parser/([\.\d]+)'
|
363
|
+
name: 'Ultimate Sitemap Parser'
|
364
|
+
version: '$1'
|
365
|
+
|
366
|
+
# Container-related useragents
|
367
|
+
|
368
|
+
# Artifactory (https://jfrog.com/de/artifactory/)
|
369
|
+
- regex: 'Artifactory/([\.\d]+)'
|
370
|
+
name: 'Artifactory'
|
371
|
+
version: '$1'
|
372
|
+
|
373
|
+
# Open build service (https://build.opensuse.org/)
|
374
|
+
- regex: 'BSRPC ([\.\d]+)'
|
375
|
+
name: 'Open Build Service'
|
376
|
+
version: '$1'
|
377
|
+
|
378
|
+
# Buildah (https://github.com/containers/buildah)
|
379
|
+
- regex: 'Buildah/([\.\d]+)'
|
380
|
+
name: 'Buildah'
|
381
|
+
version: '$1'
|
382
|
+
|
383
|
+
# Buildkit (https://github.com/moby/buildkit)
|
384
|
+
- regex: 'buildkit/v?([\.\d]+)'
|
385
|
+
name: 'BuildKit'
|
386
|
+
version: '$1'
|
387
|
+
|
388
|
+
# containerd (https://github.com/containerd/containerd)
|
389
|
+
- regex: 'containerd/v?([\.\d]+)'
|
390
|
+
name: 'Containerd'
|
391
|
+
version: '$1'
|
392
|
+
|
393
|
+
# containers (https://github.com/containers/image)
|
394
|
+
- regex: 'containers/([\.\d]+)'
|
395
|
+
name: 'containers'
|
396
|
+
version: '$1'
|
397
|
+
|
398
|
+
# cri-o (https://github.com/cri-o/cri-)o
|
399
|
+
- regex: 'cri-o/([\.\d]+)'
|
400
|
+
name: 'cri-o'
|
401
|
+
version: '$1'
|
402
|
+
|
403
|
+
# docker (https://github.com/moby/moby)
|
404
|
+
- regex: 'docker/([\.\d]+)'
|
405
|
+
name: 'docker'
|
406
|
+
version: '$1'
|
407
|
+
|
408
|
+
# gcr (https://github.com/google/go-containerregistry)
|
409
|
+
- regex: 'go-containerregistry/v([\.\d]+)'
|
410
|
+
name: 'go-container registry'
|
411
|
+
version: '$1'
|
412
|
+
|
413
|
+
# libpod (https://github.com/dankohn/libpod)
|
414
|
+
- regex: 'libpod/([\.\d]+)'
|
415
|
+
name: 'libpod'
|
416
|
+
version: '$1'
|
417
|
+
|
418
|
+
# skopeo (https://github.com/containers/skopeo)
|
419
|
+
- regex: 'skopeo/([\.\d]+)'
|
420
|
+
name: 'Skopeo'
|
421
|
+
version: '$1'
|
422
|
+
|
423
|
+
# helm (https://github.com/helm/helm)
|
424
|
+
- regex: 'Helm/([\.\d]+)'
|
425
|
+
name: 'Helm'
|
426
|
+
version: '$1'
|
427
|
+
|
428
|
+
# harbor client (https://goharbor.io/)
|
429
|
+
- regex: 'harbor-registry-client'
|
430
|
+
name: 'Harbor registry client'
|
431
|
+
version: ''
|
432
|
+
|
433
|
+
# axios http (https://axios-http.com/)
|
434
|
+
- regex: 'axios(?:/?(\d+[\.\d]+))?'
|
435
|
+
name: Axios
|
436
|
+
version: '$1'
|
437
|
+
|
438
|
+
# Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks
|
439
|
+
- regex: '^CarrierWave/(\d+\.[.\d]+)'
|
440
|
+
name: 'CarrierWave'
|
441
|
+
version: '$1'
|
442
|
+
|
443
|
+
- regex: '^Deno/(\d+\.[.\d]+)'
|
444
|
+
name: 'Deno'
|
445
|
+
version: '$1'
|
446
|
+
|
447
|
+
# Streaming downloads using net/http, http.rb, HTTPX or wget (ruby)
|
448
|
+
- regex: '^Down/(\d+\.[.\d]+)'
|
449
|
+
name: 'Down'
|
450
|
+
version: '$1'
|
451
|
+
|
452
|
+
# various programs can use this, like vlc, but the underlying lib is ffmpeg
|
453
|
+
- regex: '^Lavf/'
|
454
|
+
name: 'ffmpeg'
|
455
|
+
version: '$1'
|
456
|
+
|
457
|
+
- regex: '^FileDownloader/(\d+\.[.\d]+)'
|
458
|
+
name: 'FileDownloader'
|
459
|
+
version: '$1'
|
460
|
+
|
461
|
+
# Allows managing large files with git, without storing the file contents in git
|
462
|
+
- regex: '^git-annex/(\d+\.[.\d]+)'
|
463
|
+
name: 'git-annex'
|
464
|
+
version: '$1'
|
465
|
+
|
466
|
+
- regex: '^GStreamer(?: souphttpsrc)[ /](\d+\.[.\d]+)?'
|
467
|
+
name: 'GStreamer'
|
468
|
+
version: '$1'
|
469
|
+
|
470
|
+
# A small, simple, correct HTTP/1.1 client (Perl)
|
471
|
+
- regex: '^HTTP-Tiny/(\d+\.[.\d]+)'
|
472
|
+
name: 'HTTP:Tiny'
|
473
|
+
version: '$1'
|
474
|
+
|
475
|
+
- regex: 'KaiOS Downloader'
|
476
|
+
name: 'KaiOS Downloader'
|
477
|
+
version: ''
|
478
|
+
|
479
|
+
# HTTP client/server library for GNOME
|
480
|
+
- regex: '^libsoup/(\d+\.[.\d]+)'
|
481
|
+
name: 'libsoup'
|
482
|
+
version: '$1'
|
483
|
+
|
484
|
+
- regex: '^Android\.LVLDM$'
|
485
|
+
name: 'Android License Verification Library'
|
486
|
+
version: '$1'
|
487
|
+
|
488
|
+
# A file downloader library for Android with pause and resume support
|
489
|
+
- regex: '^PRDownloader$'
|
490
|
+
name: 'PRDownloader'
|
491
|
+
version: ''
|
492
|
+
|
493
|
+
# a rust http library
|
494
|
+
- regex: '^reqwest/(\d+\.[.\d]+)'
|
495
|
+
name: 'reqwest'
|
496
|
+
version: '$1'
|
497
|
+
|
498
|
+
# lua http library
|
499
|
+
- regex: '^resty-requests'
|
500
|
+
name: 'resty-requests'
|
501
|
+
version: ''
|
502
|
+
|
503
|
+
# ruby core lib http download
|
504
|
+
- regex: '^Ruby'
|
505
|
+
name: 'ruby'
|
506
|
+
version: ''
|
507
|
+
|
508
|
+
# SFSafariViewController, some safari service
|
509
|
+
- regex: '^SafariViewService/(\d+\.[.\d]+)'
|
510
|
+
name: 'Safari View Service'
|
511
|
+
version: '$1'
|
512
|
+
|
513
|
+
# a nodejs lib
|
514
|
+
- regex: '^undici$'
|
515
|
+
name: 'undici'
|
516
|
+
version: ''
|
517
|
+
|
518
|
+
# URL, an emacs plugin
|
519
|
+
- regex: '^URL/Emacs Emacs/(\d+\.[.\d]+)'
|
520
|
+
name: 'Emacs'
|
521
|
+
version: '$1'
|
522
|
+
|
523
|
+
- regex: '^FDM[ /]([\d\.]+)'
|
524
|
+
name: 'Free Download Manager'
|
525
|
+
version: '$1'
|
526
|
+
|
527
|
+
# 'https://github.com/lingochamp/okdownload'
|
528
|
+
- regex: 'OkDownload/([\d\.]+)'
|
529
|
+
name: 'OKDownload Library'
|
530
|
+
version: '$1'
|
531
|
+
|
532
|
+
# podcast host https://libsyn.com (probably an importer)
|
533
|
+
- regex: '^Libsyn4-?(?:peek|download)$'
|
534
|
+
name: 'Libsyn'
|
535
|
+
version: ''
|
536
|
+
|
537
|
+
# any ios application that uses apple core media but doesn't set its user
|
538
|
+
# agent will default to this, always with 1.0.0 version.
|
539
|
+
# there was a time when (not even that long ago) apple didn't let you set
|
540
|
+
# a user agent so a ton of random applications still identify themselves this way.
|
541
|
+
- regex: 'AppleCoreMedia/1\.0\.0'
|
542
|
+
name: 'iOS Application'
|
543
|
+
version: ''
|
544
|
+
|
545
|
+
- regex: 'cpp-httplib(?:/(\d+[\.\d]+))?'
|
546
|
+
name: 'cpp-httplib'
|
547
|
+
version: '$1'
|
548
|
+
url: 'https://github.com/yhirose/cpp-httplib'
|
549
|
+
|
550
|
+
- regex: 'Definitely-Not-Requests'
|
551
|
+
name: 'Requests'
|
552
|
+
version: ''
|
553
|
+
url: 'https://github.com/psf/requests'
|
554
|
+
|
555
|
+
- regex: 'Stealer ([\d\.]+)'
|
556
|
+
name: 'Stealer'
|
557
|
+
version: '$1'
|
558
|
+
url: 'https://github.com/hotrush/stealer/'
|
559
|
+
|
560
|
+
- regex: 'Mandrill-PHP(?:/(\d+[\.\d]+))?'
|
561
|
+
name: 'Mandrill PHP'
|
562
|
+
version: '$1'
|
563
|
+
url: 'https://bitbucket.org/mailchimp/mandrill-api-php/src/master/'
|
564
|
+
|
565
|
+
- regex: '^Podgrab'
|
566
|
+
name: 'Podgrab'
|
567
|
+
version: ''
|
568
|
+
url: 'https://github.com/akhilrex/podgrab'
|
569
|
+
|
570
|
+
- regex: '^Podcast Provider.*?Radio Downloader ([\d\.]+)'
|
571
|
+
name: 'Radio Downloader'
|
572
|
+
version: '$1'
|
573
|
+
url: 'https://nerdoftheherd.com/tools/radiodld/'
|
574
|
+
|
575
|
+
- regex: '^ESP32 HTTP Client/([\d\.]+)'
|
576
|
+
name: 'ESP32 HTTP Client'
|
577
|
+
version: '$1'
|
578
|
+
url: 'https://github.com/espressif/arduino-esp32'
|
579
|
+
|
580
|
+
- regex: 'babashka\.http-client(?:/(\d+[\.\d]+))?'
|
581
|
+
name: 'Babashka HTTP Client'
|
582
|
+
version: '$1'
|
583
|
+
url: 'https://github.com/babashka/http-client'
|
584
|
+
|
585
|
+
- regex: 'http\.rb(?:/(\d+[\.\d]+))?'
|
586
|
+
name: 'http.rb'
|
587
|
+
version: '$1'
|
588
|
+
url: 'https://github.com/httprb/http'
|
589
|
+
|
590
|
+
- regex: 'node-superagent(?:/(\d+[\.\d]+))?'
|
591
|
+
name: 'superagent'
|
592
|
+
version: '$1'
|
593
|
+
url: 'https://github.com/ladjs/superagent'
|
594
|
+
|
595
|
+
- regex: 'CakePHP'
|
596
|
+
name: 'CakePHP'
|
597
|
+
version: ''
|
598
|
+
url: 'https://www.cakephp.org/'
|
599
|
+
|
600
|
+
- regex: 'request\.js'
|
601
|
+
name: 'request'
|
602
|
+
version: ''
|
603
|
+
url: 'https://github.com/request/request'
|
604
|
+
|
605
|
+
- regex: 'qbhttp(?:/(\d+[\.\d]+))?'
|
606
|
+
name: 'QbHttp'
|
607
|
+
version: '$1'
|
608
|
+
url: 'https://github.com/OpenQb/QbHttp'
|
609
|
+
|
610
|
+
- regex: 'httprs(?:/(\d+[\.\d]+))?'
|
611
|
+
name: 'httprs'
|
612
|
+
version: '$1'
|
613
|
+
url: 'https://github.com/http-server-rs/http-server'
|
614
|
+
|
615
|
+
- regex: 'Boto3(?:/(\d+[\.\d]+))?'
|
616
|
+
name: 'Boto3'
|
617
|
+
version: '$1'
|
618
|
+
url: 'https://github.com/boto/boto3'
|
619
|
+
|
620
|
+
- regex: 'Python-xmlrpc(?:/(\d+[\.\d]+))?'
|
621
|
+
name: 'XML-RPC'
|
622
|
+
version: '$1'
|
623
|
+
url: 'https://docs.python.org/3/library/xmlrpc.html'
|
624
|
+
|
625
|
+
- regex: 'ICAP-Client-Library(?:/(\d+[\.\d]+))?'
|
626
|
+
name: 'ICAP Client'
|
627
|
+
version: '$1'
|
628
|
+
url: 'https://github.com/Peoplecantfly/icapserver'
|