Build v6.3.0

main
Elbert Alias 4 years ago
parent 44563ed178
commit f7f1ba5d7e

@ -16,7 +16,7 @@
},
"scripts": {
"link": "node ./bin/link.js",
"lint": "eslint src/**/*.js",
"lint": "eslint --fix src/**/*.js",
"validate": "yarn run lint && jsonlint -qV ./schema.json ./src/apps.json && node ./bin/validate.js",
"convert": "cd ./src/drivers/webextension/images/icons ; cp *.svg converted ; cd converted ; convert-svg-to-png *.svg --width 32 --height 32 ; rm *.svg",
"prettify": "jsonlint -si --trim-trailing-commas --enforce-double-quotes ./src/apps.json",

@ -322,21 +322,21 @@
10,
61
],
"icon": "Adobe Analytics.svg",
"js": {
"s_c_il.0._c": "s_c",
"s_c_il.1._c": "s_c",
"s_c_il.2._c": "s_c",
"s_c_il.3._c": "s_c",
"s_c_il.4._c": "s_c",
"s_c_il.5._c": "s_c",
"s_c_il.0.constructor.name": "AppMeasurement",
"s_c_il.1._c": "s_c",
"s_c_il.1.constructor.name": "AppMeasurement",
"s_c_il.2._c": "s_c",
"s_c_il.2.constructor.name": "AppMeasurement",
"s_c_il.3._c": "s_c",
"s_c_il.3.constructor.name": "AppMeasurement",
"s_c_il.4._c": "s_c",
"s_c_il.4.constructor.name": "AppMeasurement",
"s_c_il.5._c": "s_c",
"s_c_il.5.constructor.name": "AppMeasurement"
},
"icon": "Adobe Analytics.svg",
"website": "https://www.adobe.com/analytics/adobe-analytics.html"
},
"Adobe ColdFusion": {
@ -377,20 +377,20 @@
"<div[^>]+data-component-path=\"[^\"+]jcr:",
"<div class=\"[^\"]*aem-Grid"
],
"icon": "Adobe Experience Manager.svg",
"icon": "Adobe.svg",
"implies": "Java",
"script": [
"/etc/designs/",
"/etc/clientlibs/",
"/etc\\.clientlibs/"
],
"icon": "Adobe.svg",
"website": "https://www.adobe.com/marketing/experience-manager.html"
},
"Adobe Experience Platform Identity Service": {
"cats": [
61
],
"icon": "Adobe.svg",
"js": {
"s_c_il.0._c": "Visitor",
"s_c_il.1._c": "Visitor",
@ -399,7 +399,6 @@
"s_c_il.4._c": "Visitor",
"s_c_il.5._c": "Visitor"
},
"icon": "Adobe.svg",
"website": "https://docs.adobe.com/content/help/en/id-service/using/home.html"
},
"Adobe GoLive": {
@ -437,11 +436,11 @@
32,
61
],
"icon": "Adobe.svg",
"js": {
"adobe.target": "",
"adobe.target.VERSION": "^(.+)$\\;version:\\1"
},
"icon": "Adobe.svg",
"website": "https://www.adobe.com/marketing/target.html"
},
"AdonisJS": {
@ -1650,7 +1649,7 @@
"meta": {
"generator": "^Blogger$"
},
"url": "^https?://[^/]+\\.(blogspot|blogger)\\.com",
"url": "^https?://[^/]+\\.(?:blogspot|blogger)\\.com",
"website": "http://www.blogger.com"
},
"Bloomreach": {
@ -3373,19 +3372,6 @@
"script": "googletagservices\\.com/tag/js/gpt(?:_mobile)?\\.js",
"website": "http://www.google.com/dfp"
},
"Duopana": {
"cats": [
1,
11,
51,
53,
61
],
"html": "(?:<!-- \/*BeraCode script)",
"icon": "Duopana.svg",
"script": "\\*berajs.beracode.com\\*",
"website": "https://duopana.com/"
},
"DovetailWRP": {
"cats": [
1
@ -3466,6 +3452,19 @@
},
"website": "https://www.duda.co/website-builder"
},
"Duopana": {
"cats": [
1,
11,
51,
53,
61
],
"html": "(?:<!-- /*BeraCode script)",
"icon": "Duopana.svg",
"script": "\\*berajs.beracode.com\\*",
"website": "https://duopana.com/"
},
"Dynamicweb": {
"cats": [
1,
@ -3486,13 +3485,13 @@
"cats": [
10
],
"cookies": {
"dtCookie1": ""
},
"icon": "Dynatrace.png",
"js": {
"dtrum": ""
},
"cookies": {
"dtCookie1": ""
},
"website": "https://www.dynatrace.com"
},
"EC-CUBE": {
@ -3944,16 +3943,6 @@
"script": "//connect\\.facebook\\.net/[^/]*/[a-z]*\\.js",
"website": "http://facebook.com"
},
"Login with Amazon": {
"cats": [
69
],
"icon": "Amazon.svg",
"js": {
"onAmazonLoginReady": ""
},
"website": "https://developer.amazon.com/apps-and-games/login-with-amazon"
},
"Facebook Sign-in": {
"cats": [
69
@ -6894,6 +6883,16 @@
"script": "lodash.*\\.js",
"website": "http://www.lodash.com"
},
"Login with Amazon": {
"cats": [
69
],
"icon": "Amazon.svg",
"js": {
"onAmazonLoginReady": ""
},
"website": "https://developer.amazon.com/apps-and-games/login-with-amazon"
},
"Logitech Media Server": {
"cats": [
22,
@ -10451,11 +10450,11 @@
"cats": [
19
],
"icon": "Scaleway.png",
"website": "https://www.scaleway.com/",
"html": [
"scw.cloud"
]
],
"icon": "Scaleway.png",
"website": "https://www.scaleway.com/"
},
"Scenari": {
"cats": [
@ -11057,6 +11056,22 @@
},
"website": "http://www.seneca.nl/pub/Smartsite/Smartsite-Smartsite-iXperion"
},
"Smartstore": {
"cats": [
1,
6
],
"cookies": {
"SMARTSTORE.VISITOR": ""
},
"html": "<!--Powered by Smartstore - https://www\\.smartstore\\.com-->",
"icon": "Smartstore.png",
"implies": "Microsoft ASP.NET",
"meta": {
"generator": "^Smartstore (.+)$\\;version:\\1"
},
"website": "https://www.smartstore.com"
},
"Smartstore biz": {
"cats": [
6
@ -11064,40 +11079,23 @@
"icon": "Smartstore.biz.png",
"script": "smjslib\\.js",
"website": "http://smartstore.com"
}
,
"Smartstore.NET": {
"cats": [
1,
6
],
"cookies": {
"SMARTSTORE.VISITOR": ""
},
"html": "<!--Powered by SmartStore\\.NET - https://www\\.smartstore\\.com-->",
"icon": "smartstore.png",
"implies": "Microsoft ASP.NET",
"meta": {
"generator": "^SmartStore.NET (.+)$\\;version:\\1"
},
"website": "https://www.smartstore.com"
},
"Smartstore": {
"cats": [
1,
6
],
"cookies": {
},
"Smartstore.NET": {
"cats": [
1,
6
],
"cookies": {
"SMARTSTORE.VISITOR": ""
},
"html": "<!--Powered by Smartstore - https://www\\.smartstore\\.com-->",
"icon": "Smartstore.png",
"implies": "Microsoft ASP.NET",
"meta": {
"generator": "^Smartstore (.+)$\\;version:\\1"
},
"website": "https://www.smartstore.com"
},
},
"html": "<!--Powered by SmartStore\\.NET - https://www\\.smartstore\\.com-->",
"icon": "smartstore.png",
"implies": "Microsoft ASP.NET",
"meta": {
"generator": "^SmartStore.NET (.+)$\\;version:\\1"
},
"website": "https://www.smartstore.com"
},
"Snap": {
"cats": [
18,
@ -11122,9 +11120,9 @@
"website": "http://snapsvg.io"
},
"Snipcart": {
"cats": [6],
"website": "https://snipcart.com/",
"icon": "Snipcart.png",
"cats": [
6
],
"cookies": {
"snipcart-cart": ""
},
@ -11132,7 +11130,9 @@
"<link [^>]*href=\".*snipcart\\.css\"",
"<div [^>]*id=\".*snipcart.*\""
],
"script": "https://cdn\\.snipcart\\.com/themes/v([\\w.]+)/default/snipcart\\.js\\;version:\\1"
"icon": "Snipcart.png",
"script": "https://cdn\\.snipcart\\.com/themes/v([\\w.]+)/default/snipcart\\.js\\;version:\\1",
"website": "https://snipcart.com/"
},
"Snoobi": {
"cats": [
@ -14336,6 +14336,17 @@
"script": "https://hcaptcha.com/([\\d]+?)/api.js\\;version:\\1",
"website": "https://www.hcaptcha.com/"
},
"hantana": {
"cats": [
10
],
"icon": "hantana.png",
"js": {
"Hantana": ""
},
"script": "//hantana\\.org/widget",
"website": "https://hantana.org/"
},
"iEXExchanger": {
"cats": [
1
@ -15337,17 +15348,6 @@
"generator": "xt:Commerce"
},
"website": "https://www.xt-commerce.com"
},
"hantana": {
"cats": [
10
],
"icon": "hantana.png",
"js": {
"Hantana": ""
},
"script": "//hantana\\.org/widget",
"website": "https://hantana.org/"
}
},
"categories": {
@ -15620,4 +15620,4 @@
"priority": 6
}
}
}
}

