@hyperwatch/useragent 3.7.4 → 3.9.0

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.
@@ -70,13 +70,13 @@
70
70
  "regex": "(MusicDownloader)Lite/(\\d+)\\.(\\d+)\\.(\\d+) CFNetwork"
71
71
  },
72
72
  {
73
- "regex": "^(.*)-iPad\\/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork"
73
+ "regex": "^(.{0,200})-iPad\\/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork"
74
74
  },
75
75
  {
76
- "regex": "^(.*)-iPhone/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork"
76
+ "regex": "^(.{0,200})-iPhone/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork"
77
77
  },
78
78
  {
79
- "regex": "^(.*)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork"
79
+ "regex": "^(.{0,200})/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork"
80
80
  },
81
81
  {
82
82
  "regex": "^(Luminary)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"
@@ -128,7 +128,7 @@
128
128
  "family_replacement": "Tableau"
129
129
  },
130
130
  {
131
- "regex": "AppleWebKit/\\d+\\.\\d+.* Safari.* (CreativeCloud)/(\\d+)\\.(\\d+).(\\d+)",
131
+ "regex": "AppleWebKit/\\d{1,10}\\.\\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)/(\\d+)\\.(\\d+).(\\d+)",
132
132
  "family_replacement": "Adobe CreativeCloud"
133
133
  },
134
134
  {
@@ -143,7 +143,7 @@
143
143
  "family_replacement": "FacebookBot"
144
144
  },
145
145
  {
146
- "regex": "Google.*/\\+/web/snippet",
146
+ "regex": "Google.{0,50}/\\+/web/snippet",
147
147
  "family_replacement": "GooglePlusBot"
148
148
  },
149
149
  {
@@ -162,24 +162,24 @@
162
162
  "regex": "/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \\-](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"
163
163
  },
164
164
  {
165
- "regex": "\\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"
165
+ "regex": "\\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"
166
166
  },
167
167
  {
168
- "regex": "(MSIE) (\\d+)\\.(\\d+)([a-z]\\d|[a-z]|);.* MSIECrawler",
168
+ "regex": "(MSIE) (\\d+)\\.(\\d+)([a-z]\\d|[a-z]|);.{0,200} MSIECrawler",
169
169
  "family_replacement": "MSIECrawler"
170
170
  },
171
171
  {
172
172
  "regex": "(DAVdroid)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"
173
173
  },
174
174
  {
175
- "regex": "(Google-HTTP-Java-Client|Apache-HttpClient|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
175
+ "regex": "(Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
176
176
  },
177
177
  {
178
178
  "regex": "(Pinterest(?:bot|))/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)[;\\s(]+\\+https://www.pinterest.com/bot.html",
179
179
  "family_replacement": "Pinterestbot"
180
180
  },
181
181
  {
182
- "regex": "(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\\/\\$BotVersion|123metaspider-Bot|1470\\.net crawler|50\\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\\b\\w{0,30}favicon\\w{0,30}\\b|\\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\\(S\\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\\.almaden\\.ibm\\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\\.ze\\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)|)"
182
+ "regex": "(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\\/\\$BotVersion|123metaspider-Bot|1470\\.net crawler|50\\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\\b\\w{0,30}favicon\\w{0,30}\\b|\\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\\(S\\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\\.almaden\\.ibm\\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\\.ze\\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)|)"
183
183
  },
184
184
  {
185
185
  "regex": "\\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\\d{1,2}|core)))|s3fs)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"
@@ -197,25 +197,25 @@
197
197
  "regex": "(Tygron Platform) \\((\\d+)\\.(\\d+)\\.(\\d+(?:\\.\\d+| RC \\d+\\.\\d+))"
198
198
  },
199
199
  {
200
- "regex": "\\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)",
200
+ "regex": "\\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)|)",
201
201
  "family_replacement": "Facebook Messenger"
202
202
  },
203
203
  {
204
- "regex": "\\[FB.*;(FBAV)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)",
204
+ "regex": "\\[FB.{0,300};(FBAV)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)",
205
205
  "family_replacement": "Facebook"
206
206
  },
207
207
  {
208
- "regex": "\\[FB.*;",
208
+ "regex": "\\[FB.{0,300};",
209
209
  "family_replacement": "Facebook"
210
210
  },
