diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js index a68696437..d304830d5 100644 --- a/src/drivers/npm/driver.js +++ b/src/drivers/npm/driver.js @@ -9,6 +9,7 @@ const { setTechnologies, setCategories, analyze, + analyzeOneToMany, analyzeManyToMany, resolve, } = Wappalyzer @@ -67,6 +68,35 @@ function analyzeJs(js) { ) } +function analyzeDom(dom) { + return Array.prototype.concat.apply( + [], + dom.map(({ name, selector, text, property, attribute, value }) => { + const technology = Wappalyzer.technologies.find( + ({ name: _name }) => name === _name + ) + + if (text) { + return analyzeManyToMany(technology, 'dom.text', { [selector]: [text] }) + } + + if (property) { + return analyzeManyToMany(technology, `dom.properties.${property}`, { + [selector]: [value], + }) + } + + if (attribute) { + return analyzeManyToMany(technology, `dom.attributes.${attribute}`, { + [selector]: [value], + }) + } + + return [] + }) + ) +} + function get(url) { if (['http:', 'https:'].includes(url.protocol)) { const { get } = url.protocol === 'http:' ? http : https @@ -173,7 +203,11 @@ class Driver { class Site { constructor(url, headers = {}, driver) { - ;({ options: this.options, browser: this.browser } = driver) + ;({ + options: this.options, + browser: this.browser, + init: this.initDriver, + } = driver) this.options.headers = { ...this.options.headers, @@ -225,12 +259,26 @@ class Site { } } - timeout() { - return new Promise((resolve, reject) => - setTimeout(() => { - reject(new Error('The website took too long to respond')) - }, this.options.maxWait) - ) + promiseTimeout( + promise, + errorMessage = 'The website took too long to respond' + ) { + let timeout = null + + return Promise.race([ + new Promise((resolve, reject) => { + timeout = setTimeout(() => { + clearTimeout(timeout) + + reject(new Error(errorMessage)) + }, this.options.maxWait) + }), + promise.then((value) => { + clearTimeout(timeout) + + return value + }), + ]) } async goto(url) { @@ -249,7 +297,11 @@ class Site { } if (!this.browser) { - throw new Error('Browser closed') + await this.initDriver() + + if (!this.browser) { + throw new Error('Browser closed') + } } const page = await this.browser.newPage() @@ -337,99 +389,101 @@ class Site { ) try { - await Promise.race([ - this.timeout(), - page.goto(url.href, { waitUntil: 'domcontentloaded' }), - ]) + await this.promiseTimeout( + page.goto(url.href, { waitUntil: 'domcontentloaded' }) + ) await sleep(1000) // Links - const links = await ( - await Promise.race([ - this.timeout(), - page.evaluateHandle(() => - Array.from(document.getElementsByTagName('a')).map( - ({ hash, hostname, href, pathname, protocol, rel }) => ({ - hash, - hostname, - href, - pathname, - protocol, - rel, - }) + const links = await this.promiseTimeout( + ( + await this.promiseTimeout( + page.evaluateHandle(() => + Array.from(document.getElementsByTagName('a')).map( + ({ hash, hostname, href, pathname, protocol, rel }) => ({ + hash, + hostname, + href, + pathname, + protocol, + rel, + }) + ) ) - ), - ]) - ).jsonValue() + ) + ).jsonValue() + ) // CSS - const css = await ( - await Promise.race([ - this.timeout(), - page.evaluateHandle((maxRows) => { - const css = [] - - try { - if (!document.styleSheets.length) { - return '' - } + const css = await this.promiseTimeout( + ( + await this.promiseTimeout( + page.evaluateHandle((maxRows) => { + const css = [] + + try { + if (!document.styleSheets.length) { + return '' + } - for (const sheet of Array.from(document.styleSheets)) { - for (const rules of Array.from(sheet.cssRules)) { - css.push(rules.cssText) + for (const sheet of Array.from(document.styleSheets)) { + for (const rules of Array.from(sheet.cssRules)) { + css.push(rules.cssText) - if (css.length >= maxRows) { - break + if (css.length >= maxRows) { + break + } } } + } catch (error) { + return '' } - } catch (error) { - return '' - } - return css.join('\n') - }, this.options.htmlMaxRows), - ]) - ).jsonValue() + return css.join('\n') + }, this.options.htmlMaxRows) + ) + ).jsonValue() + ) // Script tags - const scripts = await ( - await Promise.race([ - this.timeout(), - page.evaluateHandle(() => - Array.from(document.getElementsByTagName('script')) - .map(({ src }) => src) - .filter((src) => src) - ), - ]) - ).jsonValue() + const scripts = await this.promiseTimeout( + ( + await this.promiseTimeout( + page.evaluateHandle(() => + Array.from(document.getElementsByTagName('script')) + .map(({ src }) => src) + .filter((src) => src) + ) + ) + ).jsonValue() + ) // Meta tags - const meta = await ( - await Promise.race([ - this.timeout(), - page.evaluateHandle(() => - Array.from(document.querySelectorAll('meta')).reduce( - (metas, meta) => { - const key = - meta.getAttribute('name') || meta.getAttribute('property') - - if (key) { - metas[key.toLowerCase()] = [meta.getAttribute('content')] - } + const meta = await this.promiseTimeout( + ( + await this.promiseTimeout( + page.evaluateHandle(() => + Array.from(document.querySelectorAll('meta')).reduce( + (metas, meta) => { + const key = + meta.getAttribute('name') || meta.getAttribute('property') + + if (key) { + metas[key.toLowerCase()] = [meta.getAttribute('content')] + } - return metas - }, - {} + return metas + }, + {} + ) ) - ), - ]) - ).jsonValue() + ) + ).jsonValue() + ) // JavaScript - const js = await Promise.race([ - this.timeout(), + const js = await this.promiseTimeout( page.evaluate( (technologies) => { return technologies.reduce((technologies, { name, chains }) => { @@ -461,8 +515,81 @@ class Site { Wappalyzer.technologies .filter(({ js }) => Object.keys(js).length) .map(({ name, js }) => ({ name, chains: Object.keys(js) })) - ), - ]) + ) + ) + + // DOM + const dom = await this.promiseTimeout( + page.evaluate( + (technologies) => { + return technologies.reduce((technologies, { name, dom }) => { + const toScalar = (value) => + typeof value === 'string' || typeof value === 'number' + ? value + : !!value + + Object.keys(dom).forEach((selector) => { + const el = document.querySelector(selector) + + if (!el) { + return + } + + dom[selector].forEach(({ text, properties, attributes }) => { + if (text) { + const value = el.textContent.trim() + + if (value) { + technologies.push({ + name, + selector, + text: value, + }) + } + } + + if (properties) { + Object.keys(properties).forEach((property) => { + if (Object.prototype.hasOwnProperty.call(el, property)) { + const value = el[property] + + if (typeof value !== 'undefined') { + technologies.push({ + name, + selector, + property, + value: toScalar(value), + }) + } + } + }) + } + + if (attributes) { + Object.keys(attributes).forEach((attribute) => { + if (el.hasAttribute(attribute)) { + const value = el.getAttribute(attribute) + + technologies.push({ + name, + selector, + attribute, + value: toScalar(value), + }) + } + }) + } + }) + }) + + return technologies + }, []) + }, + Wappalyzer.technologies + .filter(({ dom }) => dom) + .map(({ name, dom }) => ({ name, dom })) + ) + ) // Cookies const cookies = (await page.cookies()).reduce( @@ -506,6 +633,7 @@ class Site { throw new Error('No response from server') } + this.onDetect(analyzeDom(dom)) this.onDetect(analyzeJs(js)) this.onDetect( @@ -559,7 +687,11 @@ class Site { return reducedLinks } catch (error) { - this.error(error) + if (error.constructor.name === 'TimeoutError') { + throw new Error('The website took too long to respond') + } + + throw new Error(error.message) } } diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json index 59fb46b9d..1f4bf3485 100644 --- a/src/drivers/npm/package.json +++ b/src/drivers/npm/package.json @@ -13,7 +13,7 @@ "software" ], "homepage": "https://www.wappalyzer.com/", - "version": "6.3.2", + "version": "6.3.8", "author": "Wappalyzer", "license": "MIT", "repository": { @@ -40,6 +40,6 @@ "wappalyzer": "./cli.js" }, "dependencies": { - "puppeteer": "^5.2.1" + "puppeteer": "^5.3.0" } } diff --git a/src/drivers/npm/yarn.lock b/src/drivers/npm/yarn.lock index 96f84a2a0..1ebd145e4 100644 --- a/src/drivers/npm/yarn.lock +++ b/src/drivers/npm/yarn.lock @@ -76,10 +76,10 @@ debug@4, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -devtools-protocol@0.0.781568: - version "0.0.781568" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.781568.tgz#4cdca90a952d2c77831096ff6cd32695d8715a04" - integrity sha512-9Uqnzy6m6zEStluH9iyJ3iHyaQziFnMnLeC8vK0eN6smiJmIx7+yB64d67C2lH/LZra+5cGscJAJsNXO+MdPMg== +devtools-protocol@0.0.799653: + version "0.0.799653" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.799653.tgz#86fc95ce5bf4fdf4b77a58047ba9d2301078f119" + integrity sha512-t1CcaZbvm8pOlikqrsIM9GOa7Ipp07+4h/q9u0JXBWjPCjHdBl9KkddX87Vv9vBHoBGtwV79sYQNGnQM6iS5gg== end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" @@ -264,13 +264,13 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -puppeteer@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.2.1.tgz#7f0564f0a5384f352a38c8cc42af875cd87f4ea6" - integrity sha512-PZoZG7u+T6N1GFWBQmGVG162Ak5MAy8nYSVpeeQrwJK2oYUlDWpHEJPcd/zopyuEMTv7DiztS1blgny1txR2qw== +puppeteer@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.3.0.tgz#0abf83d0f2d1273baf2b56885a813f8052903e33" + integrity sha512-GjqMk5GRro3TO0sw3QMsF1H7n+/jaK2OW45qMvqjYUyJ7y4oA//9auy969HHhTG3HZXaMxY/NWXF/NXlAFIvtw== dependencies: debug "^4.1.0" - devtools-protocol "0.0.781568" + devtools-protocol "0.0.799653" extract-zip "^2.0.0" https-proxy-agent "^4.0.0" mime "^2.0.3" diff --git a/src/drivers/webextension/_locales/ca/messages.json b/src/drivers/webextension/_locales/ca/messages.json index c5053ff24..6a773dbcd 100644 --- a/src/drivers/webextension/_locales/ca/messages.json +++ b/src/drivers/webextension/_locales/ca/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility"}, "categoryName69": { "message": "Social login"}, - "categoryName70": { "message": "SSL/TLS certificate authority"} + "categoryName70": { "message": "SSL/TLS certificate authority"}, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/de/messages.json b/src/drivers/webextension/_locales/de/messages.json index 631d7010d..7a89c97bb 100644 --- a/src/drivers/webextension/_locales/de/messages.json +++ b/src/drivers/webextension/_locales/de/messages.json @@ -8,35 +8,35 @@ "optionUpgradeMessage": { "message": "Benachrichtige mich bei Upgrades" }, "optionDynamicIcon": { "message": "Applikations Icon anstatt des Wappalyzer Icons verwenden" }, "optionTracking": { "message": "Anonyme Statistiken an wappalyzer.com übermitteln" }, - "optionThemeMode": { "message": "Aktivieren dunklen Modus Kompatibilität." }, - "optionBadge": { "message": "Show the number of identified technologies on the icon" }, - "disableOnDomain": { "message": "Disable on this website" }, - "clearCache": { "message": "Clear cached detections" }, + "optionThemeMode": { "message": "Dunkel-Modus aktivieren" }, + "optionBadge": { "message": "Anzahl der identifizierten Optionen am Icon anzeigen" }, + "disableOnDomain": { "message": "Auf dieser Website deaktivieren" }, + "clearCache": { "message": "Cache leeren" }, "nothingToDo": { "message": "Nichts zu tun." }, - "noAppsDetected": { "message": "Keine Applikation entdeckt." }, - "categoryPin": { "message": "Immer Icon anzeigen" }, - "termsAccept": { "message": "Accept" }, - "termsContent": { "message": "This extension sends anonymous information about websites you visit, including domain name and identified technologies, to wappalyzer.com. This can be disabled in the settings." }, - "privacyPolicy": { "message": "Privacy policy" }, - "createAlert": { "message": "Create an alert for this website" }, + "noAppsDetected": { "message": "Keine Applikationen gefunden" }, + "categoryPin": { "message": "Icon immer anzeigen" }, + "termsAccept": { "message": "Akzeptieren" }, + "termsContent": { "message": "Diese Erweiterung sendet anonyme Informationen über Websites, die Sie besuchen, einschließlich der Domain und der identifizierten Technologien, an wappalyzer.com. Dies kann in den Einstellungen deaktiviert werden." }, + "privacyPolicy": { "message": "Datenschutzerklärung" }, + "createAlert": { "message": "Alarm für diese Website erstellen" }, "categoryName1": { "message": "CMS" }, "categoryName2": { "message": "Nachrichten Board" }, "categoryName3": { "message": "Datenbankverwaltung" }, "categoryName4": { "message": "Dokumentations Tool" }, "categoryName5": { "message": "Widget" }, - "categoryName6": { "message": "Ecommerce" }, + "categoryName6": { "message": "E-Commerce" }, "categoryName7": { "message": "Fotogalerien" }, "categoryName8": { "message": "Wikis" }, "categoryName9": { "message": "Hosting-Panels" }, "categoryName10": { "message": "Statistiken" }, "categoryName11": { "message": "Blog" }, - "categoryName12": { "message": "JavaScript Framework" }, - "categoryName13": { "message": "Fehlertracker" }, - "categoryName14": { "message": "Videospieler" }, + "categoryName12": { "message": "JavaScript Frameworks" }, + "categoryName13": { "message": "Ticketsysteme" }, + "categoryName14": { "message": "Videoplayer" }, "categoryName15": { "message": "Kommentarsystem" }, "categoryName16": { "message": "Security" }, "categoryName17": { "message": "Schrift Script" }, - "categoryName18": { "message": "Web Framework" }, + "categoryName18": { "message": "Web Frameworks" }, "categoryName19": { "message": "Sonstiges" }, "categoryName20": { "message": "Editor" }, "categoryName21": { "message": "LMS" }, @@ -46,47 +46,48 @@ "categoryName25": { "message": "JavaScript Graphics" }, "categoryName26": { "message": "Mobile Framework" }, "categoryName27": { "message": "Programmiersprache" }, - "categoryName28": { "message": "Betriebssystem" }, - "categoryName29": { "message": "Suchmaschine" }, + "categoryName28": { "message": "Betriebssysteme" }, + "categoryName29": { "message": "Suchmaschinen" }, "categoryName30": { "message": "Webmail" }, "categoryName31": { "message": "CDN" }, "categoryName32": { "message": "Marketing Automation" }, - "categoryName33": { "message": "Web Server Erweiterung" }, - "categoryName34": { "message": "Datenbank" }, - "categoryName35": { "message": "Map" }, - "categoryName36": { "message": "Werbenetzwerk" }, - "categoryName37": { "message": "Netzwerkdienst" }, + "categoryName33": { "message": "Web Server Erweiterungen" }, + "categoryName34": { "message": "Datenbanken" }, + "categoryName35": { "message": "Karten" }, + "categoryName36": { "message": "Werbenetzwerke" }, + "categoryName37": { "message": "Netzwerkdienste" }, "categoryName38": { "message": "Medienserver" }, - "categoryName39": { "message": "Webcam" }, + "categoryName39": { "message": "Web-Kameras" }, "categoryName40": { "message": "Drucker" }, "categoryName41": { "message": "Zahlungsverarbeiter" }, - "categoryName42": { "message": "Schlagwort Manager" }, + "categoryName42": { "message": "Tag Manager" }, "categoryName43": { "message": "Bezahlblockade" }, - "categoryName44": { "message": "Build/CI-System" }, + "categoryName44": { "message": "CI-Systeme" }, "categoryName45": { "message": "SCADA System" }, "categoryName46": { "message": "Fernzugriff" }, - "categoryName47": { "message": "Entwicklungswerkzeug" }, + "categoryName47": { "message": "Entwicklungswerkzeuge" }, "categoryName48": { "message": "Netzwerkspeicher" }, "categoryName49": { "message": "Feedleser" }, "categoryName50": { "message": "Dokumentmanagementsysteme" }, - "categoryName51": { "message": "Startseitenersteller" }, + "categoryName51": { "message": "Website Baukästen" }, "categoryName52": { "message": "Live-Chat" }, "categoryName53": { "message": "CRM" }, - "categoryName54": { "message": "SEO" }, + "categoryName54": { "message": "SEO" }, "categoryName55": { "message": "Buchhaltung" }, "categoryName56": { "message": "Cryptominer" }, "categoryName57": { "message": "Statischer Seitengenerator" }, - "categoryName58": { "message": "Benutzer-Einbindung" }, + "categoryName58": { "message": "Benutzer-Onboarding" }, "categoryName59": { "message": "JavaScript Bibliotheken" }, - "categoryName60": { "message": "Containers" }, + "categoryName60": { "message": "Container" }, "categoryName61": { "message": "SaaS" }, "categoryName62": { "message": "PaaS" }, "categoryName63": { "message": "IaaS" }, - "categoryName64": { "message": "Reverse Proxy" }, + "categoryName64": { "message": "Reverse Proxies" }, "categoryName65": { "message": "Load Balancer" }, "categoryName66": { "message": "UI Frameworks" }, - "categoryName67": { "message": "Cookie compliance" }, - "categoryName68": { "message": "Accessibility"}, - "categoryName69": { "message": "Social login"}, - "categoryName70": { "message": "SSL/TLS certificate authority"} + "categoryName67": { "message": "Cookie Compliance" }, + "categoryName68": { "message": "Barrierefreiheit"}, + "categoryName69": { "message": "Social Login"}, + "categoryName70": { "message": "SSL/TLS certificate authority"}, + "categoryName71": { "message": "Partnerprogram"} } diff --git a/src/drivers/webextension/_locales/el/messages.json b/src/drivers/webextension/_locales/el/messages.json index d96216826..b85696b09 100644 --- a/src/drivers/webextension/_locales/el/messages.json +++ b/src/drivers/webextension/_locales/el/messages.json @@ -84,5 +84,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/en/messages.json b/src/drivers/webextension/_locales/en/messages.json index 453b284bb..329ea3439 100644 --- a/src/drivers/webextension/_locales/en/messages.json +++ b/src/drivers/webextension/_locales/en/messages.json @@ -86,5 +86,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/es/messages.json b/src/drivers/webextension/_locales/es/messages.json index b073fb5aa..acd0a51a4 100644 --- a/src/drivers/webextension/_locales/es/messages.json +++ b/src/drivers/webextension/_locales/es/messages.json @@ -55,7 +55,7 @@ "categoryName34": { "message": "Base de Datos" }, "categoryName35": { "message": "Mapa" }, "categoryName36": { "message": "Red de Publicidad" }, - "categoryName37": { "message": "Network Sevice" }, + "categoryName37": { "message": "Network Service" }, "categoryName38": { "message": "Media Server" }, "categoryName39": { "message": "Webcam" }, "categoryName40": { "message": "Printer" }, @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/fa/messages.json b/src/drivers/webextension/_locales/fa/messages.json index 8a221fefb..66a9108d6 100644 --- a/src/drivers/webextension/_locales/fa/messages.json +++ b/src/drivers/webextension/_locales/fa/messages.json @@ -10,15 +10,15 @@ "optionTracking": { "message": "ارسال فن آوری های شناسایی شده به صورت ناشناس به wappalyzer.com" }, "optionThemeMode": { "message": "فعال کردن حالت سازگاری تاریک." }, "nothingToDo": { "message": "هیچ چیز برای انجام اینجا نیست." }, - "optionBadge": { "message": "Show the number of identified technologies on the icon" }, - "disableOnDomain": { "message": "Disable on this website" }, - "clearCache": { "message": "Clear cached detections" }, + "optionBadge": { "message": "نمایش تعداد فناوری های شناسایی شده روی آیکون" }, + "disableOnDomain": { "message": "غیرفعال کردن در این وبسایت" }, + "clearCache": { "message": "پاکسازی شناسایی های کش شده" }, "noAppsDetected": { "message": "هیچ فن‌آوری شناسایی نشده است." }, "categoryPin": { "message": "همیشه نماد را نشان بده" }, "termsAccept": { "message": "قبول" }, "termsContent": { "message": "این افزونه اطلاعات وب‌سایت‌های بازدید شده توسط شما را به صورت ناشناس ارسال می‌کند، مانند آدرس سایت و تکنولوژی‌های استفاده شده در آن سایت را ارسال می‌کند. اطلاعات بیشتر در wappalyzer.com. شما می‌توانید این افزونه را غیرفعال کنید." }, - "privacyPolicy": { "message": "Privacy policy" }, - "createAlert": { "message": "Create an alert for this website" }, + "privacyPolicy": { "message": "سیاست حفظ حریم خصوصی" }, + "createAlert": { "message": "ساخت یک هشدار برای این وبسایت" }, "categoryName1": { "message": "سیستم مدیریت محتوا" }, "categoryName2": { "message": "انجمن پیام" }, "categoryName3": { "message": "مدیریت پایگاه داده" }, @@ -34,7 +34,7 @@ "categoryName13": { "message": "ردیاب مشکل" }, "categoryName14": { "message": "پخش کننده ویدیویی" }, "categoryName15": { "message": "سیستم نظرسنجی" }, - "categoryName16": { "message": "Security" }, + "categoryName16": { "message": "امنیت" }, "categoryName17": { "message": "اسکریپ فونت" }, "categoryName18": { "message": "چارچوب وب" }, "categoryName19": { "message": "متفرقه" }, @@ -83,10 +83,11 @@ "categoryName62": { "message": "PaaS" }, "categoryName63": { "message": "IaaS" }, "categoryName64": { "message": "پروکسی معکوس" }, - "categoryName65": { "message": "Load Balancer" }, - "categoryName66": { "message": "UI Frameworks" }, + "categoryName65": { "message": "لودبالانسر" }, + "categoryName66": { "message": "فریم‌ورکهای رابط کاربری" }, "categoryName67": { "message": "Cookie compliance" }, - "categoryName68": { "message": "Accessibility" }, - "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName68": { "message": "دسترسی" }, + "categoryName69": { "message": "ورود به شبکه های اجتماعی" }, + "categoryName70": { "message": "صادر کننده SSL/TLS" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/fr/messages.json b/src/drivers/webextension/_locales/fr/messages.json index 9f58d9b7f..dcd25e86b 100644 --- a/src/drivers/webextension/_locales/fr/messages.json +++ b/src/drivers/webextension/_locales/fr/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/gl_ES/messages.json b/src/drivers/webextension/_locales/gl_ES/messages.json index fb8fa26fd..cb599c477 100644 --- a/src/drivers/webextension/_locales/gl_ES/messages.json +++ b/src/drivers/webextension/_locales/gl_ES/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/gr/messages.json b/src/drivers/webextension/_locales/gr/messages.json index fcd10ad82..7fcd40740 100644 --- a/src/drivers/webextension/_locales/gr/messages.json +++ b/src/drivers/webextension/_locales/gr/messages.json @@ -84,5 +84,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/id/messages.json b/src/drivers/webextension/_locales/id/messages.json index a0d1b2897..a154d4074 100644 --- a/src/drivers/webextension/_locales/id/messages.json +++ b/src/drivers/webextension/_locales/id/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/it/messages.json b/src/drivers/webextension/_locales/it/messages.json index a80798521..150a85fc5 100644 --- a/src/drivers/webextension/_locales/it/messages.json +++ b/src/drivers/webextension/_locales/it/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/ja/messages.json b/src/drivers/webextension/_locales/ja/messages.json index 656901314..7cce9190c 100644 --- a/src/drivers/webextension/_locales/ja/messages.json +++ b/src/drivers/webextension/_locales/ja/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/ko/messages.json b/src/drivers/webextension/_locales/ko/messages.json index 86a217896..199a4b996 100644 --- a/src/drivers/webextension/_locales/ko/messages.json +++ b/src/drivers/webextension/_locales/ko/messages.json @@ -86,5 +86,6 @@ "categoryName67": { "message": "쿠키 동의" }, "categoryName68": { "message": "접근성" }, "categoryName69": { "message": "소셜 로그인" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/pl/messages.json b/src/drivers/webextension/_locales/pl/messages.json index d000e321f..0195b2b0a 100644 --- a/src/drivers/webextension/_locales/pl/messages.json +++ b/src/drivers/webextension/_locales/pl/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/pt/messages.json b/src/drivers/webextension/_locales/pt/messages.json index c4c41277d..5cb77d9b2 100644 --- a/src/drivers/webextension/_locales/pt/messages.json +++ b/src/drivers/webextension/_locales/pt/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/pt_BR/messages.json b/src/drivers/webextension/_locales/pt_BR/messages.json index 36f90a93f..741c0bf4a 100644 --- a/src/drivers/webextension/_locales/pt_BR/messages.json +++ b/src/drivers/webextension/_locales/pt_BR/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/ro/messages.json b/src/drivers/webextension/_locales/ro/messages.json index fb621d40c..117097d1b 100644 --- a/src/drivers/webextension/_locales/ro/messages.json +++ b/src/drivers/webextension/_locales/ro/messages.json @@ -84,5 +84,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/ru/messages.json b/src/drivers/webextension/_locales/ru/messages.json index e1fd536ee..70e340022 100644 --- a/src/drivers/webextension/_locales/ru/messages.json +++ b/src/drivers/webextension/_locales/ru/messages.json @@ -86,5 +86,6 @@ "categoryName67": { "message": "Соответствие cookie" }, "categoryName68": { "message": "Доступность" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/sk/messages.json b/src/drivers/webextension/_locales/sk/messages.json index f5095fa72..eb80872bf 100644 --- a/src/drivers/webextension/_locales/sk/messages.json +++ b/src/drivers/webextension/_locales/sk/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/tr/messages.json b/src/drivers/webextension/_locales/tr/messages.json index 832a58bc3..d2fcd6f25 100644 --- a/src/drivers/webextension/_locales/tr/messages.json +++ b/src/drivers/webextension/_locales/tr/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/uk/messages.json b/src/drivers/webextension/_locales/uk/messages.json index a6f7d5daa..227e361ad 100644 --- a/src/drivers/webextension/_locales/uk/messages.json +++ b/src/drivers/webextension/_locales/uk/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Відповідність файлам cookie" }, "categoryName68": { "message": "Доступність" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/uz/messages.json b/src/drivers/webextension/_locales/uz/messages.json index af62b2567..2dece6787 100644 --- a/src/drivers/webextension/_locales/uz/messages.json +++ b/src/drivers/webextension/_locales/uz/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility"}, "categoryName69": { "message": "Social login"}, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/zh_CN/messages.json b/src/drivers/webextension/_locales/zh_CN/messages.json index 8a37b95ca..633fe8aa3 100644 --- a/src/drivers/webextension/_locales/zh_CN/messages.json +++ b/src/drivers/webextension/_locales/zh_CN/messages.json @@ -86,5 +86,6 @@ "categoryName67": { "message": "Cookie 合规" }, "categoryName68": { "message": "辅助功能"}, "categoryName69": { "message": "社交登录"}, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/_locales/zh_TW/messages.json b/src/drivers/webextension/_locales/zh_TW/messages.json index 575a241f0..a43a4271f 100644 --- a/src/drivers/webextension/_locales/zh_TW/messages.json +++ b/src/drivers/webextension/_locales/zh_TW/messages.json @@ -88,5 +88,6 @@ "categoryName67": { "message": "Cookie compliance" }, "categoryName68": { "message": "Accessibility" }, "categoryName69": { "message": "Social login" }, - "categoryName70": { "message": "SSL/TLS certificate authority" } + "categoryName70": { "message": "SSL/TLS certificate authority" }, + "categoryName71": { "message": "Affiliate program"} } diff --git a/src/drivers/webextension/css/styles.css b/src/drivers/webextension/css/styles.css index 45bd52ab3..7e88a4aed 100644 --- a/src/drivers/webextension/css/styles.css +++ b/src/drivers/webextension/css/styles.css @@ -186,6 +186,19 @@ a:hover { margin-bottom: .2rem; } +.technology__open-in-new { + color: var(--color-primary); + visibility: hidden; + height: 1.1rem; + margin-left: .1rem; + vertical-align: middle; + width: 1.1rem; +} + +.technology__heading:hover .technology__open-in-new { + visibility: visible; +} + .technology__icon { height: 16px; margin-right: .5rem; @@ -195,6 +208,17 @@ a:hover { .technology__link { color: var(--color-text); + display: block; + width: 100%; +} + +.technology__link:hover { + text-decoration: none; +} + +.technology__link:hover .technology__name { + border-bottom: 1px solid var(--color-primary); + color: var(--color-primary); } .technology__confidence { @@ -208,7 +232,7 @@ a:hover { border-radius: 3px; font-size: .7rem; padding: .1rem .3rem; - margin-left: .4rem; + margin-left: .2rem; vertical-align: middle; } diff --git a/src/drivers/webextension/html/popup.html b/src/drivers/webextension/html/popup.html index 2d3d2b84e..c41b3d9d3 100644 --- a/src/drivers/webextension/html/popup.html +++ b/src/drivers/webextension/html/popup.html @@ -51,15 +51,21 @@
+ - +   - -   - + +   + -   +   + + + + +
diff --git a/src/drivers/webextension/images/icons/Auth0.png b/src/drivers/webextension/images/icons/Auth0.png new file mode 100644 index 000000000..757559599 Binary files /dev/null and b/src/drivers/webextension/images/icons/Auth0.png differ diff --git a/src/drivers/webextension/images/icons/Blackbaud-Luminate-Online.png b/src/drivers/webextension/images/icons/Blackbaud-Luminate-Online.png new file mode 100644 index 000000000..a9701976c Binary files /dev/null and b/src/drivers/webextension/images/icons/Blackbaud-Luminate-Online.png differ diff --git a/src/drivers/webextension/images/icons/CherryPy.png b/src/drivers/webextension/images/icons/CherryPy.png deleted file mode 100644 index 75fa50094..000000000 Binary files a/src/drivers/webextension/images/icons/CherryPy.png and /dev/null differ diff --git a/src/drivers/webextension/images/icons/CherryPy.svg b/src/drivers/webextension/images/icons/CherryPy.svg new file mode 100644 index 000000000..d2e923fa5 --- /dev/null +++ b/src/drivers/webextension/images/icons/CherryPy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/drivers/webextension/images/icons/Clearbit.png b/src/drivers/webextension/images/icons/Clearbit.png new file mode 100644 index 000000000..5afad1fb0 Binary files /dev/null and b/src/drivers/webextension/images/icons/Clearbit.png differ diff --git a/src/drivers/webextension/images/icons/Crisp Live Chat.svg b/src/drivers/webextension/images/icons/Crisp Live Chat.svg new file mode 100644 index 000000000..3d2b750e4 --- /dev/null +++ b/src/drivers/webextension/images/icons/Crisp Live Chat.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/drivers/webextension/images/icons/Drift.svg b/src/drivers/webextension/images/icons/Drift.svg new file mode 100644 index 000000000..b5deb2947 --- /dev/null +++ b/src/drivers/webextension/images/icons/Drift.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/drivers/webextension/images/icons/Engagio.png b/src/drivers/webextension/images/icons/Engagio.png new file mode 100644 index 000000000..caeb6cd94 Binary files /dev/null and b/src/drivers/webextension/images/icons/Engagio.png differ diff --git a/src/drivers/webextension/images/icons/Masterking32.png b/src/drivers/webextension/images/icons/Masterking32.png new file mode 100644 index 000000000..2a0bb94e7 Binary files /dev/null and b/src/drivers/webextension/images/icons/Masterking32.png differ diff --git a/src/drivers/webextension/images/icons/Oxygen.png b/src/drivers/webextension/images/icons/Oxygen.png new file mode 100644 index 000000000..cdc69591a Binary files /dev/null and b/src/drivers/webextension/images/icons/Oxygen.png differ diff --git a/src/drivers/webextension/images/icons/Pipedrive.svg b/src/drivers/webextension/images/icons/Pipedrive.svg new file mode 100644 index 000000000..cedb65aa4 --- /dev/null +++ b/src/drivers/webextension/images/icons/Pipedrive.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/drivers/webextension/images/icons/Popper.png b/src/drivers/webextension/images/icons/Popper.png new file mode 100644 index 000000000..3835e7452 Binary files /dev/null and b/src/drivers/webextension/images/icons/Popper.png differ diff --git a/src/drivers/webextension/images/icons/React Router.png b/src/drivers/webextension/images/icons/React Router.png new file mode 100644 index 000000000..5dbdfcddc Binary files /dev/null and b/src/drivers/webextension/images/icons/React Router.png differ diff --git a/src/drivers/webextension/images/icons/Redux.png b/src/drivers/webextension/images/icons/Redux.png new file mode 100644 index 000000000..f10af8fac Binary files /dev/null and b/src/drivers/webextension/images/icons/Redux.png differ diff --git a/src/drivers/webextension/images/icons/Rewardful.svg b/src/drivers/webextension/images/icons/Rewardful.svg new file mode 100644 index 000000000..bcfe5d4c4 --- /dev/null +++ b/src/drivers/webextension/images/icons/Rewardful.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/drivers/webextension/images/icons/Rollbar.svg b/src/drivers/webextension/images/icons/Rollbar.svg new file mode 100644 index 000000000..e4a4c395e --- /dev/null +++ b/src/drivers/webextension/images/icons/Rollbar.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/drivers/webextension/images/icons/Schedule Engine.svg b/src/drivers/webextension/images/icons/Schedule Engine.svg new file mode 100644 index 000000000..1c37b0b1b --- /dev/null +++ b/src/drivers/webextension/images/icons/Schedule Engine.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/drivers/webextension/images/icons/Scorpion.svg b/src/drivers/webextension/images/icons/Scorpion.svg new file mode 100644 index 000000000..1ba8c4245 --- /dev/null +++ b/src/drivers/webextension/images/icons/Scorpion.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/drivers/webextension/images/icons/Sift.png b/src/drivers/webextension/images/icons/Sift.png new file mode 100644 index 000000000..5bd072ba7 Binary files /dev/null and b/src/drivers/webextension/images/icons/Sift.png differ diff --git a/src/drivers/webextension/images/icons/SnapEngage.svg b/src/drivers/webextension/images/icons/SnapEngage.svg new file mode 100644 index 000000000..fd33818f0 --- /dev/null +++ b/src/drivers/webextension/images/icons/SnapEngage.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/drivers/webextension/images/icons/Voog.png b/src/drivers/webextension/images/icons/Voog.png new file mode 100644 index 000000000..77e2a318b Binary files /dev/null and b/src/drivers/webextension/images/icons/Voog.png differ diff --git a/src/drivers/webextension/images/icons/classy.png b/src/drivers/webextension/images/icons/classy.png new file mode 100644 index 000000000..26798b66c Binary files /dev/null and b/src/drivers/webextension/images/icons/classy.png differ diff --git a/src/drivers/webextension/images/icons/feedback-fish.svg b/src/drivers/webextension/images/icons/feedback-fish.svg new file mode 100644 index 000000000..2dba24836 --- /dev/null +++ b/src/drivers/webextension/images/icons/feedback-fish.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/drivers/webextension/js/popup.js b/src/drivers/webextension/js/popup.js index 2086f3b0b..9ffbc2960 100644 --- a/src/drivers/webextension/js/popup.js +++ b/src/drivers/webextension/js/popup.js @@ -96,7 +96,7 @@ const Popup = { '.alerts__link' ).href = `https://www.wappalyzer.com/alerts/?url=${encodeURIComponent( `${url}` - )}` + )}&utm_source=popup&utm_medium=extension&utm_campaign=wappalyzer` const { hostname } = new URL(url) @@ -210,7 +210,7 @@ const Popup = { const link = categoryNode.querySelector('.category__link') - link.href = `https://www.wappalyzer.com/technologies/${categorySlug}/` + link.href = `https://www.wappalyzer.com/technologies/${categorySlug}/?utm_source=popup&utm_medium=extension&utm_campaign=wappalyzer` link.dataset.i18n = `categoryName${id}` const pins = categoryNode.querySelectorAll('.category__pin') @@ -247,9 +247,10 @@ const Popup = { image.src = `../images/icons/${icon}` const link = technologyNode.querySelector('.technology__link') + const linkText = technologyNode.querySelector('.technology__name') - link.href = `https://www.wappalyzer.com/technologies/${categorySlug}/${slug}/` - link.textContent = name + link.href = `https://www.wappalyzer.com/technologies/${categorySlug}/${slug}/?utm_source=popup&utm_medium=extension&utm_campaign=wappalyzer` + linkText.textContent = name const confidenceNode = technologyNode.querySelector( '.technology__confidence' diff --git a/src/drivers/webextension/manifest.json b/src/drivers/webextension/manifest.json index d9ed82e58..e6593d351 100644 --- a/src/drivers/webextension/manifest.json +++ b/src/drivers/webextension/manifest.json @@ -4,7 +4,7 @@ "author": "Wappalyzer", "homepage_url": "https://www.wappalyzer.com/", "description": "Identify web technologies", - "version": "6.3.1", + "version": "6.3.5", "default_locale": "en", "manifest_version": 2, "icons": { @@ -69,4 +69,4 @@ "https://*/*" ], "content_security_policy": "script-src 'self'; object-src 'self'" -} +} \ No newline at end of file diff --git a/src/package.json b/src/package.json index 057c0978c..b105360bd 100644 --- a/src/package.json +++ b/src/package.json @@ -13,7 +13,7 @@ "software" ], "homepage": "https://www.wappalyzer.com/", - "version": "6.3.2", + "version": "6.3.8", "author": "Wappalyzer", "license": "MIT", "repository": { diff --git a/src/technologies.json b/src/technologies.json index d5173595a..9652a2289 100644 --- a/src/technologies.json +++ b/src/technologies.json @@ -1,2113 +1,1748 @@ { "$schema": "../schema.json", - "technologies": { - "1C-Bitrix": { - "cats": [ - 1, - 6 - ], - "headers": { - "Set-Cookie": "BITRIX_", - "X-Powered-CMS": "Bitrix Site Manager" - }, - "html": "(?:]+components/bitrix|(?:src|href)=\"/bitrix/(?:js|templates))", - "icon": "1C-Bitrix.png", - "implies": "PHP", - "scripts": "1c-bitrix", - "description": "1C-Bitrix is a system of web project management, universal software for the creation, support and successful development of corporate websites and online stores.", - "website": "http://www.1c-bitrix.ru" + "categories": { + "1": { + "name": "CMS", + "priority": 1 }, - "3dCart": { - "cats": [ - 1, - 6 - ], - "cookies": { - "3dvisit": "" - }, - "headers": { - "X-Powered-By": "3DCART" - }, - "icon": "3dCart.png", - "scripts": "(?:twlh(?:track)?\\.asp|3d_upsell\\.js)", - "website": "http://www.3dcart.com" + "2": { + "name": "Message boards", + "priority": 1 }, - "91App": { - "cats": [ - 6 - ], - "icon": "91app.png", - "scripts": "https\\:\\/\\/track\\.91app\\.io\\/track\\.js\\?", - "website": "https://www.91app.com/" + "3": { + "name": "Database managers", + "priority": 2 }, - "@sulu/web": { - "cats": [ - 59 - ], - "icon": "Sulu.svg", - "js": { - "web.startComponents": "" - }, - "website": "https://github.com/sulu/web-js" + "4": { + "name": "Documentation", + "priority": 2 }, - "A-Frame": { - "cats": [ - 25 - ], - "html": "]*>", - "icon": "A-Frame.svg", - "implies": "three.js", - "js": { - "AFRAME.version": "^(.+)$\\;version:\\1" - }, - "scripts": "/?([\\d.]+)?/aframe(?:\\.min)?\\.js\\;version:\\1", - "website": "https://aframe.io" + "5": { + "name": "Widgets", + "priority": 9 }, - "AD EBiS": { - "cats": [ - 10 - ], - "html": [ - "", - "icon": "Business Catalyst.png", - "scripts": "CatalystScripts", - "website": "http://businesscatalyst.com" + "icon": "Atlassian Jira.svg", + "scripts": [ + "jira-issue-collector-plugin", + "atlassian\\.jira\\.collector\\.plugin" + ], + "description": "Atlassian Jira Issue Collector is a tool used to download a list of websites using with email addresses, phone numbers and LinkedIn profiles.", + "website": "http://www.atlassian.com/software/jira/overview/" }, - "BuySellAds": { + "Atlassian Statuspage": { "cats": [ - 36 + 13, + 62 ], - "icon": "BuySellAds.png", - "js": { - "_bsa": "", - "_bsaPRO": "", - "_bsap": "", - "_bsap_serving_callback": "" + "headers": { + "X-StatusPage-Skip-Logging": "", + "X-StatusPage-Version": "" }, - "scripts": "^https?://s\\d\\.buysellads\\.com/", - "website": "http://buysellads.com" + "html": "]*href=\"https?://(?:www\\.)?statuspage\\.io/powered-by[^>]+>", + "icon": "Atlassian Statuspage.svg", + "description": "Statuspage is a status and incident communication tool.", + "website": "https://www.statuspage.io/" }, - "CCV Shop": { + "AudioEye": { "cats": [ - 6 + 68 ], - "icon": "ccvshop.png", - "scripts": "/website/JavaScript/Vertoshop\\.js", - "website": "https://ccvshop.be" + "description": "AudioEye automatically evaluates and adjusts website content to be accessible.", + "html": "]*audioeye\\.com/frame/cookieStorage", + "icon": "AudioEye.png", + "scripts": "audioeye\\.com/ae\\.js", + "website": "https://www.audioeye.com/" }, - "CDN77": { + "Aurelia": { "cats": [ - 31 + 12 ], - "headers": { - "Server": "^CDN77-Turbo$" - }, - "icon": "CDN77.png", - "website": "https://www.cdn77.com" + "html": [ + "<[^>]+aurelia-app=[^>]", + "<[^>]+data-main=[^>]aurelia-bootstrapper", + "<[^>]+au-target-id=[^>]\\d" + ], + "icon": "Aurelia.svg", + "scripts": [ + "aurelia(?:\\.min)?\\.js" + ], + "website": "http://aurelia.io" }, - "CFML": { + "Auth0": { "cats": [ - 27 + 19 ], - "icon": "CFML.png", - "website": "http://adobe.com/products/coldfusion-family.html" + "description": "Auth0 provides authentication and authorization as a service.", + "icon": "Auth0.png", + "scripts": [ + "/auth0(?:-js)?/([\\d.]+)/auth0(?:.min)?\\.js\\;version:\\1", + "/auth0-js@([\\d.]+)/([a-z]+)/auth0\\.min\\.js\\;version:\\1" + ], + "website": "https://auth0.github.io/auth0.js/index.html" }, - "CIVIC": { + "Auth0 Lock": { "cats": [ - 67 + 19 ], - "icon": "civic.png", - "scripts": "cc\\.cdn\\.civiccomputing\\.com", - "website": "https://www.civicuk.com/cookie-control" + "description": "Auth0's signin solution", + "icon": "Auth0.png", + "scripts": "/lock/([\\d.]+)/lock(?:.min)?\\.js\\;version:\\1", + "website": "https://auth0.com/docs/libraries/lock" }, - "CKEditor": { + "Automattic": { "cats": [ - 24 + 62 ], - "cpe": "cpe:/a:ckeditor:ckeditor", - "icon": "CKEditor.png", - "js": { - "CKEDITOR": "", - "CKEDITOR.version": "^(.+)$\\;version:\\1", - "CKEDITOR_BASEPATH": "" + "description": "Automattic is a freemium blogging service and an open-source blogging software.", + "headers": { + "X-Hacker": "(?:automattic\\.com/jobs|wpvip\\.com/careers)" }, - "website": "http://ckeditor.com" + "icon": "automattic.png", + "implies": "WordPress", + "website": "https://automattic.com/" }, - "CMS Made Simple": { + "Avangate": { "cats": [ - 1 + 6 ], - "cookies": { - "CMSSESSID": "" - }, - "cpe": "cpe:/a:cmsmadesimple:cms_made_simple", - "icon": "CMS Made Simple.png", - "implies": "PHP", - "meta": { - "generator": "CMS Made Simple" + "html": "]* href=\"https?://edge\\.avangate\\.net/", + "icon": "Avangate.svg", + "js": { + "__avng8_": "", + "avng8_": "" }, - "website": "http://cmsmadesimple.org" + "scripts": "^https?://edge\\.avangate\\.net/", + "website": "http://avangate.com" }, - "CMSimple": { + "Avasize": { "cats": [ - 1 + 5 ], - "cpe": "cpe:/a:cmsimple:cmsimple", - "implies": "PHP", - "meta": { - "generator": "CMSimple( [\\d.]+)?\\;version:\\1" - }, - "website": "http://www.cmsimple.org/en" + "icon": "Avasize.png", + "scripts": "^https?://cdn\\.avasize\\.com/", + "website": "https://www.avasize.com" }, - "CNZZ": { + "Awesomplete": { "cats": [ - 10 + 29 ], - "icon": "cnzz.png", + "description": "Awesomplete is a tool in the Javascript UI Libraries category of a tech stack.", + "html": "]+href=\"[^>]*awesomplete(?:\\.min)?\\.css", "js": { - "cnzz_protocol": "" + "awesomplete": "" }, - "scripts": "//[^./]+\\.cnzz\\.com/(?:z_stat.php|core)\\?", - "website": "https://web.umeng.com/" + "scripts": "/awesomplete\\.js(?:$|\\?)", + "website": "https://leaverou.github.io/awesomplete/" }, "Commerce.js": { "cats": [ @@ -2125,13702 +1760,14900 @@ "X-Powered-By": "Commerce.js" } }, - "CPG Dragonfly": { + "Axios": { "cats": [ - 1 + 19 ], - "headers": { - "X-Powered-By": "^Dragonfly CMS" - }, - "icon": "CPG Dragonfly.png", - "implies": "PHP", - "meta": { - "generator": "CPG Dragonfly" - }, - "website": "http://dragonflycms.org" + "scripts": [ + "/axios(@|/)([\\d.]+)(?:/[a-z]+)?/axios(?:.min)?\\.js\\;version:\\2" + ], + "description": "Promise based HTTP client for the browser and node.js", + "website": "https://github.com/axios/axios" }, - "CS Cart": { + "Azure": { "cats": [ - 6 - ], - "html": [ - " Powered by (?:]+cs-cart\\.com|CS-Cart)", - "\\.cm-noscript[^>]+" + 62 ], - "icon": "CS Cart.png", - "implies": "PHP", - "js": { - "fn_compare_strings": "" + "cookies": { + "ARRAffinity": "", + "TiPMix": "" }, - "website": "http://www.cs-cart.com" + "description": "Azure is a cloud computing service for building, testing, deploying, and managing applications and services through Microsoft-managed data centers.", + "headers": { + "azure-regionname": "", + "azure-sitename": "", + "azure-slotname": "", + "azure-version": "" + }, + "icon": "azure.svg", + "website": "https://azure.microsoft.com" }, - "CacheFly": { + "Azure CDN": { "cats": [ 31 ], "headers": { - "Server": "^CFS ", - "X-CF1": "", - "X-CF2": "" + "X-EC-Debug": "", + "server": "^(?:ECAcc|ECS|ECD)" }, - "icon": "CacheFly.png", - "website": "http://www.cachefly.com" + "icon": "azure.svg", + "description": "Azure Content Delivery Network (CDN) reduces load times, save bandwidth and speed responsiveness.", + "website": "https://azure.microsoft.com/en-us/services/cdn/" }, - "Caddy": { + "BEM": { "cats": [ - 22 + 12 ], - "headers": { - "Server": "^Caddy$" - }, - "icon": "caddy.svg", - "implies": "Go", - "website": "http://caddyserver.com" + "html": "<[^>]+data-bem", + "icon": "BEM.png", + "website": "http://en.bem.info" }, - "Cafe24": { + "BIGACE": { "cats": [ - 6 + 1 ], - "icon": "Cafe24.png", - "js": { - "EC_GLOBAL_DATETIME": "", - "EC_GLOBAL_INFO": "", - "EC_ROOT_DOMAIN": "" + "html": "(?:Powered by ]+BIGACE|", + "icon": "Business Catalyst.png", + "scripts": "CatalystScripts", + "website": "http://businesscatalyst.com" }, - "Comandia": { + "BuySellAds": { "cats": [ - 6 + 36 ], - "html": "]+=['\"]//cdn\\.mycomandia\\.com", - "icon": "Comandia.svg", + "icon": "BuySellAds.png", "js": { - "Comandia": "" + "_bsa": "", + "_bsaPRO": "", + "_bsap": "", + "_bsap_serving_callback": "" }, - "website": "http://comandia.com" + "scripts": "^https?://s\\d\\.buysellads\\.com/", + "website": "http://buysellads.com" }, - "Combeenation": { + "CCV Shop": { "cats": [ 6 ], - "html": "]+src=\"[^>]+portal\\.combeenation\\.com", - "icon": "Combeenation.png", - "website": "https://www.combeenation.com" + "icon": "ccvshop.png", + "scripts": "/website/JavaScript/Vertoshop\\.js", + "website": "https://ccvshop.be" }, - "Commerce Server": { + "CDN77": { "cats": [ - 6 + 31 ], - "cpe": "cpe:/a:microsoft:commerce_server", "headers": { - "COMMERCE-SERVER-SOFTWARE": "" + "Server": "^CDN77-Turbo$" }, - "icon": "Commerce Server.png", - "implies": "Microsoft ASP.NET", - "website": "http://commerceserver.net" + "icon": "CDN77.png", + "description": "CDN77 is a content delivery network (CDN).", + "website": "https://www.cdn77.com" }, - "CompaqHTTPServer": { + "CFML": { "cats": [ - 22 + 27 ], - "cpe": "cpe:/a:hp:compaqhttpserver", - "headers": { - "Server": "CompaqHTTPServer\\/?([\\d\\.]+)?\\;version:\\1" - }, - "icon": "HP.svg", - "website": "http://www.hp.com" + "description": "ColdFusion Markup Language (CFML), is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine.", + "icon": "CFML.png", + "website": "http://adobe.com/products/coldfusion-family.html" }, - "Concrete5": { + "CIVIC": { "cats": [ - 1 + 67 ], - "cookies": { - "CONCRETE5": "" - }, - "cpe": "cpe:/a:concrete5:concrete5", - "icon": "Concrete5.png", - "implies": "PHP", - "js": { - "CCM_IMAGE_PATH": "" - }, - "meta": { - "generator": "^concrete5 - ([\\d.]+)$\\;version:\\1" - }, - "scripts": "/concrete/js/", - "website": "https://concrete5.org" + "description": "Civic provides cookie control for user consent and the use of cookies.", + "icon": "civic.png", + "scripts": "cc\\.cdn\\.civiccomputing\\.com", + "website": "https://www.civicuk.com/cookie-control" }, - "Contao": { + "CKEditor": { "cats": [ - 1 - ], - "cpe": "cpe:/a:contao:contao_cms", - "html": [ - "", - "]+(?:typolight|contao)\\.css" + 24 ], - "icon": "Contao.png", - "implies": "PHP", - "meta": { - "generator": "^Contao Open Source CMS$" + "cpe": "cpe:/a:ckeditor:ckeditor", + "icon": "CKEditor.png", + "js": { + "CKEDITOR": "", + "CKEDITOR.version": "^(.+)$\\;version:\\1", + "CKEDITOR_BASEPATH": "" }, - "website": "http://contao.org" + "description": "CKEditor is a WYSIWYG rich text editor which enables writing content directly inside of web pages or online applications. Its core code is written in JavaScript and it is developed by CKSource. CKEditor is available under open-source and commercial licenses.", + "website": "http://ckeditor.com" }, - "Contenido": { + "CMS Made Simple": { "cats": [ 1 ], - "cpe": "cpe:/a:contenido:contendio", - "icon": "Contenido.png", + "cookies": { + "CMSSESSID": "" + }, + "cpe": "cpe:/a:cmsmadesimple:cms_made_simple", + "icon": "CMS Made Simple.png", "implies": "PHP", "meta": { - "generator": "Contenido ([\\d.]+)\\;version:\\1" + "generator": "CMS Made Simple" }, - "website": "http://contenido.org/en" + "website": "http://cmsmadesimple.org" }, - "Contensis": { + "CMSimple": { "cats": [ - 1 - ], - "icon": "Contensis.png", - "implies": [ - "Java", - "CFML" + 1 ], + "cpe": "cpe:/a:cmsimple:cmsimple", + "implies": "PHP", "meta": { - "generator": "Contensis CMS Version ([\\d.]+)\\;version:\\1" + "generator": "CMSimple( [\\d.]+)?\\;version:\\1" }, - "website": "https://zengenti.com/en-gb/products/contensis" + "website": "http://www.cmsimple.org/en" }, - "ContentBox": { + "CNZZ": { "cats": [ - 1, - 11 + 10 ], - "icon": "ContentBox.png", - "implies": "Adobe ColdFusion", - "meta": { - "generator": "ContentBox powered by ColdBox" + "icon": "cnzz.png", + "js": { + "cnzz_protocol": "" }, - "website": "http://www.gocontentbox.org" + "scripts": "//[^./]+\\.cnzz\\.com/(?:z_stat.php|core)\\?", + "website": "https://web.umeng.com/" }, - "Contentful": { + "CPG Dragonfly": { "cats": [ 1 ], - "html": "<[^>]+(?:https?:)?//(?:assets|downloads|images|videos)\\.(?:ct?fassets\\.net|contentful\\.com)", - "icon": "Contentful.svg", - "description": "Contentful is an API-first content management platform to create, manage and publish content on any digital channel.", - "website": "http://www.contentful.com" + "headers": { + "X-Powered-By": "^Dragonfly CMS" + }, + "icon": "CPG Dragonfly.png", + "implies": "PHP", + "meta": { + "generator": "CPG Dragonfly" + }, + "website": "http://dragonflycms.org" }, - "ConversionLab": { + "CS Cart": { "cats": [ - 10 + 6 ], - "icon": "ConversionLab.png", - "scripts": "conversionlab\\.trackset\\.com/track/tsend\\.js", - "website": "http://www.trackset.it/conversionlab" + "html": [ + " Powered by (?:]+cs-cart\\.com|CS-Cart)", + "\\.cm-noscript[^>]+" + ], + "icon": "CS Cart.png", + "implies": "PHP", + "js": { + "fn_compare_strings": "" + }, + "website": "http://www.cs-cart.com" }, - "Cookie Script": { + "CacheFly": { "cats": [ - 67 + 31 ], - "icon": "CookieScript.png", - "scripts": "//cookie-script\\.com/s/", - "website": "https://cookie-script.com/" + "headers": { + "Server": "^CFS ", + "X-CF1": "", + "X-CF2": "" + }, + "icon": "CacheFly.png", + "description": "CacheFly is a content delivery network (CDN) which offers CDN service that relies solely on IP anycast for routing, rather than DNS based global load balancing.", + "website": "http://www.cachefly.com" }, - "CookieHub": { + "Caddy": { "cats": [ - 67 - ], - "icon": "CookieHub.png", - "scripts": [ - "cookiehub\\.net/.*\\.js" + 22 ], - "website": "https://www.cookiehub.com" + "headers": { + "Server": "^Caddy$" + }, + "icon": "caddy.svg", + "implies": "Go", + "website": "http://caddyserver.com" }, - "CookieYes": { + "Cafe24": { "cats": [ - 67 + 6 ], - "icon": "cookieyes.png", - "scripts": "app\\.cookieyes\\.com/client_data/", - "website": "https://www.cookieyes.com/" + "icon": "Cafe24.png", + "js": { + "EC_GLOBAL_DATETIME": "", + "EC_GLOBAL_INFO": "", + "EC_ROOT_DOMAIN": "" + }, + "website": "https://ec.cafe24.com/" }, - "Cookiebot": { + "CakePHP": { "cats": [ - 67 + 18 ], - "icon": "Cookiebot.svg", - "scripts": "consent\\.cookiebot\\.com", - "website": "http://www.cookiebot.com" + "cookies": { + "cakephp": "" + }, + "cpe": "cpe:/a:cakephp:cakephp", + "icon": "CakePHP.png", + "implies": "PHP", + "meta": { + "application-name": "CakePHP" + }, + "website": "http://cakephp.org" }, - "Coppermine": { + "Captch Me": { "cats": [ - 7 + 16, + 36 ], - "cpe": "cpe:/a:coppermine-gallery:coppermine_photo_gallery", - "html": "", - "icon": "Docker.svg", - "website": "https://www.docker.com/" + "meta": { + "generator": "^concrete5 - ([\\d.]+)$\\;version:\\1" + }, + "scripts": "/concrete/js/", + "website": "https://concrete5.org" }, - "Docusaurus": { + "Contao": { "cats": [ - 4 + 1 ], - "icon": "docusaurus.svg", - "implies": [ - "React", - "webpack" + "cpe": "cpe:/a:contao:contao_cms", + "html": [ + "", + "]+(?:typolight|contao)\\.css" ], - "js": { - "search.indexName": "" - }, + "icon": "Contao.png", + "implies": "PHP", "meta": { - "generator": "^Docusaurus$" + "generator": "^Contao Open Source CMS$" }, - "website": "https://docusaurus.io/" + "website": "http://contao.org" }, - "Dojo": { + "Contenido": { "cats": [ - 59 + 1 ], - "cpe": "cpe:/a:dojotoolkit:dojo", - "icon": "Dojo.png", - "js": { - "dojo": "", - "dojo.version.major": "^(.+)$\\;version:\\1" + "cpe": "cpe:/a:contenido:contendio", + "icon": "Contenido.png", + "implies": "PHP", + "meta": { + "generator": "Contenido ([\\d.]+)\\;version:\\1" }, - "scripts": "([\\d.]+)/dojo/dojo(?:\\.xd)?\\.js\\;version:\\1", - "website": "https://dojotoolkit.org" + "website": "http://contenido.org/en" }, - "Dokeos": { + "Contensis": { "cats": [ - 21 + 1 ], - "headers": { - "X-Powered-By": "Dokeos" - }, - "html": "(?:Portal ]+>Dokeos|@import \"[^\"]+dokeos_blue)", - "icon": "Dokeos.png", + "icon": "Contensis.png", "implies": [ - "PHP", - "Xajax", - "jQuery", - "CKEditor" + "Java", + "CFML" ], "meta": { - "generator": "Dokeos" + "generator": "Contensis CMS Version ([\\d.]+)\\;version:\\1" }, - "website": "https://dokeos.com" + "website": "https://zengenti.com/en-gb/products/contensis" }, - "DokuWiki": { + "ContentBox": { "cats": [ - 8 - ], - "cookies": { - "DokuWiki": "" - }, - "cpe": "cpe:/a:dokuwiki:dokuwiki", - "html": [ - "]+id=\"dokuwiki__>", - "]+href=\"#dokuwiki__" + 1, + 11 ], - "icon": "DokuWiki.png", - "implies": "PHP", + "icon": "ContentBox.png", + "implies": "Adobe ColdFusion", "meta": { - "generator": "^DokuWiki( Release [\\d-]+)?\\;version:\\1" + "generator": "ContentBox powered by ColdBox" }, - "website": "https://www.dokuwiki.org" + "website": "http://www.gocontentbox.org" }, - "Dotclear": { + "Contentful": { "cats": [ 1 ], - "cpe": "cpe:/a:dotclear:dotclear", - "headers": { - "X-Dotclear-Static-Cache": "" - }, - "icon": "Dotclear.png", - "implies": "PHP", - "website": "http://dotclear.org" + "description": "Contentful is an API-first content management platform to create, manage and publish content on any digital channel.", + "html": "<[^>]+(?:https?:)?//(?:assets|downloads|images|videos)\\.(?:ct?fassets\\.net|contentful\\.com)", + "icon": "Contentful.svg", + "website": "http://www.contentful.com" }, - "DoubleClick Ad Exchange (AdX)": { + "ConversionLab": { "cats": [ - 36 - ], - "icon": "DoubleClick.svg", - "scripts": [ - "googlesyndication\\.com/pagead/show_ads\\.js", - "tpc\\.googlesyndication\\.com/safeframe", - "googlesyndication\\.com.*abg\\.js" + 10 ], - "description": "DoubleClick Ad Exchange is a real-time marketplace to buy and sell display advertising space.", - "website": "http://www.doubleclickbygoogle.com/solutions/digital-marketing/ad-exchange/" + "icon": "ConversionLab.png", + "scripts": "conversionlab\\.trackset\\.com/track/tsend\\.js", + "website": "http://www.trackset.it/conversionlab" }, - "DoubleClick Campaign Manager (DCM)": { + "Cookie Script": { "cats": [ - 36 + 67 ], - "icon": "DoubleClick.svg", - "scripts": "2mdn\\.net", - "website": "http://www.doubleclickbygoogle.com/solutions/digital-marketing/campaign-manager/" + "description": "Cookie-Script automatically scans, categorizes and adds description to all cookies found on your website.", + "icon": "CookieScript.png", + "scripts": "//cookie-script\\.com/s/", + "website": "https://cookie-script.com/" }, - "DoubleClick Floodlight": { + "CookieHub": { "cats": [ - 36 + 67 ], - "icon": "DoubleClick.svg", - "scripts": "https?://fls\\.doubleclick\\.net", - "website": "http://support.google.com/ds/answer/6029713?hl=en" + "icon": "CookieHub.png", + "scripts": [ + "cookiehub\\.net/.*\\.js" + ], + "website": "https://www.cookiehub.com" }, - "DoubleClick for Publishers (DFP)": { + "CookieYes": { "cats": [ - 36 + 67 ], - "icon": "DoubleClick.svg", - "scripts": "googletagservices\\.com/tag/js/gpt(?:_mobile)?\\.js", - "description": "DoubleClick for Publishers (DFP) is a hosted ad serving platform that streamlines your ad management.", - "website": "http://www.google.com/dfp" + "icon": "cookieyes.png", + "scripts": "app\\.cookieyes\\.com/client_data/", + "website": "https://www.cookieyes.com/" }, - "DovetailWRP": { + "Cookiebot": { "cats": [ - 1 + 67 ], - "html": "]* href=\"\\/DovetailWRP\\/", - "icon": "DovetailWRP.png", - "implies": "Microsoft ASP.NET", - "scripts": "\\/DovetailWRP\\/", - "website": "http://www.dovetailinternet.com" + "icon": "Cookiebot.svg", + "scripts": "consent\\.cookiebot\\.com", + "description": "Cookiebot is a cloud-driven solution that automatically controls cookies and trackers, enabling full GDPR/ePrivacy and CCPA compliance for websites.", + "website": "http://www.cookiebot.com" }, - "Doxygen": { + "Coppermine": { "cats": [ - 4 + 7 ], - "cpe": "cpe:/a:doxygen:doxygen", - "html": "(?:", + "icon": "Docker.svg", + "description": "Docker is a tool designed to make it easier to create, deploy, and run applications by using containers.", + "website": "https://www.docker.com/" }, - "Fact Finder": { + "Docusaurus": { "cats": [ - 29 + 4 ], - "html": "|" + 62 ], - "icon": "Google Tag Manager.png", - "js": { - "google_tag_manager": "", - "googletag": "" + "headers": { + "x-fw-hash": "", + "x-fw-serve": "", + "x-fw-server": "^Flywheel(?:/([\\d.]+))?\\;version:\\1", + "x-fw-static": "", + "x-fw-type": "" }, - "website": "http://www.google.com/tagmanager" + "icon": "flywheel.svg", + "implies": "WordPress", + "website": "https://getflywheel.com" }, - "Google Wallet": { + "Font Awesome": { "cats": [ - 41 + 17 ], - "icon": "Google Wallet.png", - "scripts": [ - "checkout\\.google\\.com", - "wallet\\.google\\.com" + "description": "Font Awesome is a font and icon toolkit based on CSS and Less.", + "html": [ + "]* href=[^>]+(?:([\\d.]+)/)?(?:css/)?font-awesome(?:\\.min)?\\.css\\;version:\\1", + "]* href=[^>]*?(?:F|f)o(?:n|r)t-?(?:A|a)wesome(?:[^>]*?([0-9a-fA-F]{7,40}|[\\d]+(?:.[\\d]+(?:.[\\d]+)?)?)|)\\;version:\\1", + "]* href=[^>]*kit\\-pro\\.fontawesome\\.com/releases/v([0-9.]+)/\\;version:\\1" ], - "website": "http://wallet.google.com" - }, - "Google Web Server": { - "cats": [ - 22 + "icon": "font-awesome.svg", + "scripts": [ + "(?:F|f)o(?:n|r)t-?(?:A|a)wesome(?:.*?([0-9a-fA-F]{7,40}|[\\d]+(?:.[\\d]+(?:.[\\d]+)?)?)|)", + "kit\\.fontawesome\\.com/([0-9a-z]+).js" ], - "cpe": "cpe:/a:google:web_server", - "headers": { - "Server": "gws" - }, - "icon": "Google.svg", - "website": "http://en.wikipedia.org/wiki/Google_Web_Server" + "website": "https://fontawesome.com/" }, - "Google Web Toolkit": { + "Fork CMS": { "cats": [ - 18 + 1 ], - "cpe": "cpe:/a:google:web_toolkit", - "icon": "Google Web Toolkit.png", - "implies": "Java", - "js": { - "__gwt_": "", - "__gwt_activeModules": "", - "__gwt_getMetaProperty": "", - "__gwt_isKnownPropertyValue": "", - "__gwt_stylesLoaded": "", - "__gwtlistener": "" - }, + "cpe": "cpe:/a:fork-cms:fork_cms", + "icon": "ForkCMS.png", + "implies": "Symfony", "meta": { - "gwt:property": "" + "generator": "^Fork CMS$" }, - "website": "http://developers.google.com/web-toolkit" + "website": "http://www.fork-cms.com/" }, - "Graffiti CMS": { + "ForoshGostar": { "cats": [ - 1 + 6 ], "cookies": { - "graffitibot": "" + "Aws.customer": "" }, - "icon": "Graffiti CMS.png", + "icon": "ForoshGostar.svg", "implies": "Microsoft ASP.NET", "meta": { - "generator": "Graffiti CMS ([^\"]+)\\;version:\\1" + "generator": "^Forosh\\s?Gostar.*|Arsina Webshop.*$" }, - "scripts": "/graffiti\\.js", - "website": "http://graffiticms.codeplex.com" + "website": "https://www.foroshgostar.com" }, - "GrandNode": { + "Fortune3": { "cats": [ 6 ], + "html": "(?:]*href=\"[^\\/]*\\/\\/www\\.fortune3\\.com\\/[^\"]*siterate\\/rate\\.css|Powered by ]*href=\"[^\"]+fortune3\\.com)", + "icon": "Fortune3.png", + "scripts": "cartjs\\.php\\?(?:.*&)?s=[^&]*myfortune3cart\\.com", + "website": "http://fortune3.com" + }, + "Foswiki": { + "cats": [ + 8 + ], "cookies": { - "Grand.customer": "" + "FOSWIKISTRIKEONE": "", + "SFOSWIKISID": "" + }, + "cpe": "cpe:/a:foswiki:foswiki", + "headers": { + "X-Foswikiaction": "", + "X-Foswikiuri": "" + }, + "html": [ + "
" + ], + "icon": "foswiki.png", + "implies": "Perl", + "js": { + "foswiki": "" }, - "html": "(?:|" + "googletagmanager\\.com/ns\\.html[^>]+>", + "" ], - "icon": "inspectlet.png", + "icon": "Google Tag Manager.png", "js": { - "__insp": "", - "__inspld": "" + "google_tag_manager": "", + "googletag": "" }, "scripts": [ - "cdn\\.inspectlet\\.com" + "googletagmanager\\.com/gtm\\.js", + "googletagmanager\\.com/gtag/js" ], - "website": "https://www.inspectlet.com/" + "website": "http://www.google.com/tagmanager" }, - "Instabot": { + "Google Wallet": { "cats": [ - 5, - 10, - 32, - 52, - 58 + 41 ], - "icon": "Instabot.png", - "js": { - "Instabot": "" - }, - "scripts": "/rokoInstabot\\.js", - "website": "https://instabot.io/" - }, - "InstantCMS": { - "cats": [ - 1 + "icon": "Google Wallet.png", + "scripts": [ + "checkout\\.google\\.com", + "wallet\\.google\\.com" ], - "cookies": { - "InstantCMS[logdate]": "" - }, - "cpe": "cpe:/a:instantcms:instantcms", - "icon": "InstantCMS.png", - "implies": "PHP", - "meta": { - "generator": "InstantCMS" - }, - "website": "http://www.instantcms.ru" + "website": "http://wallet.google.com" }, - "Intel Active Management Technology": { + "Google Web Server": { "cats": [ - 22, - 46 + 22 ], - "cpe": "cpe:/a:intel:active_management_technology", + "cpe": "cpe:/a:google:web_server", "headers": { - "Server": "Intel\\(R\\) Active Management Technology(?: ([\\d.]+))?\\;version:\\1" + "Server": "gws" }, - "icon": "Intel Active Management Technology.png", - "website": "http://intel.com" - }, - "IntenseDebate": { - "cats": [ - 15 - ], - "icon": "IntenseDebate.png", - "scripts": "intensedebate\\.com", - "website": "http://intensedebate.com" + "icon": "Google.svg", + "website": "http://en.wikipedia.org/wiki/Google_Web_Server" }, - "Intercom": { + "Google Web Toolkit": { "cats": [ - 10 + 18 ], - "icon": "Intercom.svg", + "cpe": "cpe:/a:google:web_toolkit", + "description": "Google Web Toolkit (GWT) is an open-source Java software development framework that makes writing AJAX applications.", + "icon": "Google Web Toolkit.png", + "implies": "Java", "js": { - "Intercom": "" + "__gwt_": "", + "__gwt_activeModules": "", + "__gwt_getMetaProperty": "", + "__gwt_isKnownPropertyValue": "", + "__gwt_stylesLoaded": "", + "__gwtlistener": "" }, - "scripts": "(?:api\\.intercom\\.io/api|static\\.intercomcdn\\.com/intercom\\.v1)", - "description": "Intercom is a Conversational Relationship Platform that helps businesses build better customer relationships through personalized, messenger-based experiences.", - "website": "https://www.intercom.com" + "meta": { + "gwt:property": "" + }, + "website": "http://developers.google.com/web-toolkit" }, - "Intercom Articles": { + "Graffiti CMS": { "cats": [ - 4 + 1 ], - "html": "]+>We run on Intercom", - "icon": "Intercom.svg", - "website": "https://www.intercom.com/articles" + "cookies": { + "graffitibot": "" + }, + "icon": "Graffiti CMS.png", + "implies": "Microsoft ASP.NET", + "meta": { + "generator": "Graffiti CMS ([^\"]+)\\;version:\\1" + }, + "scripts": "/graffiti\\.js", + "website": "http://graffiticms.codeplex.com" }, - "Intershop": { + "GrandNode": { "cats": [ 6 ], - "html": "(?:CDS )?Invenio\\s*v?([\\d\\.]+)?\\;version:\\1", - "icon": "Invenio.png", - "website": "http://invenio-software.org" - }, - "Ionic": { - "cats": [ - 18 - ], - "icon": "ionic.png", - "js": { - "Ionic.config": "", - "Ionic.version": "^(.+)$\\;version:\\1" + "html": "(?:", - "icon": "Java.png", - "website": "https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html" + "icon": "Haskell.png", + "website": "http://wiki.haskell.org/Haskell" }, - "Jekyll": { + "HeadJS": { "cats": [ - 57 - ], - "cpe": "cpe:/a:jekyllrb:jekyll", - "html": [ - "Powered by ]*>Jekyll]*data-headjs-load", + "icon": "HeadJS.png", + "js": { + "head.browser.name": "" }, - "description": "Jekyll is a blog-aware, static site generator for personal, project, or organization sites.", - "website": "http://jekyllrb.com" + "scripts": "head\\.(?:core|load)(?:\\.min)?\\.js", + "website": "http://headjs.com" }, - "Jenkins": { + "Heap": { "cats": [ - 44 + 10 ], - "headers": { - "X-Jenkins": "([\\d.]+)\\;version:\\1" - }, - "html": "Jenkins ver\\. ([\\d.]+)\\;version:\\1", - "icon": "Jenkins.png", - "implies": "Java", + "icon": "Heap.png", "js": { - "jenkinsCIGlobal": "", - "jenkinsRules": "" + "heap": "" }, - "website": "https://jenkins.io/" + "scripts": "heap-\\d+\\.js", + "website": "http://heapanalytics.com" }, - "Jetshop": { + "Hello Bar": { "cats": [ - 6 + 5 ], - "html": "<(?:div|aside) id=\"jetshop-branding\">", - "icon": "Jetshop.png", + "icon": "Hello Bar.png", "js": { - "JetshopData": "" + "HelloBar": "" }, - "website": "http://jetshop.se" + "scripts": "hellobar\\.js", + "website": "http://hellobar.com" }, - "Jetty": { + "Heroku": { "cats": [ - 22 + 62 ], + "description": "Heroku is a cloud platform as a service (PaaS) supporting several programming languages.", "headers": { - "Server": "Jetty(?:\\(([\\d\\.]*\\d+))?\\;version:\\1" + "Via": "[\\d.-]+ vegur$" }, - "icon": "Jetty.png", - "implies": "Java", - "website": "http://www.eclipse.org/jetty" + "icon": "heroku.svg", + "implies": [ + "Amazon Web Services" + ], + "url": "\\.herokuapp\\.com", + "website": "https://www.heroku.com/" }, - "Jibres": { + "Hexo": { "cats": [ - 6 + 57 ], - "headers": { - "X-Powered-By": "Jibres" + "description": "Hexo is a blog framework powered by Node.js.", + "html": [ + "Powered by ]*>Hexo]*>Created with Highcharts ([\\d.]*)\\;version:\\1", + "icon": "Highcharts.png", "js": { - "jirafe": "" + "Highcharts": "", + "Highcharts.version": "^(.+)$\\;version:\\1" }, - "scripts": "/jirafe\\.js", - "website": "https://docs.jirafe.com" - }, - "Jitsi": { - "cats": [ - 52 - ], - "icon": "Jitsi.png", - "scripts": "lib-jitsi-meet.*\\.js", - "website": "https://jitsi.org" + "scripts": "highcharts.*\\.js", + "description": "Highcharts is a charting library written in pure JavaScript, for adding interactive charts to a website or web application.", + "website": "https://www.highcharts.com" }, - "Jive": { + "Highlight.js": { "cats": [ 19 ], - "headers": { - "X-JIVE-USER-ID": "", - "X-JSL": "", - "X-Jive-Flow-Id": "", - "X-Jive-Request-Id": "", - "x-jive-chrome-wrapped": "" + "icon": "Highlight.js.png", + "js": { + "hljs.highlightBlock": "", + "hljs.listLanguages": "" }, - "icon": "Jive.png", - "website": "http://www.jivesoftware.com" + "scripts": "/(?:([\\d.])+/)?highlight(?:\\.min)?\\.js\\;version:\\1", + "website": "https://highlightjs.org/" }, - "JobberBase": { + "Highstock": { "cats": [ - 19 + 25 ], - "icon": "JobberBase.png", - "implies": "PHP", - "js": { - "Jobber": "" - }, - "meta": { - "generator": "Jobberbase" - }, - "website": "http://www.jobberbase.com" + "html": "]*>Created with Highstock ([\\d.]*)\\;version:\\1", + "icon": "Highcharts.png", + "scripts": "highstock[.-]?([\\d\\.]*\\d).*\\.js\\;version:\\1", + "website": "http://highcharts.com/products/highstock" }, - "Joomla": { + "HikeOrders": { "cats": [ - 1 + 68 ], - "cpe": "cpe:/a:joomla:joomla", - "headers": { - "X-Content-Encoded-By": "Joomla! ([\\d.]+)\\;version:\\1" - }, - "html": "(?:]+id=\"wrapper_r\"|<(?:link|script)[^>]+(?:feed|components)/com_|]+class=\"pill)\\;confidence:50", - "icon": "Joomla.svg", - "implies": "PHP", - "js": { - "Joomla": "", - "jcomments": "" - }, + "description": "HikeOrders web accessibility automated plugin.", + "icon": "HikeOrders.png", + "scripts": "hikeorders\\.com/main/assets/js/hko-accessibility\\.min\\.js", + "website": "https://hikeorders.com/" + }, + "Hinza Advanced CMS": { + "cats": [ + 1, + 6 + ], + "icon": "hinza_advanced_cms.svg", + "implies": "Laravel", "meta": { - "generator": "Joomla!(?: ([\\d.]+))?\\;version:\\1" + "generator": "hinzacms" }, - "url": "option=com_", - "description": "Joomla is a free and open-source content management system for publishing web content.", - "website": "https://www.joomla.org" + "website": "http://hinzaco.com" }, - "K2": { + "History": { "cats": [ 19 ], - "html": "" + ], + "icon": "inspectlet.png", + "js": { + "__insp": "", + "__inspld": "" }, - "website": "http://www.komodocms.com" + "scripts": [ + "cdn\\.inspectlet\\.com" + ], + "website": "https://www.inspectlet.com/" }, - "Koobi": { + "Instabot": { + "cats": [ + 5, + 10, + 32, + 52, + 58 + ], + "description": "Instabot is a conversion chatbot that understands your users, and curates information, answers questions, captures contacts, and books meetings instantly.", + "icon": "Instabot.png", + "js": { + "Instabot": "" + }, + "scripts": "/rokoInstabot\\.js", + "website": "https://instabot.io/" + }, + "InstantCMS": { "cats": [ 1 ], - "html": "", - "icon": "Lightspeed.svg", - "scripts": "http://assets\\.webshopapp\\.com", - "url": "seoshop.webshopapp.com", - "website": "http://www.lightspeedhq.com/products/ecommerce/" - }, - "LinkSmart": { - "cats": [ - 36 - ], - "icon": "LinkSmart.png", - "js": { - "LS_JSON": "", - "LinkSmart": "", - "_mb_site_guid": "" + "headers": { + "powered": "jet-enterprise" }, - "scripts": "^https?://cdn\\.linksmart\\.com/linksmart_([\\d.]+?)(?:\\.min)?\\.js\\;version:\\1", - "website": "http://linksmart.com" - }, - "Linkedin": { - "cats": [ - 5 - ], - "icon": "Linkedin.svg", - "scripts": "//platform\\.linkedin\\.com/in\\.js", - "website": "http://linkedin.com" + "icon": "JET Enterprise.svg", + "website": "http://www.jetecommerce.com.br/" }, - "Liquid Web": { + "JS Charts": { "cats": [ - 62 + 25 ], - "headers": { - "x-lw-cache": "" + "icon": "JS Charts.png", + "js": { + "JSChart": "" }, - "icon": "liquidweb.svg", - "website": "https://www.liquidweb.com" + "scripts": "jscharts.{0,32}\\.js", + "website": "http://www.jscharts.com" }, - "List.js": { + "JSEcoin": { "cats": [ - 59 + 56 ], - "icon": "List.js.png", + "icon": "JSEcoin.png", "js": { - "List": "" + "jseMine": "" }, - "scripts": "^list\\.(?:min\\.)?js$", - "website": "http://listjs.com" + "scripts": "^(?:https):?//load\\.jsecoin\\.com/load/", + "description": "JSEcoin is a way to mine, receive payments for your goods or services and transfer cryptocurrency", + "website": "https://jsecoin.com/" }, - "LiteSpeed": { + "JTL Shop": { "cats": [ - 22 + 6 ], - "cpe": "cpe:/a:litespeedtech:litespeed_web_server", - "headers": { - "Server": "^LiteSpeed$" + "cookies": { + "JTLSHOP": "" }, - "icon": "LiteSpeed.svg", - "website": "http://litespeedtech.com" + "html": "(?:]+name=\"JTLSHOP|]+Powered by Lithium", - "icon": "Lithium.png", - "implies": "PHP", - "js": { - "LITHIUM": "" + "website": "http://www.jalios.com" + }, + "Java": { + "cats": [ + 27 + ], + "cookies": { + "JSESSIONID": "" }, - "website": "https://www.lithium.com" + "description": "Java is a class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.", + "icon": "Java.png", + "website": "http://java.com" }, - "Live Story": { + "Java Servlet": { "cats": [ - 1 + 18 ], - "icon": "LiveStory.png", - "js": { - "LSHelpers": "", - "LiveStory": "" + "headers": { + "X-Powered-By": "Servlet(?:\\/([\\d.]+))?\\;version:\\1" }, - "website": "https://www.livestory.nyc/" + "icon": "Java.png", + "implies": "Java", + "website": "http://www.oracle.com/technetwork/java/index-jsp-135475.html" }, - "LiveAgent": { + "JavaScript Infovis Toolkit": { "cats": [ - 52 + 25 ], - "icon": "LiveAgent.png", + "icon": "JavaScript Infovis Toolkit.png", "js": { - "LiveAgent": "" + "$jit": "", + "$jit.version": "^(.+)$\\;version:\\1" }, - "website": "https://www.ladesk.com" + "scripts": "jit(?:-yc)?\\.js", + "website": "https://philogb.github.io/jit/" }, - "LiveChat": { + "JavaServer Faces": { "cats": [ - 52 + 18 ], - "icon": "LiveChat.png", - "scripts": "cdn\\.livechatinc\\.com/.*tracking\\.js", - "website": "http://livechatinc.com" + "headers": { + "X-Powered-By": "JSF(?:/([\\d.]+))?\\;version:\\1" + }, + "icon": "JavaServer Faces.png", + "implies": "Java", + "website": "http://javaserverfaces.java.net" }, - "LiveHelp": { + "JavaServer Pages": { "cats": [ - 52, - 53 + 18 ], - "icon": "LiveHelp.png", - "js": { - "LHready": "" + "headers": { + "X-Powered-By": "JSP(?:/([\\d.]+))?\\;version:\\1" }, - "website": "http://www.livehelp.it" + "icon": "Java.png", + "implies": "Java", + "website": "http://www.oracle.com/technetwork/java/javaee/jsp/index.html" }, - "LiveJournal": { + "Javadoc": { "cats": [ - 11 + 4 ], - "icon": "LiveJournal.png", - "url": "\\.livejournal\\.com", - "website": "http://www.livejournal.com" + "description": "Javadoc is a tool used for generating Java code documentation in HTML format from Java source code.", + "html": "", + "icon": "Java.png", + "website": "https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html" }, - "LivePerson": { + "Jekyll": { "cats": [ - 52 + 57 ], - "icon": "LivePerson.png", - "scripts": "^https?://lptag\\.liveperson\\.net/tag/tag\\.js", - "website": "https://www.liveperson.com/" + "cpe": "cpe:/a:jekyllrb:jekyll", + "description": "Jekyll is a blog-aware, static site generator for personal, project, or organization sites.", + "html": [ + "Powered by ]*>JekyllJenkins ver\\. ([\\d.]+)\\;version:\\1", + "icon": "Jenkins.png", + "implies": "Java", "js": { - "LIVESTREET_SECURITY_KEY": "" + "jenkinsCIGlobal": "", + "jenkinsRules": "" }, - "website": "http://livestreetcms.com" + "website": "https://jenkins.io/" }, - "Livefyre": { + "Jetshop": { "cats": [ - 15 + 6 ], - "html": "<[^>]+(?:id|class)=\"livefyre", - "icon": "Livefyre.png", + "html": "<(?:div|aside) id=\"jetshop-branding\">", + "icon": "Jetshop.png", "js": { - "FyreLoader": "", - "L.version": "^(.+)$\\;confidence:0\\;version:\\1", - "LF.CommentCount": "", - "fyre": "" + "JetshopData": "" }, - "scripts": "livefyre_init\\.js", - "website": "http://livefyre.com" - }, - "Liveinternet": { - "cats": [ - 10 - ], - "html": [ - "]*>[^]{0,128}?src\\s*=\\s*['\"]//counter\\.yadro\\.ru/hit(?:;\\S+)?\\?(?:t\\d+\\.\\d+;)?r", - "", - "", - "]{1,512}\\bwire:", - "icon": "Livewire.png", - "implies": "Laravel", - "js": { - "livewire": "" + "headers": { + "Server": "Jetty(?:\\(([\\d\\.]*\\d+))?\\;version:\\1" }, - "scripts": "livewire(?:\\.min)?\\.js", - "website": "https://laravel-livewire.com" + "icon": "Jetty.png", + "implies": "Java", + "website": "http://www.eclipse.org/jetty" }, - "LocalFocus": { + "Jibres": { "cats": [ - 61 - ], - "html": "]+\\blocalfocus\\b", - "icon": "LocalFocus.png", - "implies": [ - "Angular", - "D3" + 6 ], - "website": "https://www.localfocus.nl/en/" + "headers": { + "X-Powered-By": "Jibres" + }, + "icon": "Jibres.svg", + "website": "https://jibres.com" }, - "LocomotiveCMS": { + "Jimdo": { "cats": [ 1 ], - "html": "]*/sites/[a-z\\d]{24}/theme/stylesheets", - "icon": "LocomotiveCMS.png", - "implies": [ - "Ruby on Rails", - "MongoDB" - ], - "website": "https://www.locomotivecms.com" + "headers": { + "X-Jimdo-Instance": "", + "X-Jimdo-Wid": "" + }, + "icon": "jimdo.png", + "url": "\\.jimdo\\.com/", + "website": "https://www.jimdo.com" }, - "Lodash": { + "Jirafe": { "cats": [ - 59 + 10, + 32 ], - "cpe": "cpe:/a:lodash:lodash", - "excludes": "Underscore.js", - "icon": "Lo-dash.png", + "icon": "Jirafe.png", "js": { - "_.VERSION": "^(.+)$\\;confidence:0\\;version:\\1", - "_.differenceBy": "", - "_.templateSettings.imports._.templateSettings.imports._.VERSION": "^(.+)$\\;version:\\1" + "jirafe": "" }, - "scripts": "lodash.*\\.js", - "description": "Lodash is a JavaScript library which provides utility functions for common programming tasks using the functional programming paradigm.", - "website": "http://www.lodash.com" + "scripts": "/jirafe\\.js", + "website": "https://docs.jirafe.com" + }, + "Jitsi": { + "cats": [ + 52 + ], + "description": "Jitsi is a free and open-source multiplatform voice (VoIP), videoconferencing and instant messaging applications for the web platform.", + "icon": "Jitsi.png", + "scripts": "lib-jitsi-meet.*\\.js", + "website": "https://jitsi.org" }, - "Login with Amazon": { + "Jive": { "cats": [ - 69 + 19 ], - "icon": "Amazon.svg", - "js": { - "onAmazonLoginReady": "" + "headers": { + "X-JIVE-USER-ID": "", + "X-JSL": "", + "X-Jive-Flow-Id": "", + "X-Jive-Request-Id": "", + "x-jive-chrome-wrapped": "" }, - "website": "https://developer.amazon.com/apps-and-games/login-with-amazon" + "icon": "Jive.png", + "website": "http://www.jivesoftware.com" }, - "Logitech Media Server": { + "JobberBase": { "cats": [ - 22, - 38 + 19 ], - "headers": { - "Server": "Logitech Media Server(?: \\(([\\d\\.]+))?\\;version:\\1" + "icon": "JobberBase.png", + "implies": "PHP", + "js": { + "Jobber": "" }, - "icon": "Logitech Media Server.png", - "website": "http://www.mysqueezebox.com" + "meta": { + "generator": "Jobberbase" + }, + "website": "http://www.jobberbase.com" }, - "Loja Integrada": { + "Joomla": { "cats": [ - 6 + 1 ], + "cpe": "cpe:/a:joomla:joomla", + "description": "Joomla is a free and open-source content management system for publishing web content.", "headers": { - "X-Powered-By": "vtex-integrated-store" + "X-Content-Encoded-By": "Joomla! ([\\d.]+)\\;version:\\1" }, - "icon": "Loja Integrada.png", + "html": "(?:]+id=\"wrapper_r\"|<(?:link|script)[^>]+(?:feed|components)/com_|]+class=\"pill)\\;confidence:50", + "icon": "Joomla.svg", + "implies": "PHP", "js": { - "window.LOJA_ID": "" + "Joomla": "", + "jcomments": "" }, - "website": "https://lojaintegrada.com.br/" + "meta": { + "generator": "Joomla!(?: ([\\d.]+))?\\;version:\\1" + }, + "url": "option=com_", + "website": "https://www.joomla.org" }, - "Lotus Domino": { + "K2": { "cats": [ - 22 + 19 ], - "cpe": "cpe:/a:ibm:lotus_domino", - "headers": { - "Server": "Lotus-Domino" + "html": "" - ], - "icon": "mailchimp.svg", - "scripts": [ - "s3\\.amazonaws\\.com/downloads\\.mailchimp\\.com/js/mc-validate\\.js", - "cdn-images\\.mailchimp\\.com/[^>]*\\.css" + 22 ], - "description": "Mailchimp is a marketing automation platform and email marketing service.", - "website": "http://mailchimp.com" + "headers": { + "Server": "^Kestrel" + }, + "icon": "kestrel.svg", + "implies": "Microsoft ASP.NET", + "website": "https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel" }, - "Make-Sense": { + "KeyCDN": { "cats": [ - 68 + 31 ], - "icon": "Make-Sense.png", - "scripts": "mk-sense\\.com/aweb\\?license", - "website": "https://mk-sense.com/" + "headers": { + "Server": "^keycdn-engine$" + }, + "icon": "KeyCDN.png", + "description": "KeyCDN is a content delivery network (CDN).", + "website": "http://www.keycdn.com" }, - "MakeShopKorea": { + "Kibana": { "cats": [ - 6 + 29, + 25 ], - "icon": "MakeShopKorea.png", - "js": { - "Makeshop": "", - "MakeshopLogUniqueId": "" + "cpe": "cpe:/a:elasticsearch:kibana", + "description": "Kibana is an open-source data visualisation dashboard for Elasticsearch. It provides visualisation capabilities on top of the content indexed on an Elasticsearch cluster. Users can create bar, line and scatter plots, or pie charts and maps on top of large volumes of data.", + "headers": { + "kbn-name": "kibana", + "kbn-version": "^([\\d.]+)$\\;version:\\1" }, - "website": "https://www.makeshop.co.kr" + "html": "Kibana", + "icon": "kibana.svg", + "implies": "Node.js", + "url": "kibana#/dashboard/", + "website": "http://www.elastic.co/products/kibana" }, - "Mambo": { + "KineticJS": { "cats": [ - 1 + 25 ], - "excludes": "Joomla", - "icon": "Mambo.png", - "meta": { - "generator": "Mambo" + "icon": "KineticJS.png", + "js": { + "Kinetic": "", + "Kinetic.version": "^(.+)$\\;version:\\1" }, - "website": "http://mambo-foundation.org" + "scripts": "kinetic(?:-v?([\\d.]+))?(?:\\.min)?\\.js\\;version:\\1", + "website": "https://github.com/ericdrowell/KineticJS/" }, - "MantisBT": { + "Kinsta": { "cats": [ - 13 + 62 ], - "cpe": "cpe:/a:mantisbt:mantisbt", - "html": "]+ alt=\"Powered by Mantis Bugtracker", - "icon": "MantisBT.png", - "implies": "PHP", - "website": "http://www.mantisbt.org" + "headers": { + "x-kinsta-cache": "" + }, + "icon": "kinsta.svg", + "implies": "WordPress", + "website": "https://kinsta.com" }, - "ManyContacts": { + "Klarna Checkout": { "cats": [ + 41, + 6, 5 ], - "icon": "ManyContacts.png", - "scripts": "\\/assets\\/js\\/manycontacts\\.min\\.js", - "website": "http://www.manycontacts.com" - }, - "MariaDB": { - "cats": [ - 34 - ], - "cpe": "cpe:/a:mariadb_project:mariadb", - "icon": "mariadb.svg", - "website": "https://mariadb.org" + "description": "Klarna Checkout is a complete payment solution where Klarna handles a store's entire checkout.", + "icon": "Klarna.svg", + "js": { + "_klarnaCheckout": "" + }, + "website": "https://www.klarna.com/international/" }, - "Marionette.js": { + "Knockout.js": { "cats": [ 12 ], - "icon": "Marionette.js.svg", - "implies": [ - "Underscore.js", - "Backbone.js" - ], + "icon": "Knockout.js.png", "js": { - "Marionette": "", - "Marionette.VERSION": "^(.+)$\\;version:\\1" + "ko.version": "^(.+)$\\;version:\\1" }, - "scripts": "backbone\\.marionette.*\\.js", - "website": "https://marionettejs.com" + "website": "http://knockoutjs.com" }, - "Marked": { + "Koa": { "cats": [ - 59 + 18, + 22 ], - "cpe": "cpe:/a:marked_project:marked", - "icon": "marked.svg", - "js": { - "marked": "" + "headers": { + "X-Powered-By": "^koa$" }, - "scripts": "/marked(?:\\.min)?\\.js", - "website": "https://marked.js.org" + "icon": "Koa.png", + "implies": "Node.js", + "website": "http://koajs.com" }, - "Marketo": { + "Koala Framework": { "cats": [ - 32 + 1, + 18 ], - "icon": "Marketo.png", - "js": { - "Munchkin": "" + "html": "", + "icon": "Lightspeed.svg", + "scripts": "http://assets\\.webshopapp\\.com", + "url": "seoshop.webshopapp.com", + "website": "http://www.lightspeedhq.com/products/ecommerce/" }, - "Methode": { + "LinkSmart": { "cats": [ - 1 + 36 ], - "html": "", - "icon": "Methode.png", - "meta": { - "eomportal-id": "\\d+", - "eomportal-instanceid": "\\d+", - "eomportal-lastUpdate": "", - "eomportal-loid": "[\\d.]+", - "eomportal-uuid": "[a-f\\d]+" + "icon": "LinkSmart.png", + "js": { + "LS_JSON": "", + "LinkSmart": "", + "_mb_site_guid": "" }, - "website": "https://www.eidosmedia.com/" + "scripts": "^https?://cdn\\.linksmart\\.com/linksmart_([\\d.]+?)(?:\\.min)?\\.js\\;version:\\1", + "website": "http://linksmart.com" }, - "Metomic": { + "Linkedin": { "cats": [ - 67 - ], - "icon": "metomic.png", - "scripts": [ - "metomic\\.js" + 5 ], - "website": "https://metomic.io" + "description": "LinkedIn is the world's largest professional networking platform.", + "icon": "Linkedin.svg", + "scripts": "//platform\\.linkedin\\.com/in\\.js", + "website": "http://linkedin.com" }, - "Microsoft ASP.NET": { + "Liquid Web": { "cats": [ - 18 + 62 ], - "cookies": { - "ASP.NET_SessionId": "", - "ASPSESSION": "" - }, - "cpe": "cpe:/a:microsoft:asp.net", "headers": { - "X-AspNet-Version": "(.+)\\;version:\\1", - "X-Powered-By": "^ASP\\.NET" + "x-lw-cache": "" }, - "html": "]+name=\"__VIEWSTATE", - "icon": "Microsoft ASP.NET.png", - "implies": "IIS\\;confidence:50", - "url": "\\.aspx?(?:$|\\?)", - "website": "https://www.asp.net" + "icon": "liquidweb.svg", + "website": "https://www.liquidweb.com" }, - "Microsoft Excel": { + "List.js": { "cats": [ - 20 + 59 ], - "cpe": "cpe:/a:microsoft:excel", - "html": "(?:]*xmlns:w=\"urn:schemas-microsoft-com:office:excel\"||
]*x:publishsource=\"?Excel\"?)", - "icon": "Microsoft Excel.svg", - "meta": { - "ProgId": "^Excel\\.", - "generator": "Microsoft Excel( [\\d.]+)?\\;version:\\1" + "icon": "List.js.png", + "js": { + "List": "" }, - "website": "https://office.microsoft.com/excel" + "scripts": "^list\\.(?:min\\.)?js$", + "website": "http://listjs.com" }, - "Microsoft HTTPAPI": { + "LiteSpeed": { "cats": [ 22 ], + "cpe": "cpe:/a:litespeedtech:litespeed_web_server", + "description": "LiteSpeed is a high-scalability web server.", "headers": { - "Server": "Microsoft-HTTPAPI(?:/([\\d.]+))?\\;version:\\1" + "Server": "^LiteSpeed$" }, - "icon": "Microsoft.png", - "website": "http://microsoft.com" + "icon": "LiteSpeed.svg", + "website": "http://litespeedtech.com" }, - "Microsoft PowerPoint": { + "Litespeed Cache": { "cats": [ - 20 + 23 ], - "cpe": "cpe:/a:microsoft:powerpoint", - "html": "(?:]*xmlns:w=\"urn:schemas-microsoft-com:office:powerpoint\"||[^<]+[^!]+\\d+(?:[^!]+([\\d.]+))?)\\;version:\\1", - "icon": "Microsoft PowerPoint.svg", - "meta": { - "ProgId": "^PowerPoint\\.", - "generator": "Microsoft PowerPoint ( [\\d.]+)?\\;version:\\1" + "headers": { + "x-litespeed-cache": "" }, - "website": "https://office.microsoft.com/powerpoint" + "icon": "litespeed-cache.png", + "implies": "WordPress", + "description": "LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.", + "website": "https://wordpress.org/plugins/litespeed-cache/" }, - "Microsoft Publisher": { + "Lithium": { "cats": [ - 20 + 1 ], - "cpe": "cpe:/a:microsoft:publisher", - "html": "(?:]*xmlns:w=\"urn:schemas-microsoft-com:office:publisher\"|", + "", + "]{1,512}\\bwire:", + "icon": "Livewire.png", + "implies": "Laravel", "js": { - "mixpanel": "" + "livewire": "" }, - "scripts": "api\\.mixpanel\\.com/track", - "description": "Mixpanel provides a business analytics service. It tracks user interactions with web and mobile applications and provides tools for targeted communication with them. Its toolset contains in-app A/B tests and user survey forms.", - "website": "https://mixpanel.com" + "scripts": "livewire(?:\\.min)?\\.js", + "website": "https://laravel-livewire.com" }, - "MkDocs": { + "LocalFocus": { "cats": [ - 4 + 61 ], - "icon": "mkdocs.png", - "meta": { - "generator": "^mkdocs-([\\d.]+)\\;version:\\1" - }, - "website": "http://www.mkdocs.org/" + "html": "]+\\blocalfocus\\b", + "icon": "LocalFocus.png", + "implies": [ + "Angular", + "D3" + ], + "website": "https://www.localfocus.nl/en/" + }, + "LocomotiveCMS": { + "cats": [ + 1 + ], + "html": "]*/sites/[a-z\\d]{24}/theme/stylesheets", + "icon": "LocomotiveCMS.png", + "implies": [ + "Ruby on Rails", + "MongoDB" + ], + "website": "https://www.locomotivecms.com" }, - "MobX": { + "Lodash": { "cats": [ 59 ], - "icon": "MobX.svg", + "cpe": "cpe:/a:lodash:lodash", + "description": "Lodash is a JavaScript library which provides utility functions for common programming tasks using the functional programming paradigm.", + "excludes": "Underscore.js", + "icon": "Lo-dash.png", "js": { - "__mobxGlobal": "", - "__mobxGlobals": "", - "__mobxInstanceCount": "" + "_.VERSION": "^(.+)$\\;confidence:0\\;version:\\1", + "_.differenceBy": "", + "_.templateSettings.imports._.templateSettings.imports._.VERSION": "^(.+)$\\;version:\\1" }, - "scripts": "(?:/([\\d\\.]+))?/mobx(?:\\.[a-z]+){0,2}\\.js(?:$|\\?)\\;version:\\1", - "website": "https://mobx.js.org" + "scripts": "lodash.*\\.js", + "website": "http://www.lodash.com" }, - "Mobify": { + "Login with Amazon": { "cats": [ - 6, - 26 + 69 ], - "headers": { - "X-Powered-By": "Mobify" - }, - "icon": "Mobify.png", + "description": "Login with Amazon allows you use your Amazon user name and password to sign into and share information with participating third-party websites or apps.", + "icon": "Amazon.svg", "js": { - "Mobify": "" + "onAmazonLoginReady": "" }, - "scripts": [ - "//cdn\\.mobify\\.com/", - "//a\\.mobify\\.com/" - ], - "website": "https://www.mobify.com" + "website": "https://developer.amazon.com/apps-and-games/login-with-amazon" }, - "Mobirise": { + "Logitech Media Server": { "cats": [ - 51 - ], - "html": [ - "" + ], + "icon": "mailchimp.svg", + "scripts": [ + "s3\\.amazonaws\\.com/downloads\\.mailchimp\\.com/js/mc-validate\\.js", + "cdn-images\\.mailchimp\\.com/[^>]*\\.css" + ], + "website": "http://mailchimp.com" }, - "Monkey HTTP Server": { + "Make-Sense": { "cats": [ - 22 + 68 ], - "headers": { - "Server": "Monkey/?([\\d.]+)?\\;version:\\1" - }, - "icon": "Monkey HTTP Server.png", - "website": "http://monkey-project.com" + "icon": "Make-Sense.png", + "scripts": "mk-sense\\.com/aweb\\?license", + "website": "https://mk-sense.com/" }, - "Mono": { + "MakeShopKorea": { "cats": [ - 18 + 6 ], - "cpe": "cpe:/a:mono:mono", - "headers": { - "X-Powered-By": "Mono" + "icon": "MakeShopKorea.png", + "js": { + "Makeshop": "", + "MakeshopLogUniqueId": "" }, - "icon": "Mono.png", - "website": "http://mono-project.com" + "website": "https://www.makeshop.co.kr" }, - "Mono.net": { + "Mambo": { "cats": [ 1 ], - "icon": "Mono.net.png", - "implies": "Matomo Analytics", - "js": { - "_monoTracker": "" + "excludes": "Joomla", + "icon": "Mambo.png", + "meta": { + "generator": "Mambo" }, - "scripts": "monotracker(?:\\.min)?\\.js", - "website": "https://www.mono.net/en" + "website": "http://mambo-foundation.org" }, - "MooTools": { + "MantisBT": { "cats": [ - 12 + 13 ], - "icon": "MooTools.png", - "js": { - "MooTools": "", - "MooTools.version": "^(.+)$\\;version:\\1" - }, - "scripts": "mootools.*\\.js", - "website": "https://mootools.net" + "cpe": "cpe:/a:mantisbt:mantisbt", + "html": "]+ alt=\"Powered by Mantis Bugtracker", + "icon": "MantisBT.png", + "implies": "PHP", + "website": "http://www.mantisbt.org" }, - "Moodle": { + "ManyContacts": { "cats": [ - 21 + 5 ], - "cookies": { - "MOODLEID_": "", - "MoodleSession": "" - }, - "cpe": "cpe:/a:moodle:moodle", - "html": "]+moodlelogo", - "icon": "Moodle.png", - "implies": "PHP", - "js": { - "M.core": "", - "Y.Moodle": "" - }, - "meta": { - "keywords": "^moodle" - }, - "website": "http://moodle.org" + "icon": "ManyContacts.png", + "scripts": "\\/assets\\/js\\/manycontacts\\.min\\.js", + "website": "http://www.manycontacts.com" }, - "Moon": { + "MariaDB": { "cats": [ - 12 + 34 ], - "icon": "moon.svg", - "scripts": "/moon(?:\\.min)?\\.js$", - "website": "https://kbrsh.github.io/moon/" + "cpe": "cpe:/a:mariadb_project:mariadb", + "description": "MariaDB is an open-source relational database management system compatible with MySQL.", + "icon": "mariadb.svg", + "website": "https://mariadb.org" }, - "MotoCMS": { + "Marionette.js": { "cats": [ - 1 + 12 ], - "html": "]*href=\"[^>]*\\/mt-content\\/[^>]*\\.css", - "icon": "MotoCMS.svg", + "description": "Marionette is a composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications. It is a collection of common design and implementation patterns found in applications.", + "icon": "Marionette.js.svg", "implies": [ - "PHP", - "AngularJS", - "jQuery" + "Underscore.js", + "Backbone.js" ], - "scripts": "/mt-includes/js/website(?:assets)?\\.(?:min)?\\.js", - "website": "http://motocms.com" + "js": { + "Marionette": "", + "Marionette.VERSION": "^(.+)$\\;version:\\1" + }, + "scripts": "backbone\\.marionette.*\\.js", + "website": "https://marionettejs.com" }, - "Mouse Flow": { + "Marked": { "cats": [ - 10 + 59 ], - "icon": "mouseflow.png", + "cpe": "cpe:/a:marked_project:marked", + "icon": "marked.svg", "js": { - "_mfq": "" + "marked": "" }, - "scripts": [ - "cdn\\.mouseflow\\.com" - ], - "website": "https://mouseflow.com/" + "scripts": "/marked(?:\\.min)?\\.js", + "website": "https://marked.js.org" }, - "Movable Type": { + "Marketo": { "cats": [ - 1 + 32, + 61 ], - "cpe": "cpe:/a:sixapart:movable_type", - "icon": "Movable Type.png", - "meta": { - "generator": "Movable Type" + "icon": "Marketo.png", + "js": { + "Munchkin": "" }, - "website": "http://movabletype.org" + "scripts": "munchkin\\.marketo\\.net/munchkin\\.js", + "description": "Marketo develops and sells marketing automation software for account-based marketing and other marketing services and products including SEO and content creation.", "website": "https://www.marketo.com" }, - "Mozard Suite": { + "Mastercard": { "cats": [ - 1 + 41 ], - "icon": "Mozard Suite.png", - "meta": { - "author": "Mozard" - }, - "url": "/mozard/!suite", - "website": "http://mozard.nl" + "html": "<[^>]+aria-labelledby=\"pi-mastercard", + "icon": "Mastercard.svg", + "description": "MasterCard facilitates electronic funds transfers throughout the world, most commonly through branded credit cards, debit cards and prepaid cards.", + "website": "https://www.mastercard.com" }, - "Mura CMS": { + "MasterkinG32 Framework": { "cats": [ - 1, - 11 + 18 ], - "icon": "Mura CMS.png", - "implies": "Adobe ColdFusion", + "description": "MasterkinG32 framework.", + "headers": { + "X-Powered-Framework": "MasterkinG(?:)" + }, + "icon": "Masterking32.png", "meta": { - "generator": "Mura CMS ([\\d]+)\\;version:\\1" + "generator": "^MasterkinG(?:)" }, - "website": "http://www.getmura.com" + "website": "https://masterking32.com" }, - "Mustache": { + "Material Design Lite": { "cats": [ - 12 + 66 ], - "icon": "Mustache.png", + "html": "]* href=\"[^\"]*material(?:\\.[\\w]+-[\\w]+)?(?:\\.min)?\\.css", + "icon": "Material Design Lite.png", "js": { - "Mustache.version": "^(.+)$\\;version:\\1" + "MaterialIconToggle": "" }, - "scripts": "mustache(?:\\.min)?\\.js", - "website": "https://mustache.github.io" + "scripts": "(?:/([\\d.]+))?/material(?:\\.min)?\\.js\\;version:\\1", + "description": "Material Design Lite is a library of components for web developers.", + "website": "https://getmdl.io" }, - "My Food Link": { + "Materialize CSS": { "cats": [ - 6 - ], - "html": [ - "