@ -19,7 +19,7 @@ const aliases = {
m: 'maxUrls',
P: 'pretty',
r: 'recursive',
w: 'maxWait'
w: 'maxWait',
}
while (true) {
@ -76,7 +76,7 @@ Options:
process.exit(1)
}
;(async function() {
;(async function () {
const wappalyzer = await new Wappalyzer(options)
try {

@ -13,7 +13,7 @@
"software"
],
"homepage": "https://www.wappalyzer.com",
"version": "6.2.6",
"version": "6.3.0",
"author": "Wappalyzer",
"license": "MIT",
"repository": {
@ -37,4 +37,4 @@
"dependencies": {
"puppeteer": "^5.2.1"
}
}
}

@ -70,7 +70,7 @@ const Content = {
Content.driver('onContentLoad', [
location.href,
{ html, scripts, meta },
language
language,
])
Content.onGetTechnologies(await Content.driver('getTechnologies'))
@ -85,7 +85,7 @@ const Content = {
{
source: 'content.js',
func,
args: args ? (Array.isArray(args) ? args : [args]) : []
args: args ? (Array.isArray(args) ? args : [args]) : [],
},
(response) => {
chrome.runtime.lastError
@ -115,7 +115,7 @@ const Content = {
chrome.runtime.sendMessage({
source: 'content.js',
func: 'analyzeJs',
args: [location.href.split('#')[0], data.wappalyzer.js]
args: [location.href.split('#')[0], data.wappalyzer.js],
})
script.remove()
@ -127,15 +127,15 @@ const Content = {
wappalyzer: {
technologies: technologies
.filter(({ js }) => Object.keys(js).length)
.map(({ name, js }) => ({ name, chains: Object.keys(js) }))
}
.map(({ name, js }) => ({ name, chains: Object.keys(js) })),
},
})
}
script.setAttribute('src', chrome.extension.getURL('js/inject.js'))
document.body.appendChild(script)
}
},
}
if (/complete|interactive|loaded/.test(document.readyState)) {

@ -7,7 +7,7 @@ const {
setCategories,
analyze,
analyzeManyToMany,
resolve
resolve,
} = Wappalyzer
const { agent, promisify, getOption, setOption, open } = Utils
@ -34,25 +34,25 @@ const Driver = {
({
technology: name,
pattern: { regex, confidence },
version
version,
}) => ({
technology: Wappalyzer.technologies.find(
({ name: _name }) => name === _name
),
pattern: {
regex: new RegExp(regex, 'i'),
confidence
confidence,
},
version
version,
})
)
}
),
},
}),
{}
),
tabs: {},
robots: await getOption('robots', {}),
ads: await getOption('ads', [])
ads: await getOption('ads', []),
}
chrome.browserAction.setBadgeBackgroundColor({ color: '#6B39BD' }, () => {})
@ -126,7 +126,7 @@ const Driver = {
try {
return fetch(url, {
method: 'POST',
body: JSON.stringify(body)
body: JSON.stringify(body),
})
} catch (error) {
throw new Error(error.message || error.toString())
@ -194,7 +194,7 @@ const Driver = {
try {
const [tab] = await promisify(chrome.tabs, 'query', {
url: [request.url]
url: [request.url],
})
if (tab) {
@ -233,12 +233,12 @@ const Driver = {
items.cookies = (
await promisify(chrome.cookies, 'getAll', {
domain: `.${hostname}`
domain: `.${hostname}`,
})
).reduce(
(cookies, { name, value }) => ({
...cookies,
[name]: [value]
[name]: [value],
}),
{}
)
@ -288,9 +288,9 @@ const Driver = {
...(Driver.cache.hostnames[hostname] || {
url: `${protocol}//${hostname}`,
detections: [],
hits: incrementHits ? 0 : 1
hits: incrementHits ? 0 : 1,
}),
dateTime: Date.now()
dateTime: Date.now(),
})
// Remove duplicates
@ -336,17 +336,17 @@ const Driver = {
({
technology: { name: technology },
pattern: { regex, confidence },
version
version,
}) => ({
technology,
pattern: {
regex: regex.source,
confidence
confidence,
},
version
version,
})
)
}
),
},
}),
{}
)
@ -402,7 +402,9 @@ const Driver = {
{
tabId,
text:
badge && technologies.length ? technologies.length.toString() : ''
badge && technologies.length
? technologies.length.toString()
: '',
},
() => {}
)
@ -416,7 +418,7 @@ const Driver = {
? `converted/${icon.replace(/\.svg$/, '.png')}`
: icon
}`
)
),
},
() => {}
)
@ -430,7 +432,7 @@ const Driver = {
async getDetections() {
const [{ id, url }] = await promisify(chrome.tabs, 'query', {
active: true,
currentWindow: true
currentWindow: true,
})
if (await Driver.isDisabledDomain(url)) {
@ -462,12 +464,13 @@ const Driver = {
try {
Driver.cache.robots[hostname] = await Promise.race([
// eslint-disable-next-line no-async-promise-executor
new Promise(async (resolve) => {
const response = await fetch(
`http${secure ? 's' : ''}://${hostname}/robots.txt`,
{
redirect: 'follow',
mode: 'no-cors'
mode: 'no-cors',
}
)
@ -497,7 +500,7 @@ const Driver = {
}, [])
)
}),
new Promise((resolve) => setTimeout(() => resolve(''), 5000))
new Promise((resolve) => setTimeout(() => resolve(''), 5000)),
])
Driver.cache.robots = Object.keys(Driver.cache.robots)
@ -505,7 +508,7 @@ const Driver = {
.reduce(
(cache, hostname) => ({
...cache,
[hostname]: Driver.cache.robots[hostname]
[hostname]: Driver.cache.robots[hostname],
}),
{}
)
@ -578,7 +581,7 @@ const Driver = {
if (confidence === 100) {
technologies[name] = {
version,
hits
hits,
}
}
@ -587,8 +590,8 @@ const Driver = {
{}
),
meta: {
language
}
language,
},
}
}
@ -613,7 +616,7 @@ const Driver = {
await setOption('ads', (Driver.cache.ads = []))
}
}
}
},
}
Driver.init()