211
211
  {
212
- "regex": "(?:\\/[A-Za-z0-9\\.]+|) {0,5}([A-Za-z0-9 \\-_\\!\\[\\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)"
212
+ "regex": "^.{0,200}?(?:\\/[A-Za-z0-9\\.]{0,50}|) {0,2}([A-Za-z0-9 \\-_\\!\\[\\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)"
213
213
  },
214
214
  {
215
- "regex": "((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\\b(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
215
+ "regex": "^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\\b(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
216
216
  },
217
217
  {
218
- "regex": "((?:[A-z0-9]{1,50}|[A-z\\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
218
+ "regex": "^.{0,200}?((?:[A-z0-9]{1,50}|[A-z\\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
219
219
  },
220
220
  {
221
221
  "regex": "(HbbTV)/(\\d+)\\.(\\d+)\\.(\\d+) \\("
@@ -228,22 +228,22 @@
228
228
  "family_replacement": "Sailfish Browser"
229
229
  },
230
230
  {
231
- "regex": "\\[(Pinterest)/[^\\]]+\\]"
231
+ "regex": "\\[(Pinterest)/[^\\]]{1,50}\\]"
232
232
  },
233
233
  {
234
234
  "regex": "(Pinterest)(?: for Android(?: Tablet|)|)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"
235
235
  },
236
236
  {
237
- "regex": "Mozilla.*Mobile.*(Instagram).(\\d+)\\.(\\d+)\\.(\\d+)"
237
+ "regex": "Mozilla.{1,200}Mobile.{1,100}(Instagram).(\\d+)\\.(\\d+)\\.(\\d+)"
238
238
  },
239
239
  {
240
- "regex": "Mozilla.*Mobile.*(Flipboard).(\\d+)\\.(\\d+)\\.(\\d+)"
240
+ "regex": "Mozilla.{1,200}Mobile.{1,100}(Flipboard).(\\d+)\\.(\\d+)\\.(\\d+)"
241
241
  },
242
242
  {
243
- "regex": "Mozilla.*Mobile.*(Flipboard-Briefing).(\\d+)\\.(\\d+)\\.(\\d+)"
243
+ "regex": "Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).(\\d+)\\.(\\d+)\\.(\\d+)"
244
244
  },
245
245
  {
246
- "regex": "Mozilla.*Mobile.*(Onefootball)\\/Android.(\\d+)\\.(\\d+)\\.(\\d+)"
246
+ "regex": "Mozilla.{1,200}Mobile.{1,100}(Onefootball)\\/Android.(\\d+)\\.(\\d+)\\.(\\d+)"
247
247
  },
248
248
  {
249
249
  "regex": "(Snapchat)\\/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"
@@ -253,16 +253,16 @@
253
253
  "family_replacement": "Twitter"
254
254
  },
255
255
  {
256
- "regex": "Mozilla.*Mobile.*AspiegelBot",
257
- "family_replacement": "Spider",
258
- "brand_replacement": "Spider",
259
- "model_replacement": "Smartphone"
256
+ "regex": "Mozilla.{1,200}Mobile.{1,100}(Phantom\\/ios|android).(\\d+)\\.(\\d+)\\.(\\d+)",
257
+ "family_replacement": "Phantom"
258
+ },
259
+ {
260
+ "regex": "Mozilla.{1,100}Mobile.{1,100}AspiegelBot",
261
+ "family_replacement": "Spider"
260
262
  },
261
263
  {
262
264
  "regex": "AspiegelBot",
263
- "family_replacement": "Spider",
264
- "brand_replacement": "Spider",
265
- "model_replacement": "Desktop"
265
+ "family_replacement": "Spider"
266
266
  },
267
267
  {
268
268
  "regex": "(Firefox)/(\\d+)\\.(\\d+) Basilisk/(\\d+)",
@@ -285,7 +285,7 @@
285
285
  "family_replacement": "Firefox Mobile"
286
286
  },
287
287
  {
288
- "regex": "(?:Mobile|Tablet);.*(Firefox)/(\\d+)\\.(\\d+)",
288
+ "regex": "(?:Mobile|Tablet);.{0,200}(Firefox)/(\\d+)\\.(\\d+)",
289
289
  "family_replacement": "Firefox Mobile"
290
290
  },
291
291
  {
@@ -313,7 +313,7 @@
313
313
  "family_replacement": "Firefox ($1)"
314
314
  },
315
315
  {
316
- "regex": "(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)",
316
+ "regex": "(Firefox).{0,200}Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)",
317
317
  "family_replacement": "MicroB"
318
318
  },
