Add option for extended output

main
Elbert Alias 4 years ago
parent ccfe11f19f
commit c5909d314e

@ -23,6 +23,7 @@ const aliases = {
w: 'maxWait', w: 'maxWait',
n: 'noScripts', n: 'noScripts',
N: 'noRedirect', N: 'noRedirect',
e: 'extended',
} }
while (true) { while (true) {
@ -77,6 +78,7 @@ Options:
-a, --user-agent=... Set the user agent string -a, --user-agent=... Set the user agent string
-n, --no-scripts Disabled JavaScript on web pages -n, --no-scripts Disabled JavaScript on web pages
-N, --no-redirect Disable cross-domain redirects -N, --no-redirect Disable cross-domain redirects
-e, --extended Output additional information
`) `)
process.exit(1) process.exit(1)

@ -280,6 +280,7 @@ class Driver {
noScripts: false, noScripts: false,
userAgent: userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
extended: false,
...options, ...options,
} }
@ -293,6 +294,7 @@ class Driver {
this.options.htmlMaxCols = parseInt(this.options.htmlMaxCols, 10) this.options.htmlMaxCols = parseInt(this.options.htmlMaxCols, 10)
this.options.htmlMaxRows = parseInt(this.options.htmlMaxRows, 10) this.options.htmlMaxRows = parseInt(this.options.htmlMaxRows, 10)
this.options.noScripts = Boolean(+this.options.noScripts) this.options.noScripts = Boolean(+this.options.noScripts)
this.options.extended = Boolean(+this.options.extended)
this.destroyed = false this.destroyed = false
} }
@ -990,6 +992,32 @@ class Site {
this.error(error) this.error(error)
} }
const patterns = this.options.extended
? this.detections.reduce(
(
patterns,
{
technology: { name, implies, excludes },
pattern: { regex, confidence, type, version },
}
) => {
patterns[name] = patterns[name] || []
patterns[name].push({
type,
regex: regex.source,
confidence,
version,
implies: implies.map(({ name }) => name),
excludes: excludes.map(({ name }) => name),
})
return patterns
},
{}
)
: undefined
const results = { const results = {
urls: this.analyzedUrls, urls: this.analyzedUrls,
technologies: resolve(this.detections).map( technologies: resolve(this.detections).map(
@ -1017,6 +1045,7 @@ class Site {
})), })),
}) })
), ),
patterns,
} }
await this.emit('analyze', results) await this.emit('analyze', results)

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com/", "homepage": "https://www.wappalyzer.com/",
"version": "6.9.12", "version": "6.9.13",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {

@ -4,7 +4,7 @@
"author": "Wappalyzer", "author": "Wappalyzer",
"homepage_url": "https://www.wappalyzer.com/", "homepage_url": "https://www.wappalyzer.com/",
"description": "Identify web technologies", "description": "Identify web technologies",
"version": "6.9.12", "version": "6.9.13",
"default_locale": "en", "default_locale": "en",
"manifest_version": 2, "manifest_version": 2,
"icons": { "icons": {

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com/", "homepage": "https://www.wappalyzer.com/",
"version": "6.9.12", "version": "6.9.13",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {

@ -118,15 +118,20 @@
}, },
"8base": { "8base": {
"cats": [ "cats": [
3, 62 3,
62
], ],
"description": "8base is a Backend-as-a-Service. It lets front-end developers focus more on what they love and backend developers expedite their workflow", "description": "8base is a Backend-as-a-Service. It lets front-end developers focus more on what they love and backend developers expedite their workflow",
"icon": "8base-logo.png", "icon": "8base-logo.png",
"pricing": [ "pricing": [
"low", "freemium", "recurring" "low",
"freemium",
"recurring"
],
"requires": [
"GraphQL"
], ],
"saas": true, "saas": true,
"requires": ["GraphQL"],
"website": "https://8base.com", "website": "https://8base.com",
"xhr": "api\\.8base\\.com" "xhr": "api\\.8base\\.com"
}, },
@ -140,4 +145,4 @@
}, },
"website": "https://github.com/sulu/web-js" "website": "https://github.com/sulu/web-js"
} }
} }

