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