319
319
  {
@@ -350,21 +350,21 @@
350
350
  "family_replacement": "UC Browser"
351
351
  },
352
352
  {
353
- "regex": "(Opera Tablet).*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"
353
+ "regex": "(Opera Tablet).{0,200}Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"
354
354
  },
355
355
  {
356
356
  "regex": "(Opera Mini)(?:/att|)/?(\\d+|)(?:\\.(\\d+)|)(?:\\.(\\d+)|)"
357
357
  },
358
358
  {
359
- "regex": "(Opera)/.+Opera Mobi.+Version/(\\d+)\\.(\\d+)",
359
+ "regex": "(Opera)/.{1,100}Opera Mobi.{1,100}Version/(\\d+)\\.(\\d+)",
360
360
  "family_replacement": "Opera Mobile"
361
361
  },
362
362
  {
363
- "regex": "(Opera)/(\\d+)\\.(\\d+).+Opera Mobi",
363
+ "regex": "(Opera)/(\\d+)\\.(\\d+).{1,100}Opera Mobi",
364
364
  "family_replacement": "Opera Mobile"
365
365
  },
366
366
  {
367
- "regex": "Opera Mobi.+(Opera)(?:/|\\s+)(\\d+)\\.(\\d+)",
367
+ "regex": "Opera Mobi.{1,100}(Opera)(?:/|\\s+)(\\d+)\\.(\\d+)",
368
368
  "family_replacement": "Opera Mobile"
369
369
  },
370
370
  {
@@ -372,14 +372,14 @@
372
372
  "family_replacement": "Opera Mobile"
373
373
  },
374
374
  {
375
- "regex": "(Opera)/9.80.*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"
375
+ "regex": "(Opera)/9.80.{0,200}Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"
376
376
  },
377
377
  {
378
- "regex": "(?:Mobile Safari).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)",
378
+ "regex": "(?:Mobile Safari).{1,300}(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)",
379
379
  "family_replacement": "Opera Mobile"
380
380
  },
381
381
  {
382
- "regex": "(?:Chrome).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)",
382
+ "regex": "(?:Chrome).{1,300}(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)",
383
383
  "family_replacement": "Opera"
384
384
  },
385
385
  {
@@ -391,7 +391,7 @@
391
391
  "family_replacement": "Opera Mini"
392
392
  },
393
393
  {
394
- "regex": "Chrome/.+( MMS)/(\\d+).(\\d+).(\\d+)",
394
+ "regex": "Chrome/.{1,200}( MMS)/(\\d+).(\\d+).(\\d+)",
395
395
  "family_replacement": "Opera Neon"
396
396
  },
397
397
  {
@@ -443,7 +443,7 @@
443
443
  "regex": "(Symphony) (\\d+).(\\d+)"
444
444
  },
445
445
  {
446
- "regex": "PLAYSTATION 3.+WebKit",
446
+ "regex": "PLAYSTATION 3.{1,200}WebKit",
447
447
  "family_replacement": "NetFront NX"
448
448
  },
449
449
  {
@@ -459,7 +459,7 @@
459
459
  "family_replacement": "NetFront NX"
460
460
  },
461
461
  {
462
- "regex": "AppleWebKit.+ (NX)/(\\d+)\\.(\\d+)\\.(\\d+)",
462
+ "regex": "AppleWebKit.{1,200} (NX)/(\\d+)\\.(\\d+)\\.(\\d+)",
463
463
  "family_replacement": "NetFront NX"
464
464
  },
465
465
  {
@@ -474,11 +474,11 @@
474
474
  "regex": "(Puffin)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)"
475
475
  },
476
476
  {
477
- "regex": "Windows Phone .*(Edge)/(\\d+)\\.(\\d+)",
477
+ "regex": "Windows Phone .{0,200}(Edge)/(\\d+)\\.(\\d+)",
478
478
  "family_replacement": "Edge Mobile"
479
479
  },
480
480
  {
481
- "regex": "(EdgiOS|EdgA)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
481
+ "regex": "(EdgiOS|EdgA)/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|)",
482
482
  "family_replacement": "Edge Mobile"
483
483
  },
484
484
  {
@@ -525,7 +525,7 @@
525
525
  "family_replacement": "TopBuzz"
526
526
  },