@ -77,6 +77,26 @@
"scriptSrc": "\\.ebis\\.ne\\.jp/", "scriptSrc": "\\.ebis\\.ne\\.jp/",
"website": "http://www.ebis.ne.jp" "website": "http://www.ebis.ne.jp"
}, },
"ADFOX": {
"cats": [
36
],
"description": "ADFOX is an advertising management platform for media publishers.",
"icon": "ADFOX.svg",
"js": {
"AdFox_getCodeScript": "",
"Site.adFoxParams": "",
"adFoxParams": "",
"adfoxAsyncParams": "",
"adfoxBiddersMap": ""
},
"pricing": [
"mid",
"recurring"
],
"saas": true,
"website": "https://adfox.yandex.ru"
},
"AFThemes CoverNews": { "AFThemes CoverNews": {
"cats": [ "cats": [
80 80
@ -721,19 +741,19 @@
36 36
], ],
"description": "AdRiver is a company which provide internet advertising management and audit software.", "description": "AdRiver is a company which provide internet advertising management and audit software.",
"icon": "AdRiver.png",
"dom": "link[href*='.adriver.ru'], img[src*='.adriver.ru'], iframe[src*='.adriver.ru']", "dom": "link[href*='.adriver.ru'], img[src*='.adriver.ru'], iframe[src*='.adriver.ru']",
"icon": "AdRiver.png",
"js": { "js": {
"adriver": "",
"AdriverCounter": "", "AdriverCounter": "",
"AdriverPrebid": "", "AdriverPrebid": "",
"adfoxBiddersMap.adriver": "" "adfoxBiddersMap.adriver": "",
"adriver": ""
}, },
"scriptSrc": "\\.adriver\\.ru/",
"saas": true,
"pricing": [ "pricing": [
"payg" "payg"
], ],
"saas": true,
"scriptSrc": "\\.adriver\\.ru/",
"website": "http://adriver.ru" "website": "http://adriver.ru"
}, },
"AdRoll": { "AdRoll": {
@ -988,26 +1008,6 @@
"scriptSrc": "\\.adform\\.net/", "scriptSrc": "\\.adform\\.net/",
"website": "https://site.adform.com" "website": "https://site.adform.com"
}, },
"ADFOX": {
"cats": [
36
],
"description": "ADFOX is an advertising management platform for media publishers.",
"icon": "ADFOX.svg",
"js": {
"Site.adFoxParams": "",
"adfoxAsyncParams": "",
"AdFox_getCodeScript": "",
"adfoxBiddersMap": "",
"adFoxParams": ""
},
"pricing": [
"mid",
"recurring"
],
"saas": true,
"website": "https://adfox.yandex.ru"
},
"Adloox": { "Adloox": {
"cats": [ "cats": [
36 36
@ -1094,11 +1094,11 @@
36 36
], ],
"description": "Adnegah is a digital marketing and internet advertising agency.", "description": "Adnegah is a digital marketing and internet advertising agency.",
"icon": "Adnegah.png",
"dom": "iframe[scr*='adnegah.net']", "dom": "iframe[scr*='adnegah.net']",
"headers": { "headers": {
"X-Advertising-By": "adnegah\\.net" "X-Advertising-By": "adnegah\\.net"
}, },
"icon": "Adnegah.png",
"scriptSrc": "\\.adnegah\\.net/", "scriptSrc": "\\.adnegah\\.net/",
"website": "https://adnegah.net" "website": "https://adnegah.net"
}, },
@ -1349,13 +1349,13 @@
36 36
], ],
"description": "Adverticum is the developer and operator of Hungary's market leading online ad serving solution, the Adverticum AdServer.", "description": "Adverticum is the developer and operator of Hungary's market leading online ad serving solution, the Adverticum AdServer.",
"icon": "Adverticum.svg",
"dom": "a[href*='ad.adverticum.net'], div.goAdverticum", "dom": "a[href*='ad.adverticum.net'], div.goAdverticum",
"scriptSrc": "\\.adverticum\\.net/", "icon": "Adverticum.svg",
"saas": true,
"pricing": [ "pricing": [
"poa" "poa"
], ],
"saas": true,
"scriptSrc": "\\.adverticum\\.net/",
"website": "http://adverticum.net" "website": "http://adverticum.net"
}, },
"Adyen": { "Adyen": {
@ -1404,12 +1404,12 @@
], ],
"description": "Affilae is an affiliate marketing platform that enables brands to connect, collaborate with influencers and affiliates.", "description": "Affilae is an affiliate marketing platform that enables brands to connect, collaborate with influencers and affiliates.",
"icon": "Affilae.png", "icon": "Affilae.png",
"scriptSrc": "static\\.affilae\\.com/(?:.+v([\\d\\.]+)|.+)?\\.js\\;version:\\1",
"saas": true,
"pricing": [ "pricing": [
"mid", "mid",
"recurring" "recurring"
], ],
"saas": true,
"scriptSrc": "static\\.affilae\\.com/(?:.+v([\\d\\.]+)|.+)?\\.js\\;version:\\1",
"website": "https://affilae.com" "website": "https://affilae.com"
}, },
"Affiliate B": { "Affiliate B": {
@ -1482,14 +1482,14 @@
"js": { "js": {
"AfterbuyString": "" "AfterbuyString": ""
}, },
"scriptSrc": "\\.afterbuy\\.de/",
"saas": true,
"pricing": [ "pricing": [
"freemium", "freemium",
"low", "low",
"recurring", "recurring",
"payg" "payg"
], ],
"saas": true,
"scriptSrc": "\\.afterbuy\\.de/",
"website": "http://www.afterbuy.de" "website": "http://www.afterbuy.de"
}, },
"Afterpay": { "Afterpay": {
@ -1591,8 +1591,8 @@
19 19
], ],
"description": "Airform is a functional HTML forms for front-end developers.", "description": "Airform is a functional HTML forms for front-end developers.",
"icon": "Airform.svg",
"dom": "form[action*='airform.io/']", "dom": "form[action*='airform.io/']",
"icon": "Airform.svg",
"oss": true, "oss": true,
"pricing": [ "pricing": [
"freemium" "freemium"
@ -2665,12 +2665,12 @@
"APOS_DIALOGS.dialogAttributes": "", "APOS_DIALOGS.dialogAttributes": "",
"apos.csrfCookieName": "" "apos.csrfCookieName": ""
}, },
"saas": true,
"pricing": [ "pricing": [
"freemium", "freemium",
"mid", "mid",
"recurring" "recurring"
], ],
"saas": true,
"website": "https://apostrophecms.com" "website": "https://apostrophecms.com"
}, },
"AppDynamics": { "AppDynamics": {
@ -2782,12 +2782,12 @@
} }
}, },
"icon": "Apple.svg", "icon": "Apple.svg",
"meta": {
"appleid-signin-client-id": ""
},
"js": { "js": {
"AppleID": "" "AppleID": ""
}, },
"meta": {
"appleid-signin-client-id": ""
},
"scriptSrc": "appleid\\.auth\\.js", "scriptSrc": "appleid\\.auth\\.js",
"website": "https://developer.apple.com/sign-in-with-apple/" "website": "https://developer.apple.com/sign-in-with-apple/"
}, },
@ -2796,8 +2796,8 @@
72 72
], ],
"description": "Appointy is a cloud-based scheduling solution that helps professionals and businesses to manage their appointment scheduling activities and routines.", "description": "Appointy is a cloud-based scheduling solution that helps professionals and businesses to manage their appointment scheduling activities and routines.",
"dom": "a[href*='.appointy.com/'][target='_blank'], iframe[src*='.appointy.com/']",
"icon": "Appointy.png", "icon": "Appointy.png",
"dom":"a[href*='.appointy.com/'][target='_blank'], iframe[src*='.appointy.com/']",
"pricing": [ "pricing": [
"low", "low",
"freemium", "freemium",
@ -2878,19 +2878,19 @@
], ],
"cpe": "cpe:/a:arastta:ecommerce", "cpe": "cpe:/a:arastta:ecommerce",
"description": "Arastta is a free and open-source project with contributors from all over the world.", "description": "Arastta is a free and open-source project with contributors from all over the world.",
"icon": "Arastta.svg",
"excludes": "OpenCart", "excludes": "OpenCart",
"implies": "PHP",
"headers": { "headers": {
"Arastta": "^(.+)$\\;version:\\1", "Arastta": "^(.+)$\\;version:\\1",
"X-Arastta": "", "X-Arastta": "",
"x-arastta": "" "x-arastta": ""
}, },
"scriptSrc": "arastta\\.js", "icon": "Arastta.svg",
"implies": "PHP",
"oss": true, "oss": true,
"pricing": [ "pricing": [
"freemium" "freemium"
], ],
"scriptSrc": "arastta\\.js",
"website": "http://arastta.org" "website": "http://arastta.org"
}, },
"Arc": { "Arc": {
@ -2998,6 +2998,16 @@
}, },
"website": "http://www.arvancloud.com" "website": "http://www.arvancloud.com"
}, },
"Asana": {
"cats": [
13
],
"description": "Asana is a web and mobile application designed to help teams organize, track, and manage their work.",
"dom": "a[href*='form.asana.com'], a[href*='app.asana.com']",
"icon": "Asana.svg",
"saas": true,
"website": "https://asana.com"
},
"AsciiDoc": { "AsciiDoc": {
"cats": [ "cats": [
1, 1,
@ -3061,26 +3071,6 @@
"scriptSrc": "themes/astra\\S*\\.js(?:\\?ver=([0-9.]+))?\\;version:\\1", "scriptSrc": "themes/astra\\S*\\.js(?:\\?ver=([0-9.]+))?\\;version:\\1",
"website": "https://wpastra.com/" "website": "https://wpastra.com/"
}, },
"Astro": {
"cats": [
57,
12
],
"description": "Astro is a new JavaScript-based static site builder.",
"icon": "Astro.svg",
"dom": {
"link[href*='/_astro/']": {
"attributes": {
"href": "/_astro/(?:common|index)-[\\d\\w]+\\.css"
}
}
},
"oss": true,
"pricing": [
"freemium"
],
"website": "https://astro.build"
},
"Astra Widgets": { "Astra Widgets": {
"cats": [ "cats": [
87, 87,
@ -3104,6 +3094,26 @@
], ],
"website": "https://wpastra.com/did-you-know-astra-is-widget-ready" "website": "https://wpastra.com/did-you-know-astra-is-widget-ready"
}, },
"Astro": {
"cats": [
57,
12
],
"description": "Astro is a new JavaScript-based static site builder.",
"dom": {
"link[href*='/_astro/']": {
"attributes": {
"href": "/_astro/(?:common|index)-[\\d\\w]+\\.css"
}
}
},
"icon": "Astro.svg",
"oss": true,
"pricing": [
"freemium"
],
"website": "https://astro.build"
},
"Astute Solutions": { "Astute Solutions": {
"cats": [ "cats": [
53 53
@ -3768,15 +3778,5 @@
"icon": "augmented-ui.png", "icon": "augmented-ui.png",
"oss": true, "oss": true,
"website": "http://augmented-ui.com" "website": "http://augmented-ui.com"
},
"Asana": {
"cats": [
13
],
"description": "Asana is a web and mobile application designed to help teams organize, track, and manage their work.",
"dom": "a[href*='form.asana.com'], a[href*='app.asana.com']",
"icon": "Asana.svg",
"saas": true,
"website": "https://asana.com"
} }
} }

@ -1021,16 +1021,16 @@
], ],
"description": "Boost Commerce provides beautiful and advanced product filter and smart site search for Shopify stores to boost sales.", "description": "Boost Commerce provides beautiful and advanced product filter and smart site search for Shopify stores to boost sales.",
"icon": "Boost Commerce.png", "icon": "Boost Commerce.png",
"requires": "Shopify",
"js": { "js": {
"bcSfFilterConfig.api.filterUrl": "services\\.mybcapps\\.com/", "bcSfFilterConfig.api.filterUrl": "services\\.mybcapps\\.com/",
"boostPFSAppConfig.api.filterUrl": "services\\.mybcapps\\.com/" "boostPFSAppConfig.api.filterUrl": "services\\.mybcapps\\.com/"
}, },
"saas": true,
"pricing": [ "pricing": [
"payg", "payg",
"recurring" "recurring"
], ],
"requires": "Shopify",
"saas": true,
"website": "https://boostcommerce.net" "website": "https://boostcommerce.net"
}, },
"Bootstrap": { "Bootstrap": {
@ -1801,4 +1801,4 @@
}, },
"website": "https://addyosmani.github.io/basket.js/" "website": "https://addyosmani.github.io/basket.js/"
} }
} }

