diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js
index 9404e727d..e9bb36a41 100644
--- a/src/drivers/npm/driver.js
+++ b/src/drivers/npm/driver.js
@@ -237,6 +237,7 @@ class Site {
this.pages = []
+ this.dnsChecked = false
this.dns = []
}
@@ -441,9 +442,9 @@ class Site {
})
)
)
- )
+ ).catch(() => [])
).jsonValue()
- )
+ ).catch(() => [])
// CSS
const css = await this.promiseTimeout(
@@ -472,9 +473,9 @@ class Site {
return css.join('\n')
}, this.options.htmlMaxRows)
- )
+ ).catch(() => '')
).jsonValue()
- )
+ ).catch(() => '')
// Script tags
const scripts = await this.promiseTimeout(
@@ -485,9 +486,9 @@ class Site {
.map(({ src }) => src)
.filter((src) => src)
)
- )
+ ).catch(() => [])
).jsonValue()
- )
+ ).catch(() => [])
// Meta tags
const meta = await this.promiseTimeout(
@@ -508,9 +509,9 @@ class Site {
{}
)
)
- )
+ ).catch(() => [])
).jsonValue()
- )
+ ).catch(() => [])
// JavaScript
const js = await this.promiseTimeout(
@@ -546,7 +547,7 @@ class Site {
.filter(({ js }) => Object.keys(js).length)
.map(({ name, js }) => ({ name, chains: Object.keys(js) }))
)
- )
+ ).catch(() => [])
// DOM
const dom = await this.promiseTimeout(
@@ -623,7 +624,7 @@ class Site {
.filter(({ dom }) => dom)
.map(({ name, dom }) => ({ name, dom }))
)
- )
+ ).catch(() => [])
// Cookies
const cookies = (await page.cookies()).reduce(
@@ -659,7 +660,9 @@ class Site {
}
// DNS
- if (!Object.keys(this.dns).length) {
+ if (!this.dnsChecked) {
+ this.dnsChecked = true
+
const records = {}
const resolve = (func, hostname) => {
return this.promiseTimeout(
@@ -670,7 +673,7 @@ class Site {
return []
})
- )
+ ).catch(() => [])
}
const domain = url.hostname.replace(/^www\./, '')
diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json
index 8570bdc1d..7038bb71e 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.5.32",
+ "version": "6.5.34",
"author": "Wappalyzer",
"license": "MIT",
"repository": {
diff --git a/src/drivers/npm/yarn.lock b/src/drivers/npm/yarn.lock
index 1ebd145e4..79e47b465 100644
--- a/src/drivers/npm/yarn.lock
+++ b/src/drivers/npm/yarn.lock
@@ -3,9 +3,9 @@
"@types/node@*":
- version "14.6.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499"
- integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==
+ version "14.14.41"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615"
+ integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==
"@types/yauzl@^2.9.1":
version "2.9.1"
@@ -20,19 +20,19 @@ agent-base@5:
integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base64-js@^1.0.2:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
- integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
-
-bl@^4.0.1:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489"
- integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+bl@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
+ integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
dependencies:
buffer "^5.5.0"
inherits "^2.0.4"
@@ -52,12 +52,12 @@ buffer-crc32@~0.2.3:
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
buffer@^5.2.1, buffer@^5.5.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786"
- integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
chownr@^1.1.1:
version "1.1.4"
@@ -70,16 +70,16 @@ concat-map@0.0.1:
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
debug@4, debug@^4.1.0, debug@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
- integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
dependencies:
- ms "^2.1.1"
+ ms "2.1.2"
-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==
+devtools-protocol@0.0.818844:
+ version "0.0.818844"
+ resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.818844.tgz#d1947278ec85b53e4c8ca598f607a28fa785ba9e"
+ integrity sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
@@ -151,10 +151,10 @@ https-proxy-agent@^4.0.0:
agent-base "5"
debug "4"
-ieee754@^1.1.4:
- version "1.1.13"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
- integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+ieee754@^1.1.13:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
inflight@^1.0.4:
version "1.0.6"
@@ -176,11 +176,6 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
-mime@^2.0.3:
- version "2.4.6"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
- integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==
-
minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -193,11 +188,16 @@ mkdirp-classic@^0.5.2:
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
-ms@^2.1.1:
+ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+node-fetch@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
+
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -265,15 +265,15 @@ pump@^3.0.0:
once "^1.3.1"
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==
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.5.0.tgz#331a7edd212ca06b4a556156435f58cbae08af00"
+ integrity sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg==
dependencies:
debug "^4.1.0"
- devtools-protocol "0.0.799653"
+ devtools-protocol "0.0.818844"
extract-zip "^2.0.0"
https-proxy-agent "^4.0.0"
- mime "^2.0.3"
+ node-fetch "^2.6.1"
pkg-dir "^4.2.0"
progress "^2.0.1"
proxy-from-env "^1.0.0"
@@ -311,21 +311,21 @@ string_decoder@^1.1.1:
safe-buffer "~5.2.0"
tar-fs@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5"
- integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
+ integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
dependencies:
chownr "^1.1.1"
mkdirp-classic "^0.5.2"
pump "^3.0.0"
- tar-stream "^2.0.0"
+ tar-stream "^2.1.4"
-tar-stream@^2.0.0:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41"
- integrity sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==
+tar-stream@^2.1.4:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
+ integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
dependencies:
- bl "^4.0.1"
+ bl "^4.0.3"
end-of-stream "^1.4.1"
fs-constants "^1.0.0"
inherits "^2.0.3"
@@ -355,9 +355,9 @@ wrappy@1:
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
ws@^7.2.3:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
- integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1"
+ integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==
yauzl@^2.10.0:
version "2.10.0"
diff --git a/src/drivers/webextension/images/icons/Ad Lightning.svg b/src/drivers/webextension/images/icons/Ad Lightning.svg
new file mode 100644
index 000000000..5f9d6e048
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Ad Lightning.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/drivers/webextension/images/icons/AdThrive.png b/src/drivers/webextension/images/icons/AdThrive.png
new file mode 100644
index 000000000..4906066d6
Binary files /dev/null and b/src/drivers/webextension/images/icons/AdThrive.png differ
diff --git a/src/drivers/webextension/images/icons/Arc.svg b/src/drivers/webextension/images/icons/Arc.svg
new file mode 100644
index 000000000..808891bb2
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Arc.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/drivers/webextension/images/icons/Booxi.svg b/src/drivers/webextension/images/icons/Booxi.svg
new file mode 100644
index 000000000..2c8978997
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Booxi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/drivers/webextension/images/icons/Broadstreet.png b/src/drivers/webextension/images/icons/Broadstreet.png
new file mode 100644
index 000000000..1886f44e8
Binary files /dev/null and b/src/drivers/webextension/images/icons/Broadstreet.png differ
diff --git a/src/drivers/webextension/images/icons/Bump.svg b/src/drivers/webextension/images/icons/Bump.svg
new file mode 100644
index 000000000..e9080268a
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Bump.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/drivers/webextension/images/icons/ConvertKit.svg b/src/drivers/webextension/images/icons/ConvertKit.svg
new file mode 100644
index 000000000..805bb767a
--- /dev/null
+++ b/src/drivers/webextension/images/icons/ConvertKit.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/drivers/webextension/images/icons/EX.CO.svg b/src/drivers/webextension/images/icons/EX.CO.svg
new file mode 100644
index 000000000..0b7c4272b
--- /dev/null
+++ b/src/drivers/webextension/images/icons/EX.CO.svg
@@ -0,0 +1,41 @@
+
diff --git a/src/drivers/webextension/images/icons/GumGum.png b/src/drivers/webextension/images/icons/GumGum.png
new file mode 100644
index 000000000..fd335cc82
Binary files /dev/null and b/src/drivers/webextension/images/icons/GumGum.png differ
diff --git a/src/drivers/webextension/images/icons/Index Exchange.svg b/src/drivers/webextension/images/icons/Index Exchange.svg
new file mode 100644
index 000000000..693e1c0f7
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Index Exchange.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/drivers/webextension/images/icons/JW Player.svg b/src/drivers/webextension/images/icons/JW Player.svg
new file mode 100644
index 000000000..7ab226bb1
--- /dev/null
+++ b/src/drivers/webextension/images/icons/JW Player.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/drivers/webextension/images/icons/Karma.svg b/src/drivers/webextension/images/icons/Karma.svg
new file mode 100644
index 000000000..9f3eb6751
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Karma.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/drivers/webextension/images/icons/LiveIntent.svg b/src/drivers/webextension/images/icons/LiveIntent.svg
new file mode 100644
index 000000000..26a90bda0
--- /dev/null
+++ b/src/drivers/webextension/images/icons/LiveIntent.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/drivers/webextension/images/icons/LiveRamp.svg b/src/drivers/webextension/images/icons/LiveRamp.svg
new file mode 100644
index 000000000..d337d25fa
--- /dev/null
+++ b/src/drivers/webextension/images/icons/LiveRamp.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/drivers/webextension/images/icons/Permutive.png b/src/drivers/webextension/images/icons/Permutive.png
new file mode 100644
index 000000000..ebe1a355c
Binary files /dev/null and b/src/drivers/webextension/images/icons/Permutive.png differ
diff --git a/src/drivers/webextension/images/icons/SharpSpring.png b/src/drivers/webextension/images/icons/SharpSpring.png
new file mode 100644
index 000000000..ded1fdea0
Binary files /dev/null and b/src/drivers/webextension/images/icons/SharpSpring.png differ
diff --git a/src/drivers/webextension/images/icons/Skimlinks.svg b/src/drivers/webextension/images/icons/Skimlinks.svg
new file mode 100644
index 000000000..b6d6a69bf
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Skimlinks.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/drivers/webextension/images/icons/SmugMug.svg b/src/drivers/webextension/images/icons/SmugMug.svg
new file mode 100644
index 000000000..b64457615
--- /dev/null
+++ b/src/drivers/webextension/images/icons/SmugMug.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/drivers/webextension/images/icons/Starhost.svg b/src/drivers/webextension/images/icons/Starhost.svg
new file mode 100644
index 000000000..d826cc5b8
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Starhost.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/drivers/webextension/images/icons/Teads.svg b/src/drivers/webextension/images/icons/Teads.svg
new file mode 100644
index 000000000..84cce6480
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Teads.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/drivers/webextension/images/icons/TikTok.svg b/src/drivers/webextension/images/icons/TikTok.svg
new file mode 100644
index 000000000..d285a50bc
--- /dev/null
+++ b/src/drivers/webextension/images/icons/TikTok.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/drivers/webextension/images/icons/draftjs.png b/src/drivers/webextension/images/icons/draftjs.png
new file mode 100644
index 000000000..60ddc1b2a
Binary files /dev/null and b/src/drivers/webextension/images/icons/draftjs.png differ
diff --git a/src/drivers/webextension/js/driver.js b/src/drivers/webextension/js/driver.js
index 73f6ebb3b..a5039df03 100644
--- a/src/drivers/webextension/js/driver.js
+++ b/src/drivers/webextension/js/driver.js
@@ -14,7 +14,7 @@ const { agent, promisify, getOption, setOption, open, globEscape } = Utils
const expiry = 1000 * 60 * 60 * 24
-const hostnameIgnoreList = /((local|dev(elop(ment)?)?|stag(e|ing)?|preprod|preview|test(ing)?|demo(shop)?|admin|cache)[.-]|localhost|wappalyzer|google|facebook|twitter|reddit|yahoo|wikipedia|amazon|youtube|\/admin|\.local|\.test|\.dev|^[0-9.]$)/
+const hostnameIgnoreList = /((local|dev(elop(ment)?)?|stag(e|ing)?|preprod|preview|test(ing)?|demo(shop)?|admin|cache)[.-]|localhost|wappalyzer|google|facebook|twitter|reddit|yahoo|wikipedia|amazon|youtube|\/admin|\.local|\.test|\.dev|\.netlify\.app|\.shopifypreview\.com|^[0-9.]+$)/
const xhrDebounce = []
diff --git a/src/drivers/webextension/manifest.json b/src/drivers/webextension/manifest.json
index 2d818dd74..3163f8d83 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.5.32",
+ "version": "6.5.34",
"default_locale": "en",
"manifest_version": 2,
"icons": {
diff --git a/src/package.json b/src/package.json
index 23f696380..ca97baaa0 100644
--- a/src/package.json
+++ b/src/package.json
@@ -13,7 +13,7 @@
"software"
],
"homepage": "https://www.wappalyzer.com/",
- "version": "6.5.32",
+ "version": "6.5.34",
"author": "Wappalyzer",
"license": "MIT",
"repository": {
diff --git a/src/technologies.json b/src/technologies.json
index 9bddd4e65..745901dc0 100644
--- a/src/technologies.json
+++ b/src/technologies.json
@@ -339,7 +339,7 @@
"4TellCart": "",
"4TellSession": ""
},
- "description": "4-Tell is an ecommerce software company for retailers with AI-powered personalization and recommendations products.",
+ "description": "4-Tell is an ecommerce software company for retailers with AI-powered personalisation and recommendations products.",
"icon": "4-Tell.png",
"js": {
"_4TellBoost": ""
@@ -399,7 +399,7 @@
"cats": [
74
],
- "description": "AB Tasty is a customer experience optimization company. AB Tasty offers AI-driven experimentation, personalisation, and product optimization platforms for user testing.",
+ "description": "AB Tasty is a customer experience optimisation company. AB Tasty offers AI-driven experimentation, personalisation, and product optimisation platforms for user testing.",
"icon": "AB Tasty.svg",
"js": {
"ABTasty": "",
@@ -705,6 +705,17 @@
"scripts": "adinfinity\\.com\\.au",
"website": "http://adinfinity.com.au"
},
+ "Ad Lightning": {
+ "cats": [
+ 36
+ ],
+ "description": "Ad Lightning is an programmatic ads monitoring and audit service.",
+ "icon": "Ad Lightning.svg",
+ "scripts": "\\.adlightning\\.com",
+ "saas": true,
+ "pricing": ["poa"],
+ "website": "https://www.adlightning.com"
+ },
"AdOcean": {
"cats": [
36
@@ -752,6 +763,20 @@
"scripts": "(?:a|s)\\.adroll\\.com",
"website": "http://adroll.com"
},
+ "AdThrive": {
+ "cats": [
+ 36
+ ],
+ "description": "AdThrive is an online advertising network aka ad provider for bloggers for blog monetisation.",
+ "icon": "AdThrive.png",
+ "js": {
+ "adthrive": "",
+ "adthriveVideosInjected": ""
+ },
+ "scripts": "ads\\.adthrive\\.com",
+ "saas": true,
+ "website": "https://www.adthrive.com"
+ },
"Adally": {
"cats": [
68
@@ -845,6 +870,20 @@
"pricing": ["payg"],
"website": "https://www.admitad.com"
},
+ "Broadstreet": {
+ "cats": [
+ 36
+ ],
+ "description": "Broadstreet is an ad manager that caters specifically to the needs of direct, digital ad sales.",
+ "icon": "Broadstreet.png",
+ "scripts": "cdn\\.broadstreetads\\.com",
+ "js": {
+ "broadstreet": ""
+ },
+ "saas": true,
+ "pricing": ["mid", "recurring"],
+ "website": "https://broadstreetads.com"
+ },
"Adnegah": {
"cats": [
36
@@ -1153,11 +1192,11 @@
"Afterpay": "",
"afterpay_product": ""
},
+ "saas": true,
"scripts": [
"portal\\.afterpay\\.com",
"static\\.afterpay\\.com"
],
- "saas": true,
"website": "https://www.afterpay.com/"
},
"Ahoy": {
@@ -1438,11 +1477,23 @@
"implies": "Amazon Web Services",
"website": "https://aws.amazon.com/elasticloadbalancing/"
},
+ "Amazon Advertising": {
+ "cats": [
+ 36
+ ],
+ "description": "Amazon Advertising (formerly AMS or Amazon Marketing Services) is a service that works in a similar way to pay-per-click ads on Google.",
+ "icon": "Amazon.svg",
+ "scripts": "\\.amazon-adsystem\\.com",
+ "xhr": "\\.amazon-adsystem\\.com",
+ "pricing": ["payg"],
+ "saas": true,
+ "website": "https://advertising.amazon.com"
+ },
"Amazon Associates": {
"cats": [
71
],
- "description": "The Amazon Associates Program helps content creators, publishers and bloggers monetize their traffic.",
+ "description": "Amazon Associates is an affiliate marketing program that allows website owners and bloggers to create links and earn referral fees when customers click through and buy products from Amazon.",
"dom": {
"a[href*='amazon.com']": {
"attributes": {
@@ -1455,9 +1506,10 @@
}
}
},
+ "scripts": "\\.associates-amazon\\.com",
"icon": "Amazon.svg",
"saas": true,
- "website": "https://affiliate-program.amazon.com.au/"
+ "website": "https://affiliate-program.amazon.com"
},
"Amazon Cloudfront": {
"cats": [
@@ -1533,10 +1585,10 @@
"enableAmazonPay": "",
"onAmazonPaymentsReady": ""
},
- "saas": true,
"pricing": [
"payg"
],
+ "saas": true,
"scripts": [
"/amazonpayments(?:\\.min)?\\.js",
"\\.payments-amazon\\.com/OffAmazonPayments"
@@ -1548,6 +1600,7 @@
"cats": [
19
],
+ "description": "Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface.",
"headers": {
"server": "^AmazonS3$"
},
@@ -1917,13 +1970,23 @@
36
],
"description": "AppNexus is a cloud-based software platform that enables and optimizes programmatic online advertising.",
- "html": "<(?:iframe|img)[^>]+adnxs\\.(?:net|com)",
"icon": "AppNexus.svg",
- "pricing": [
- "poa"
- ],
- "saas": true,
+ "dom": {
+ "iframe[src*='.adnxs.com']": {
+ "attributes": {
+ "src": ""
+ }
+ },
+ "img[src*='.adnxs.com']": {
+ "attributes": {
+ "src": ""
+ }
+ }
+ },
+ "xhr": "prebid\\.adnxs\\.com",
"scripts": "adnxs\\.(?:net|com)",
+ "saas": true,
+ "pricing": ["poa"],
"website": "http://appnexus.com"
},
"Appian": {
@@ -1975,6 +2038,23 @@
"scripts": "appleid\\.auth\\.js",
"website": "https://developer.apple.com/sign-in-with-apple/"
},
+ "Booxi": {
+ "cats": [
+ 72
+ ],
+ "description": "Booxi is a cloud-based appointment management platform for small to midsize businesses.",
+ "js": {
+ "booxi": "",
+ "booxiController": ""
+ },
+ "pricing": [
+ "low",
+ "recurring"
+ ],
+ "saas": true,
+ "icon": "Booxi.svg",
+ "website": "https://www.booxi.com"
+ },
"Appointy": {
"cats": [
72
@@ -2047,6 +2127,32 @@
"scripts": "arastta\\.js",
"website": "http://arastta.org"
},
+ "Arc": {
+ "cats": [
+ 31
+ ],
+ "description": "Arc is a peer-to-peer CDN that pays site owners for using it. Instead of expensive servers in distant datacenters, Arc's network is comprised of browsers.",
+ "dom": {
+ "#arc-widget": {
+ "attributes": {
+ "id": ""
+ }
+ }
+ },
+ "icon": "Arc.svg",
+ "js": {
+ "arc.p2pClient": "",
+ "arcWidgetJsonp": ""
+ },
+ "pricing": [
+ "low",
+ "recurring"
+ ],
+ "saas": true,
+ "scripts": "arc\\.io/widget\\.js",
+ "website": "https://arc.io",
+ "xhr": "\\.arc\\.io"
+ },
"Arc Publishing": {
"cats": [
1
@@ -2099,6 +2205,21 @@
"implies": "Artifactory",
"website": "http://jfrog.com/open-source/#os-arti"
},
+ "Starhost": {
+ "cats": [
+ 51,
+ 62
+ ],
+ "description": "Starhost provides a Platform-as-a-Service (PaaS) for website building, web hosting, and domain registration.",
+ "headers": {
+ "X-Starhost": "",
+ "Cache-Control": "Starhost"
+ },
+ "saas": true,
+ "pricing": ["low", "recurring"],
+ "icon": "Starhost.svg",
+ "website": "https://starhost.verbosec.com"
+ },
"ArvanCloud": {
"cats": [
31
@@ -2308,7 +2429,7 @@
"cats": [
19
],
- "description": "Auth0 provides authentication and authorization as a service.",
+ "description": "Auth0 provides authentication and authorisation as a service.",
"icon": "Auth0.png",
"scripts": [
"/auth0(?:-js)?/([\\d.]+)/auth0(?:.min)?\\.js\\;version:\\1",
@@ -2858,7 +2979,7 @@
"cdns\\.brsrvr\\.com/v([\\d.]+)\\;version:\\1",
"cdn\\.brcdn\\.com/v([\\d.]+)\\;version:\\1"
],
- "website": "https://developers.bloomreach.com/products/personalization/dev-studio"
+ "website": "https://developers.bloomreach.com/products/personalisation/dev-studio"
},
"Bluecore": {
"cats": [
@@ -2895,7 +3016,7 @@
"cats": [
76
],
- "description": "Blueknow is a ecommerce personalization software designed to serve enterprises, SMEs.",
+ "description": "Blueknow is a ecommerce personalisation software designed to serve enterprises, SMEs.",
"icon": "Blueknow.png",
"js": {
"Blueknow": "",
@@ -2965,6 +3086,28 @@
},
"website": "http://bolt.cm"
},
+ "Bolt Payments": {
+ "cats": [
+ 41
+ ],
+ "description": "Bolt powers a checkout experience designed to convert shoppers.",
+ "dom": {
+ "bolt-checkout-button": {
+ "text": ""
+ }
+ },
+ "icon": "Bolt.svg",
+ "js": {
+ "BoltCheckout": "",
+ "bolt_callbacks": ""
+ },
+ "pricing": [
+ "poa"
+ ],
+ "saas": true,
+ "website": "https://www.bolt.com/",
+ "xhr": "connect\\.bolt\\.com"
+ },
"Bonfire": {
"cats": [
18
@@ -3121,7 +3264,7 @@
"cats": [
76
],
- "description": "BrainSINS is a personalization technology and ecommerce analytics services to online retailers.",
+ "description": "BrainSINS is a personalisation technology and ecommerce analytics services to online retailers.",
"icon": "BrainSINS.png",
"js": {
"BrainSINS": "",
@@ -3222,7 +3365,7 @@
32,
74
],
- "description": "BrightInfo is an automated content personalization solution.",
+ "description": "BrightInfo is an automated content personalisation solution.",
"icon": "BrightInfo.png",
"js": {
"_BI_": "\\;confidence:50",
@@ -3403,6 +3546,25 @@
"icon": "Bulma.png",
"website": "http://bulma.io"
},
+ "Bumb": {
+ "cats": [
+ 4
+ ],
+ "description": "Bump is an API contract management platform that helps document and track APIs by identifying changes in API structure, and keeping developers informed through an elegant documentation.",
+ "dom": {
+ ".doc-navigation footer, footer.catalog-footer": {
+ "text": "Powered by Bump"
+ }
+ },
+ "icon": "Bump.svg",
+ "pricing": [
+ "recurring",
+ "freemium",
+ "low"
+ ],
+ "saas": true,
+ "website": "https://bump.sh"
+ },
"Business Catalyst": {
"cats": [
1
@@ -4069,7 +4231,7 @@
"cats": [
10
],
- "description": "ClickTale is a SaaS solution enabling organizations to gain visual in-page analytics.",
+ "description": "ClickTale is a SaaS solution enabling organisations to gain visual in-page analytics.",
"icon": "ClickTale.png",
"js": {
"ClickTale": "",
@@ -4256,7 +4418,7 @@
"cookies": {
"coconut_calendar": ""
},
- "description": "Coconut is a cloud-based appointment scheduling solution designed for enterprise financial services organizations such as credit unions, retail banks and more.",
+ "description": "Coconut is a cloud-based appointment scheduling solution designed for enterprise financial services organisations such as credit unions, retail banks and more.",
"icon": "CoconutSoftware.svg",
"website": "https://www.coconutsoftware.com/"
},
@@ -4405,7 +4567,7 @@
"CommercejsSpace": ""
},
"scripts": [
- "cdn\\.chec\\.io/v(\\d+)/commerce\\.js\\;version=\\1",
+ "cdn\\.chec\\.io/v(\\d+)/commerce\\.js\\;version:\\1",
"chec/commerce\\.js"
],
"url": "\\.spaces.chec\\.io",
@@ -4525,7 +4687,7 @@
"cats": [
74
],
- "description": "Convert Experiences is an enterprise A/B testing and personalisation solution for conversion optimization and data-driven decisions in high-traffic websites.",
+ "description": "Convert Experiences is an enterprise A/B testing and personalisation solution for conversion optimisation and data-driven decisions in high-traffic websites.",
"icon": "Convert.png",
"js": {
"convert": "\\;confidence:34",
@@ -4540,6 +4702,30 @@
"scripts": "\\.convertexperiments\\.com/js",
"website": "https://www.convert.com"
},
+ "ConvertKit": {
+ "cats": [
+ 32,
+ 75
+ ],
+ "description": "ConvertKit is an email marketing tool built for content creators.",
+ "icon": "ConvertKit.svg",
+ "dom": {
+ "form[action*='app.convertkit.com']": {
+ "attributes": {
+ "action": ""
+ }
+ },
+ "link[href*='.convertkit.com']": {
+ "attributes": {
+ "action": ""
+ }
+ }
+ },
+ "scripts": "\\.convertkit\\.com",
+ "saas": true,
+ "pricing": ["low", "freemium", "recurring"],
+ "website": "https://convertkit.com"
+ },
"ConvertFlow": {
"cats": [
10,
@@ -4763,14 +4949,15 @@
},
"Cross Pixel": {
"cats": [
- 10
+ 77
],
+ "description": "Cross Pixel is an advertising platform through which advertisers can leverage the marriage of partner audience synergies with the power of retargeting.",
"icon": "Cross Pixel.png",
"js": {
"cp_C4w1ldN2d9PmVrkN": ""
},
- "scripts": "tag\\.crsspxl\\.com/s1\\.js",
- "website": "http://datadesk.crsspxl.com"
+ "scripts": "tag\\.crsspxl\\.com",
+ "website": "http://crosspixel.net"
},
"CrossBox": {
"cats": [
@@ -5282,7 +5469,7 @@
"cats": [
19
],
- "description": "DocuSign allows organizations to manage electronic agreements.",
+ "description": "DocuSign allows organisations to manage electronic agreements.",
"dns": {
"TXT": [
"docusign"
@@ -5457,6 +5644,15 @@
},
"website": "http://www.doxygen.nl/"
},
+ "Draft.js": {
+ "cats": [
+ 20
+ ],
+ "description": "Draft.js is a JavaScript rich text editor framework, built for React.",
+ "scripts": "draft-js(@|/)([\\d.]+)\\;version:\\2",
+ "icon": "draftjs.png",
+ "website": "https://draftjs.org/"
+ },
"DreamWeaver": {
"cats": [
20
@@ -5575,7 +5771,7 @@
"_dy_geo": "",
"_dy_ses_load_seq": ""
},
- "description": "Dynamic Yield is a provider of automated conversion optimization tools for marketers and retailers.",
+ "description": "Dynamic Yield is a provider of automated conversion optimisation tools for marketers and retailers.",
"icon": "DynamicYield.svg",
"js": {
"recommendationContext": ""
@@ -5897,11 +6093,11 @@
"website": "http://emberjs.com"
},
"Emotion": {
- "description": "Emotion is a library designed for writing CSS styles with JavaScript.",
"cats": [
12,
47
],
+ "description": "Emotion is a library designed for writing CSS styles with JavaScript.",
"dom": {
"style[data-emotion], style[data-emotion-css]": {
"text": ""
@@ -6010,7 +6206,7 @@
"cats": [
74
],
- "description": "Estore Compare is a website optimization software that offers A/B testing, CVR and LTV measuring tools.",
+ "description": "Estore Compare is a website optimisation software that offers A/B testing, CVR and LTV measuring tools.",
"icon": "EstoreCompare.svg",
"scripts": "cdn\\d+\\.estore\\.jp/",
"website": "https://estore.co.jp/estorecompare/"
@@ -6054,7 +6250,7 @@
10,
74
],
- "description": "Etracker is a web optimization solution.",
+ "description": "Etracker is a web optimisation solution.",
"icon": "Etracker.png",
"js": {
"_etracker": ""
@@ -6099,7 +6295,7 @@
"cats": [
32
],
- "description": "ExitIntel is a full service conversion optimization agency that focuses on ecommerce companies.",
+ "description": "ExitIntel is a full service conversion optimisation agency that focuses on ecommerce companies.",
"icon": "ExitIntel.png",
"js": {
"exitintel.VERSION": "(.+)$\\;version:\\1",
@@ -6177,7 +6373,7 @@
10,
36
],
- "description": "Ezoic is a website optimization platform for digital publishers and website owners powered by machine learning.",
+ "description": "Ezoic is a website optimisation platform for digital publishers and website owners powered by machine learning.",
"icon": "Ezoic.svg",
"js": {
"EzoicA": "",
@@ -6265,11 +6461,11 @@
},
"website": "http://facebook.com"
},
- "Facebook Sign-in": {
+ "Facebook Login": {
"cats": [
69
],
- "description": "FaceBook sign-in allows uses to create an account or log into Facebook. Connect with friends, family and other people you know. Share photos and videos, send messages and get updates.",
+ "description": "Facebook Login is a way for people to create accounts and log into your app across multiple platforms.",
"icon": "Facebook.svg",
"js": {
"FB.getLoginStatus": ""
@@ -6348,6 +6544,7 @@
31
],
"description": "Fastly is a cloud computing services provider. Fastly's cloud platform provides a content delivery network, Internet security services, load balancing, and video & streaming services.",
+ "icon": "Fastly.svg",
"headers": {
"Fastly-Debug-Digest": "",
"Vary": "Fastly-SSL",
@@ -6355,7 +6552,8 @@
"x-fastly-origin": "",
"x-via-fastly:": ""
},
- "icon": "Fastly.svg",
+ "xhr": "\\.fastly\\.net",
+ "pricing": ["payg"],
"website": "https://www.fastly.com"
},
"Fastspring": {
@@ -7711,6 +7909,14 @@
"url": "^https?://sites\\.google\\.com",
"website": "http://sites.google.com"
},
+ "Google My Business": {
+ "cats": [
+ 1
+ ],
+ "icon": "Google.svg",
+ "url": "https?://[^.]+\\.business\\.site",
+ "website": "https://www.google.com/business/website-builder"
+ },
"Google Tag Manager": {
"cats": [
42
@@ -7734,11 +7940,11 @@
41
],
"icon": "Google Wallet.png",
+ "saas": true,
"scripts": [
"checkout\\.google\\.com",
"wallet\\.google\\.com"
],
- "saas": true,
"website": "http://wallet.google.com"
},
"Google Web Server": {
@@ -7914,6 +8120,29 @@
"scripts": "ib\\.guestonline\\.\\w+",
"website": "https://www.guestonline.io"
},
+ "GumGum": {
+ "cats": [
+ 36
+ ],
+ "description": "GumGum is a technology and media company specializing in contextual intelligence.",
+ "icon": "GumGum.png",
+ "dom": {
+ "iframe[src*='gumgum.com']": {
+ "attributes": {
+ "src": ""
+ }
+ },
+ "img[src*='gumgum.com']": {
+ "attributes": {
+ "src": ""
+ }
+ }
+ },
+ "xhr": "\\.gumgum\\.com",
+ "saas": true,
+ "pricing": ["low", "recurring"],
+ "website": "https://gumgum.com"
+ },
"HCL Commerce": {
"cats": [
6
@@ -8186,7 +8415,7 @@
"cats": [
74
],
- "description": "HiConversion is a SaaS solution that caters to ecommerce brands seeking actionable insights through their adaptive customer experience optimization.",
+ "description": "HiConversion is a SaaS solution that caters to ecommerce brands seeking actionable insights through their adaptive customer experience optimisation.",
"icon": "HiConversion.png",
"js": {
"__hic.version": "([\\d.]+)\\;version:\\1"
@@ -8348,10 +8577,25 @@
"_hsq": "",
"hubspot": ""
},
+ "website": "https://www.hubspot.com"
+ },
+ "HubSpot CMS Hub": {
+ "cats": [
+ 1
+ ],
+ "description": "CMS Hub is a content management platform by HubSpot for marketers to manage, optimize, and track content performance on websites, blogs, and landing pages.",
+ "icon": "HubSpot.png",
+ "headers": {
+ "x-hs-hub-id": "",
+ "x-powered-by": "HubSpot"
+ },
+ "implies": "HubSpot",
"meta": {
"generator": "HubSpot"
},
- "website": "https://www.hubspot.com"
+ "saas": true,
+ "pricing": ["mid", "recurring"],
+ "website": "https://www.hubspot.com/products/cms"
},
"HubSpot Analytics": {
"cats": [
@@ -8573,6 +8817,15 @@
"icon": "Includable.svg",
"website": "http://includable.com"
},
+ "Index Exchange": {
+ "cats": [
+ 36
+ ],
+ "description": "Index Exchange is a customizable exchange technology that enables sell side media firms to monetize ad inventories programmatically and in real time.",
+ "icon": "Index Exchange.svg",
+ "xhr": "\\.casalemedia\\.com",
+ "website": "https://www.indexexchange.com"
+ },
"Indexhibit": {
"cats": [
1
@@ -9080,7 +9333,7 @@
57
],
"cpe": "cpe:/a:jekyllrb:jekyll",
- "description": "Jekyll is a blog-aware, static site generator for personal, project, or organization sites.",
+ "description": "Jekyll is a blog-aware, static site generator for personal, project, or organisation sites.",
"html": [
"Powered by ]*>Jekyll",
"