527
527
  {
528
- "regex": "Mozilla.+Android.+(GSA)/(\\d+)\\.(\\d+)\\.(\\d+)",
528
+ "regex": "Mozilla.{1,200}Android.{1,200}(GSA)/(\\d+)\\.(\\d+)\\.(\\d+)",
529
529
  "family_replacement": "Google"
530
530
  },
531
531
  {
@@ -541,11 +541,19 @@
541
541
  "family_replacement": "QQ Browser"
542
542
  },
543
543
  {
544
- "regex": "Version/.+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
544
+ "regex": "Mobile.{0,200}(DuckDuckGo)/(\\d+)",
545
+ "family_replacement": "DuckDuckGo Mobile"
546
+ },
547
+ {
548
+ "regex": "(Tenta/)(\\d+)\\.(\\d+)\\.(\\d+)",
549
+ "family_replacement": "Tenta Browser"
550
+ },
551
+ {
552
+ "regex": "Version/.{1,300}(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
545
553
  "family_replacement": "Chrome Mobile WebView"
546
554
  },
547
555
  {
548
- "regex": "; wv\\).+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
556
+ "regex": "; wv\\).{1,300}(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
549
557
  "family_replacement": "Chrome Mobile WebView"
550
558
  },
551
559
  {
@@ -561,7 +569,7 @@
561
569
  "family_replacement": "Chrome Mobile"
562
570
  },
563
571
  {
564
- "regex": " Mobile .*(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
572
+ "regex": " Mobile .{1,300}(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
565
573
  "family_replacement": "Chrome Mobile"
566
574
  },
567
575
  {
@@ -591,7 +599,7 @@
591
599
  "family_replacement": "Yandex Browser"
592
600
  },
593
601
  {
594
- "regex": "(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+).* MRCHROME",
602
+ "regex": "(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+).{0,100} MRCHROME",
595
603
  "family_replacement": "Mail.ru Chromium Browser"
596
604
  },
597
605
  {
@@ -617,6 +625,13 @@
617
625
  {
618
626
  "regex": "(Ghost)/(\\d+)\\.(\\d+)\\.(\\d+)"
619
627
  },
628
+ {
629
+ "regex": "PAN (GlobalProtect)/(\\d+)\\.(\\d+)\\.(\\d+) .{1,100} \\(X11; Linux x86_64\\)"
630
+ },
631
+ {
632
+ "regex": "^(surveyon)/(\\d+)\\.(\\d+)\\.(\\d+)",
633
+ "family_replacement": "Surveyon"
634
+ },
620
635
  {
621
636
  "regex": "(Slack_SSB)/(\\d+)\\.(\\d+)\\.(\\d+)",
622
637
  "family_replacement": "Slack Desktop Client"
@@ -652,7 +667,7 @@
652
667
  "regex": "Microsoft Office (Word) 2014"
653
668
  },
654
669
  {
655
- "regex": "Outlook-Express\\/7\\.0.*",
670
+ "regex": "Outlook-Express\\/7\\.0",
656
671
  "family_replacement": "Windows Live Mail"
657
672
  },
658
673
  {
@@ -690,7 +705,7 @@
690
705
  "family_replacement": "Brave"
691
706
  },
692
707
  {
693
- "regex": "(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)[\\d.]* Iron[^/]",
708
+ "regex": "(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)[\\d.]{0,100} Iron[^/]",
694
709
  "family_replacement": "Iron"
695
710
  },
696
711
  {
@@ -818,7 +833,7 @@
818
833
  "regex": "^(Stitcher)/Android"
819
834
  },
820
835
  {
821
- "regex": "^(VLC) .*version (\\d+)\\.(\\d+)\\.(\\d+)"
836
+ "regex": "^(VLC) .{0,200}version (\\d+)\\.(\\d+)\\.(\\d+)"
822
837
  },
823
838
  {
824
839
  "regex": " (VLC) for"
@@ -828,13 +843,13 @@
828
843
  "family_replacement": "VLC"
829
844
  },
830
845
  {
831
- "regex": "^(foobar)\\S+/([^.\\s]+)\\.([^.\\s]+|)\\.?([^.\\s]+|)"
846
+ "regex": "^(foobar)\\S{1,10}/(\\d+)\\.(\\d+|)\\.?([\\da-z]+|)"
832
847
  },
833
848
  {
834
- "regex": "^(Clementine)\\S+ ([^.\\s]+)\\.([^.\\s]+|)\\.?([^.\\s]+|)"
849
+ "regex": "^(Clementine)\\S{1,10} (\\d+)\\.(\\d+|)\\.?(\\d+|)"
835
850
  },
836
851
  {
837
- "regex": "(amarok)/([^.\\s]+)\\.([^.\\s]+|)\\.?([^.\\s]+|)",
852
+ "regex": "(amarok)/(\\d+)\\.(\\d+|)\\.?(\\d+|)",
838
853
  "family_replacement": "Amarok"
839
854
  },
840
855
  {
@@ -874,7 +889,7 @@
874
889
  "v1_replacement": "3"
875
890
  },
876
891
  {
877
- "regex": "(MSIE) (\\d+)\\.(\\d+).*XBLWP7",
892
+ "regex": "(MSIE) (\\d+)\\.(\\d+).{0,100}XBLWP7",
878
893
  "family_replacement": "IE Large Screen"
879
894
  },
880
895
  {
@@ -891,6 +906,17 @@
891
906
  "regex": "(OC)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) \\(Skype for Business\\)",
892
907
  "family_replacement": "Skype"
893
908
  },
909
+ {
910
+ "regex": "(OpenVAS)(?:-VT)?(?:[ \\/](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)",
911
+ "family_replacement": "OpenVAS Scanner"
912
+ },
913
+ {
914
+ "regex": "(AnyConnect)\\/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)"
915
+ },
916
+ {
917
+ "regex": "compatible; monitis",
918
+ "family_replacement": "Monitis"
919
+ },
894
920
  {
895
921
  "regex": "(Obigo)InternetBrowser"
896
922
  },
@@ -941,23 +967,23 @@
941
967
  "family_replacement": "TopBuzz"
942
968
  },