@ -1339,4 +1339,4 @@
"scriptSrc": "deepMiner\\.js", "scriptSrc": "deepMiner\\.js",
"website": "https://github.com/deepwn/deepMiner" "website": "https://github.com/deepwn/deepMiner"
} }
} }

@ -82,6 +82,18 @@
"scriptSrc": "haddock-util\\.js", "scriptSrc": "haddock-util\\.js",
"website": "http://www.haskell.org/haddock/" "website": "http://www.haskell.org/haddock/"
}, },
"Halo": {
"cats": [
1,
11
],
"icon": "Halo.png",
"implies": "Java",
"meta": {
"generator": "Halo ([\\d.]+)?\\;version:\\1"
},
"website": "https://halo.run"
},
"Hamechio": { "Hamechio": {
"cats": [ "cats": [
18 18
@ -98,18 +110,6 @@
], ],
"website": "https://hamech.io" "website": "https://hamech.io"
}, },
"Halo": {
"cats": [
1,
11
],
"icon": "Halo.png",
"implies": "Java",
"meta": {
"generator": "Halo ([\\d.]+)?\\;version:\\1"
},
"website": "https://halo.run"
},
"Hammer.js": { "Hammer.js": {
"cats": [ "cats": [
59 59
@ -833,7 +833,10 @@
"_hsq": "", "_hsq": "",
"hubspot": "" "hubspot": ""
}, },
"pricing": ["recurring", "high"], "pricing": [
"recurring",
"high"
],
"saas": true, "saas": true,
"website": "https://www.hubspot.com" "website": "https://www.hubspot.com"
}, },
@ -1140,4 +1143,4 @@
"scriptSrc": "merchant\\.cdn\\.hoolah\\.co/", "scriptSrc": "merchant\\.cdn\\.hoolah\\.co/",
"website": "https://www.hoolah.co" "website": "https://www.hoolah.co"
} }
} }