@ -1,6 +1,6 @@
/* eslint-env browser */
;(function() {
;(function () {
try {
const onMessage = ({ data }) => {
if (!data.wappalyzer) {
@ -21,7 +21,7 @@
(value, method) =>
value &&
value instanceof Object &&
value.hasOwnProperty(method)
Object.prototype.hasOwnProperty.call(value, method)
? value[method]
: undefined,
window
@ -34,14 +34,14 @@
value:
typeof value === 'string' || typeof value === 'number'
? value
: !!value
: !!value,
})
}
})
return technologies
}, [])
}
}, []),
},
})
}

@ -21,12 +21,13 @@ const Options = {
['dynamicIcon', false],
['badge', true],
['tracking', true],
['themeMode', false]
['themeMode', false],
].map(async ([option, defaultValue]) => {
const el = document
.querySelector(
`[data-i18n="option${option.charAt(0).toUpperCase() +
option.slice(1)}"]`
`[data-i18n="option${
option.charAt(0).toUpperCase() + option.slice(1)
}"]`
)
.parentNode.querySelector('input')
@ -50,7 +51,7 @@ const Options = {
{
source: 'content.js',
func,
args: args ? (Array.isArray(args) ? args : [args]) : []
args: args ? (Array.isArray(args) ? args : [args]) : [],
},
(response) => {
chrome.runtime.lastError
@ -59,7 +60,7 @@ const Options = {
}
)
})
}
},
}
if (/complete|interactive|loaded/.test(document.readyState)) {

@ -9,7 +9,7 @@ const {
getOption,
setOption,
promisify,
sendMessage
sendMessage,
} = Utils
function setDisabledDomain(enabled) {
@ -83,7 +83,7 @@ const Popup = {
// Alert
const tabs = await promisify(chrome.tabs, 'query', {
active: true,
currentWindow: true
currentWindow: true,
})
if (tabs && tabs.length) {
@ -168,7 +168,7 @@ const Popup = {
technology.categories.forEach((category) => {
categories[category.id] = categories[category.id] || {
...category,
technologies: []
technologies: [],
}
categories[category.id].technologies.push(technology)
@ -296,7 +296,7 @@ const Popup = {
)
i18n()
}
},
}
if (/complete|interactive|loaded/.test(document.readyState)) {

@ -60,7 +60,7 @@ const Utils = {
async setOption(name, value) {
try {
await Utils.promisify(chrome.storage.local, 'set', {
[name]: value
[name]: value,
})
} catch (error) {
// eslint-disable-next-line no-console
@ -83,7 +83,7 @@ const Utils = {
{
source,
func,
args: args ? (Array.isArray(args) ? args : [args]) : []
args: args ? (Array.isArray(args) ? args : [args]) : [],
},
(response) => {
chrome.runtime.lastError
@ -92,5 +92,5 @@ const Utils = {
}
)
})
}
},
}

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

@ -13,7 +13,7 @@
"software"
],
"homepage": "https://www.wappalyzer.com",
"version": "6.2.6",
"version": "6.3.0",
"author": "Wappalyzer",
"license": "MIT",
"repository": {
@ -27,4 +27,4 @@
"files": [
"wappalyzer.js"
]
}
}

@ -69,7 +69,7 @@ const Wappalyzer = {
({
technology: { name, slug, categories, icon, website, cpe },
confidence,
version
version,
}) => ({
name,
slug,
@ -78,7 +78,7 @@ const Wappalyzer = {
version,
icon,
website,
cpe
cpe,
})
)
},
@ -166,7 +166,7 @@ const Wappalyzer = {
resolved.push({
technology: implied,
confidence: Math.min(confidence, _confidence),
version: ''
version: '',
})
done = false
@ -197,7 +197,7 @@ const Wappalyzer = {
om(technology, 'scripts', scripts),
mm(technology, 'cookies', cookies),
mm(technology, 'meta', meta),
mm(technology, 'headers', headers)
mm(technology, 'headers', headers),
])
)
).filter((technology) => technology)
@ -230,7 +230,7 @@ const Wappalyzer = {
excludes,
icon,
website,
cpe
cpe,
} = data[name]
technologies.push({
@ -247,14 +247,14 @@ const Wappalyzer = {
js: transform(js, true),
implies: transform(implies).map(({ value, confidence }) => ({
name: value,
confidence
confidence,
})),
excludes: transform(excludes).map(({ value }) => ({
name: value
name: value,
})),
icon: icon || 'default.svg',
website: website || null,
cpe: cpe || null
cpe: cpe || null,
})
return technologies
@ -273,7 +273,7 @@ const Wappalyzer = {
categories.push({
id: parseInt(id, 10),
slug: Wappalyzer.slugify(category.name),
...category
...category,
})
return categories
@ -324,7 +324,7 @@ const Wappalyzer = {
value,
regex,
confidence: parseInt(confidence || 100, 10),
version: version || ''
version: version || '',
}
})
@ -346,7 +346,7 @@ const Wappalyzer = {
technologies.push({
technology,
pattern,
version: Wappalyzer.resolveVersion(pattern, value)
version: Wappalyzer.resolveVersion(pattern, value),
})
}
@ -369,7 +369,7 @@ const Wappalyzer = {
technologies.push({
technology,
pattern,
version: Wappalyzer.resolveVersion(pattern, value)
version: Wappalyzer.resolveVersion(pattern, value),
})
}
})
@ -395,7 +395,7 @@ const Wappalyzer = {
technologies.push({
technology,
pattern,
version: Wappalyzer.resolveVersion(pattern, value)
version: Wappalyzer.resolveVersion(pattern, value),
})
}
})
@ -403,7 +403,7 @@ const Wappalyzer = {
return technologies
}, [])
}
},
}
if (typeof module !== 'undefined') {