943
969
  {
944
- "regex": "(iPod|iPhone|iPad).+GSA/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|) Mobile",
970
+ "regex": "(iPod|iPhone|iPad).{1,200}GSA/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|) Mobile",
945
971
  "family_replacement": "Google"
946
972
  },
947
973
  {
948
- "regex": "(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|).*[ +]Safari",
974
+ "regex": "(iPod|iPhone|iPad).{1,200}Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|).{1,200}[ +]Safari",
949
975
  "family_replacement": "Mobile Safari"
950
976
  },
951
977
  {
952
- "regex": "(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).* AppleNews\\/\\d+\\.\\d+\\.\\d+?",
978
+ "regex": "(iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).{0,30} AppleNews\\/\\d+\\.\\d+(?:\\.\\d+|)",
953
979
  "family_replacement": "Mobile Safari UI/WKWebView"
954
980
  },
955
981
  {
956
- "regex": "(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)",
982
+ "regex": "(iPod|iPhone|iPad).{1,200}Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)",
957
983
  "family_replacement": "Mobile Safari UI/WKWebView"
958
984
  },
959
985
  {
960
- "regex": "(iPod|iPod touch|iPhone|iPad).* Safari",
986
+ "regex": "(iPod|iPod touch|iPhone|iPad).{0,200} Safari",
961
987
  "family_replacement": "Mobile Safari"
962
988
  },
963
989
  {
@@ -1031,11 +1057,11 @@
1031
1057
  "regex": "(Nokia)[EN]?(\\d+)"
1032
1058
  },
1033
1059
  {
1034
- "regex": "(PlayBook).+RIM Tablet OS (\\d+)\\.(\\d+)\\.(\\d+)",
1060
+ "regex": "(PlayBook).{1,200}RIM Tablet OS (\\d+)\\.(\\d+)\\.(\\d+)",
1035
1061
  "family_replacement": "BlackBerry WebKit"
1036
1062
  },
1037
1063
  {
1038
- "regex": "(Black[bB]erry|BB10).+Version/(\\d+)\\.(\\d+)\\.(\\d+)",
1064
+ "regex": "(Black[bB]erry|BB10).{1,200}Version/(\\d+)\\.(\\d+)\\.(\\d+)",
1039
1065
  "family_replacement": "BlackBerry WebKit"
1040
1066
  },
1041
1067
  {
@@ -1069,11 +1095,11 @@
1069
1095
  "regex": "(PhantomJS)/(\\d+)\\.(\\d+)\\.(\\d+)"
1070
1096
  },