@ -215,16 +215,16 @@
"description": "Imber is an all-in-one marketing automation platform built for customer support (live chat), sales, and marketing.", "description": "Imber is an all-in-one marketing automation platform built for customer support (live chat), sales, and marketing.",
"icon": "Imber.png", "icon": "Imber.png",
"js": { "js": {
"IMBER_ID": "",
"$imber.getVisitor": "", "$imber.getVisitor": "",
"IMBER_ID": "",
"IMBER_SOCKET": "" "IMBER_SOCKET": ""
}, },
"saas": true,
"pricing": [ "pricing": [
"freemium", "freemium",
"low", "low",
"recurring" "recurring"
], ],
"saas": true,
"website": "https://imber.live" "website": "https://imber.live"
}, },
"Immutable.js": { "Immutable.js": {
@ -1080,4 +1080,4 @@
], ],
"website": "https://www.iubenda.com/" "website": "https://www.iubenda.com/"
} }
} }

@ -335,17 +335,17 @@
36 36
], ],
"description": "Kevel (formerly Adzerk) is a developer of ad-serving APIs to help developers build server-side ad platforms.", "description": "Kevel (formerly Adzerk) is a developer of ad-serving APIs to help developers build server-side ad platforms.",
"icon": "Kevel.svg",
"dom": "iframe[src*='adzerk.net'], link[href*='adzerk.net']", "dom": "iframe[src*='adzerk.net'], link[href*='adzerk.net']",
"icon": "Kevel.svg",
"js": { "js": {
"ados": "", "ados": "",
"adosResults": "" "adosResults": ""
}, },
"scriptSrc": "adzerk\\.net/",
"saas": true,
"pricing": [ "pricing": [
"poa" "poa"
], ],
"saas": true,
"scriptSrc": "adzerk\\.net/",
"website": "https://www.kevel.com" "website": "https://www.kevel.com"
}, },
"KeyCDN": { "KeyCDN": {

@ -30,6 +30,22 @@
"saas": true, "saas": true,
"website": "https://ma-jin.jp" "website": "https://ma-jin.jp"
}, },
"MDUI": {
"cats": [
66
],
"description": "MDUI is a CSS Framework based on material design.",
"icon": "MDUI.png",
"js": {
"_mduiEventId": "",
"mdui.Drawer": ""
},
"oss": true,
"pricing": [
"freemium"
],
"website": "https://www.mdui.org"
},
"MGID": { "MGID": {
"cats": [ "cats": [
36 36
@ -710,22 +726,6 @@
}, },
"website": "https://maxemail.xtremepush.com" "website": "https://maxemail.xtremepush.com"
}, },
"MDUI": {
"cats": [
66
],
"description": "MDUI is a CSS Framework based on material design.",
"icon": "MDUI.png",
"js": {
"mdui.Drawer": "",
"_mduiEventId": ""
},
"oss": true,
"pricing": [
"freemium"
],
"website": "https://www.mdui.org"
},
"Medallia": { "Medallia": {
"cats": [ "cats": [
10, 10,

@ -52,6 +52,23 @@
}, },
"website": "https://github.com/ruby/rdoc" "website": "https://github.com/ruby/rdoc"
}, },
"REDAXO": {
"cats": [
1
],
"description": "REDAXO is a content management system that provides business optimisation through web projects and output codes.",
"icon": "REDAXO.png",
"implies": "PHP",
"js": {
"redaxo": "\\;confidence:50"
},
"oss": true,
"pricing": [
"freemium"
],
"url": "^https?://(?:www\\.)?[\\d\\w\\-]+\\.[\\w]+/redaxo/\\;confidence:50",
"website": "https://redaxo.org"
},
"REG.RU": { "REG.RU": {
"cats": [ "cats": [
88 88
@ -581,23 +598,6 @@
"scriptSrc": "js\\.recurly\\.com", "scriptSrc": "js\\.recurly\\.com",
"website": "https://recurly.com" "website": "https://recurly.com"
}, },
"REDAXO": {
"cats": [
1
],
"description": "REDAXO is a content management system that provides business optimisation through web projects and output codes.",
"icon": "REDAXO.png",
"implies": "PHP",
"js": {
"redaxo": "\\;confidence:50"
},
"url": "^https?://(?:www\\.)?[\\d\\w\\-]+\\.[\\w]+\/redaxo/\\;confidence:50",
"oss": true,
"pricing": [
"freemium"
],
"website": "https://redaxo.org"
},
"Red Hat": { "Red Hat": {
"cats": [ "cats": [
28 28
@ -1386,11 +1386,11 @@
"js": { "js": {
"Rotic.setting": "" "Rotic.setting": ""
}, },
"saas": true,
"pricing": [ "pricing": [
"low", "low",
"recurring" "recurring"
], ],
"saas": true,
"website": "https://rotic.ir" "website": "https://rotic.ir"
}, },
"RoundCube": { "RoundCube": {

@ -1,4 +1,21 @@
{ {
"VAPTCHA": {
"cats": [
16
],
"description": "VAPTCHA is the abbreviation of (Variation Analysis based Public Turing Test to Tell Computers and Humans Apart), also known as gesture verification code, is a human-machine verification solution based on artificial intelligence and big data.",
"icon": "VAPTCHA.svg",
"js": {
"vaptcha": ""
},
"pricing": [
"poa",
"freemium"
],
"saas": true,
"scriptSrc": "\\.vaptcha\\.com/v([\\d\\.]+)\\.js\\;version:\\1",
"website": "https://en.vaptcha.com"
},
"VDX.tv": { "VDX.tv": {
"cats": [ "cats": [
36 36
@ -159,23 +176,6 @@
"implies": "PHP", "implies": "PHP",
"website": "http://vanillaforums.org" "website": "http://vanillaforums.org"
}, },
"VAPTCHA": {
"cats": [
16
],
"description": "VAPTCHA is the abbreviation of (Variation Analysis based Public Turing Test to Tell Computers and Humans Apart), also known as gesture verification code, is a human-machine verification solution based on artificial intelligence and big data.",
"icon": "VAPTCHA.svg",
"js": {
"vaptcha": ""
},
"scriptSrc": "\\.vaptcha\\.com/v([\\d\\.]+)\\.js\\;version:\\1",
"saas": true,
"pricing": [
"poa",
"freemium"
],
"website": "https://en.vaptcha.com"
},
"Varbase": { "Varbase": {
"cats": [ "cats": [
1 1

@ -557,7 +557,7 @@ const Wappalyzer = {
if (pattern.regex.test(value)) { if (pattern.regex.test(value)) {
technologies.push({ technologies.push({
technology, technology,
pattern, pattern: { ...pattern, type },
version: Wappalyzer.resolveVersion(pattern, value), version: Wappalyzer.resolveVersion(pattern, value),
}) })
} }
@ -584,7 +584,7 @@ const Wappalyzer = {
if (pattern.regex.test(value)) { if (pattern.regex.test(value)) {
technologies.push({ technologies.push({
technology, technology,
pattern, pattern: { ...pattern, type },
version: Wappalyzer.resolveVersion(pattern, value), version: Wappalyzer.resolveVersion(pattern, value),
}) })
} }
@ -621,7 +621,7 @@ const Wappalyzer = {
if (pattern.regex.test(value)) { if (pattern.regex.test(value)) {
technologies.push({ technologies.push({
technology, technology,
pattern, pattern: { ...pattern, type },
version: Wappalyzer.resolveVersion(pattern, value), version: Wappalyzer.resolveVersion(pattern, value),
}) })
} }