1071
1097
  {
1072
- "regex": "(AppleWebKit)/(\\d+)(?:\\.(\\d+)|)\\+ .* Safari",
1098
+ "regex": "(AppleWebKit)/(\\d+)(?:\\.(\\d+)|)\\+ .{0,200} Safari",
1073
1099
  "family_replacement": "WebKit Nightly"
1074
1100
  },
1075
1101
  {
1076
- "regex": "(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|).*Safari/",
1102
+ "regex": "(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|).{0,100}Safari/",
1077
1103
  "family_replacement": "Safari"
1078
1104
  },
1079
1105
  {
@@ -1139,7 +1165,30 @@
1139
1165
  "family_replacement": "Python Requests"
1140
1166
  },
1141
1167
  {
1142
- "regex": "\\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got)(?:[ /](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
1168
+ "regex": "\\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC)(?:[ /](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)"
1169
+ },
1170
+ {
1171
+ "regex": "^(cf)\\/(\\d+)\\.(\\d+)\\.(\\S+)",
1172
+ "family_replacement": "CloudFoundry"
1173
+ },
1174
+ {
1175
+ "regex": "^(sap-leonardo-iot-sdk-nodejs) \\/ (\\d+)\\.(\\d+)\\.(\\d+)"
1176
+ },
1177
+ {
1178
+ "regex": "^(SAP NetWeaver Application Server) \\(1.0;(\\d{1})(\\d{2})\\)"
1179
+ },
1180
+ {
1181
+ "regex": "^(\\w+-HTTPClient)\\/(\\d+)\\.(\\d+)-(\\S+)",
1182
+ "family_replacement": "HTTPClient"
1183
+ },
1184
+ {
1185
+ "regex": "^(go-cli)\\s(\\d+)\\.(\\d+).(\\S+)"
1186
+ },
1187
+ {
1188
+ "regex": "^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\\/v?(\\d+)\\.(\\d+)\\.?(\\d*)"
1189
+ },
1190
+ {
1191
+ "regex": "^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY)"
1143
1192
  },
1144
1193
  {
1145
1194
  "regex": "(Python/3\\.\\d{1,3} aiohttp)/(\\d+)\\.(\\d+)\\.(\\d+)",
@@ -1148,11 +1197,26 @@
1148
1197
  {
1149
1198
  "regex": "(Java)[/ ]?\\d+\\.(\\d+)\\.(\\d+)[_-]*([a-zA-Z0-9]+|)"
1150
1199
  },
1200
+ {
1201
+ "regex": "(minio-go)/v(\\d+)\\.(\\d+)\\.(\\d+)"
1202
+ },
1203
+ {
1204
+ "regex": "^(ureq)[/ ](\\d+)\\.(\\d+).(\\d+)"
1205
+ },
1206
+ {
1207
+ "regex": "^(http\\.rb)/(\\d+)\\.(\\d+).(\\d+)"
1208
+ },
1209
+ {
1210
+ "regex": "^(GuzzleHttp)/(\\d+)\\.(\\d+).(\\d+)"
1211
+ },
1212
+ {
1213
+ "regex": "^(grab)\\b"
1214
+ },
1151
1215
  {
1152
1216
  "regex": "^(Cyberduck)/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.\\d+|)"
1153
1217
  },
1154
1218
  {
1155
- "regex": "^(S3 Browser) (\\d+)-(\\d+)-(\\d+)(?:\\s*http://s3browser\\.com|)"
1219
+ "regex": "^(S3 Browser) (\\d+)[.-](\\d+)[.-](\\d+)(?:\\s*https?://s3browser\\.com|)"
1156
1220
  },
1157
1221
  {
1158
1222
  "regex": "(S3Gof3r)"
@@ -1179,5 +1243,18 @@
1179
1243
  {
1180
1244
  "regex": "^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/(\\d+)\\.(\\d+)\\.(\\d+)",
1181
1245
  "family_replacement": "ViaFree"
1246
+ },
1247
+ {
1248
+ "regex": "(Transmit)/(\\d+)\\.(\\d+)\\.(\\d+)"
1249
+ },
1250
+ {
1251
+ "regex": "(Download Master)"
1252
+ },
1253
+ {
1254
+ "regex": "\\b(HTTrack) (\\d+)\\.(\\d+)(?:[\\.\\-](\\d+)|)"
1255
+ },
1256
+ {
1257
+ "regex": "SerenityOS",
1258
+ "family_replacement": "SerenityOS Browser"
1182
1259
  }
1183
1260
  ]