diff --git a/src/drivers/npm/README.md b/src/drivers/npm/README.md
index 170854e86..7c1d950e6 100644
--- a/src/drivers/npm/README.md
+++ b/src/drivers/npm/README.md
@@ -66,9 +66,9 @@ const options = {
htmlMaxRows: 2000,
};
-;(async function() {
- const wappalyzer = new Wappalyzer(options)
+const wappalyzer = new Wappalyzer(options)
+;(async function() {
try {
await wappalyzer.init()
@@ -98,9 +98,9 @@ const Wappalyzer = require('wappalyzer');
const urls = ['https://www.wappalyzer.com', 'https://www.example.com']
-;(async function() {
- const wappalyzer = await new Wappalyzer()
+const wappalyzer = new Wappalyzer()
+;(async function() {
try {
await wappalyzer.init()
diff --git a/src/drivers/webextension/images/icons/AB Tasty.svg b/src/drivers/webextension/images/icons/AB Tasty.svg
new file mode 100644
index 000000000..f210380ed
--- /dev/null
+++ b/src/drivers/webextension/images/icons/AB Tasty.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/drivers/webextension/images/icons/Appian.png b/src/drivers/webextension/images/icons/Appian.png
new file mode 100644
index 000000000..caa3abc62
Binary files /dev/null and b/src/drivers/webextension/images/icons/Appian.png differ
diff --git a/src/drivers/webextension/images/icons/Bluecore.svg b/src/drivers/webextension/images/icons/Bluecore.svg
new file mode 100644
index 000000000..1b6354e34
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Bluecore.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/drivers/webextension/images/icons/Branch.png b/src/drivers/webextension/images/icons/Branch.png
new file mode 100644
index 000000000..5a16197df
Binary files /dev/null and b/src/drivers/webextension/images/icons/Branch.png differ
diff --git a/src/drivers/webextension/images/icons/Bronto.svg b/src/drivers/webextension/images/icons/Bronto.svg
new file mode 100644
index 000000000..cc74432e3
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Bronto.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/drivers/webextension/images/icons/Choices.png b/src/drivers/webextension/images/icons/Choices.png
new file mode 100644
index 000000000..8a14f87d7
Binary files /dev/null and b/src/drivers/webextension/images/icons/Choices.png differ
diff --git a/src/drivers/webextension/images/icons/Fomo.png b/src/drivers/webextension/images/icons/Fomo.png
new file mode 100644
index 000000000..fc3d93f03
Binary files /dev/null and b/src/drivers/webextension/images/icons/Fomo.png differ
diff --git a/src/drivers/webextension/images/icons/GetSocial.png b/src/drivers/webextension/images/icons/GetSocial.png
new file mode 100644
index 000000000..fe39a5cd0
Binary files /dev/null and b/src/drivers/webextension/images/icons/GetSocial.png differ
diff --git a/src/drivers/webextension/images/icons/HCL Commerce.svg b/src/drivers/webextension/images/icons/HCL Commerce.svg
new file mode 100644
index 000000000..b8e38f310
--- /dev/null
+++ b/src/drivers/webextension/images/icons/HCL Commerce.svg
@@ -0,0 +1,28 @@
+
diff --git a/src/drivers/webextension/images/icons/Instapage.svg b/src/drivers/webextension/images/icons/Instapage.svg
new file mode 100644
index 000000000..8e370f7c5
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Instapage.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/drivers/webextension/images/icons/Kameleoon.svg b/src/drivers/webextension/images/icons/Kameleoon.svg
new file mode 100644
index 000000000..602ee9f81
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Kameleoon.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/drivers/webextension/images/icons/Kibo.png b/src/drivers/webextension/images/icons/Kibo.png
new file mode 100644
index 000000000..486985126
Binary files /dev/null and b/src/drivers/webextension/images/icons/Kibo.png differ
diff --git a/src/drivers/webextension/images/icons/NSWgov.png b/src/drivers/webextension/images/icons/NSWgov.png
new file mode 100644
index 000000000..27cd90f39
Binary files /dev/null and b/src/drivers/webextension/images/icons/NSWgov.png differ
diff --git a/src/drivers/webextension/images/icons/Qubit.png b/src/drivers/webextension/images/icons/Qubit.png
new file mode 100644
index 000000000..15553de75
Binary files /dev/null and b/src/drivers/webextension/images/icons/Qubit.png differ
diff --git a/src/drivers/webextension/images/icons/Sanity.svg b/src/drivers/webextension/images/icons/Sanity.svg
new file mode 100644
index 000000000..969563127
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Sanity.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/src/drivers/webextension/images/icons/Segment.png b/src/drivers/webextension/images/icons/Segment.png
deleted file mode 100644
index f9c595f08..000000000
Binary files a/src/drivers/webextension/images/icons/Segment.png and /dev/null differ
diff --git a/src/drivers/webextension/images/icons/Segment.svg b/src/drivers/webextension/images/icons/Segment.svg
new file mode 100644
index 000000000..f33f5a674
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Segment.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/drivers/webextension/images/icons/Service Provider Pro.svg b/src/drivers/webextension/images/icons/Service Provider Pro.svg
new file mode 100644
index 000000000..5676e96c4
--- /dev/null
+++ b/src/drivers/webextension/images/icons/Service Provider Pro.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/drivers/webextension/images/icons/Vizury.png b/src/drivers/webextension/images/icons/Vizury.png
new file mode 100644
index 000000000..5f08a6b8d
Binary files /dev/null and b/src/drivers/webextension/images/icons/Vizury.png differ
diff --git a/src/drivers/webextension/images/icons/WebMetric.svg b/src/drivers/webextension/images/icons/WebMetric.svg
new file mode 100644
index 000000000..103b52ab5
--- /dev/null
+++ b/src/drivers/webextension/images/icons/WebMetric.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/drivers/webextension/images/icons/google-cloud-storage.svg b/src/drivers/webextension/images/icons/google-cloud-storage.svg
new file mode 100644
index 000000000..1183be5e6
--- /dev/null
+++ b/src/drivers/webextension/images/icons/google-cloud-storage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/drivers/webextension/js/content.js b/src/drivers/webextension/js/content.js
index e6ccb4c96..883b38247 100644
--- a/src/drivers/webextension/js/content.js
+++ b/src/drivers/webextension/js/content.js
@@ -92,7 +92,14 @@ const Content = {
language,
])
- Content.onGetTechnologies(await Content.driver('getTechnologies'))
+ const technologies = await Content.driver('getTechnologies')
+
+ Content.onGetTechnologies(technologies)
+
+ // Delayed second pass to capture async JS
+ await new Promise((resolve) => setTimeout(resolve, 5000))
+
+ Content.onGetTechnologies(technologies)
} catch (error) {
Content.driver('error', error)
}
diff --git a/src/technologies.json b/src/technologies.json
index 19372ab62..264ba4263 100644
--- a/src/technologies.json
+++ b/src/technologies.json
@@ -374,6 +374,22 @@
"scripts": "statics\\.a8\\.net",
"website": "https://www.a8.net"
},
+ "AB Tasty": {
+ "cats": [
+ 74
+ ],
+ "description": "AB Tasty is a customer experience optimization company. AB Tasty offers AI-driven experimentation, personalization, and product optimization platforms for user testing.",
+ "icon": "AB Tasty.svg",
+ "js": {
+ "_abtasty": "",
+ "ABTasty": "",
+ "loadABTasty": ""
+ },
+ "scripts": "try\\.abtasty\\.com",
+ "saas": true,
+ "pricing": ["poa"],
+ "website": "https://www.abtasty.com"
+ },
"AD EBiS": {
"cats": [
10
@@ -865,7 +881,8 @@
},
"Adobe Target": {
"cats": [
- 32
+ 32,
+ 74
],
"description": "Adobe Target is an A/B testing, multi-variate testing, personalisation, and optimisation application",
"icon": "Adobe.svg",
@@ -873,6 +890,8 @@
"adobe.target": "",
"adobe.target.VERSION": "^(.+)$\\;version:\\1"
},
+ "saas": true,
+ "pricing": ["poa"],
"website": "https://www.adobe.com/marketing/target.html"
},
"AdonisJS": {
@@ -1749,6 +1768,16 @@
"scripts": "adrum",
"website": "https://appdynamics.com"
},
+ "Appian": {
+ "cats": [
+ 62
+ ],
+ "description": "Appian is an enterprise low-code application platform.",
+ "icon": "Appian.png",
+ "saas": true,
+ "scripts": "\/suite\/tempo\/ui\/sail-client\/embeddedBootstrap.nocache.js",
+ "website": "https://www.appian.com"
+ },
"AppNexus": {
"cats": [
36
@@ -2555,6 +2584,7 @@
"icon": "Bloomreach.png",
"website": "https://developers.bloomreach.com"
},
+ {
"Bloomreach Search & Merchandising": {
"cats": [
29,
@@ -2574,7 +2604,25 @@
],
"saas": true,
"pricing": ["high", "recurring"],
- "website": "https://developers.bloomreach.com/products/personalization/dev-studio"
+ "website": "https://developers.bloomreach.com/products/personalization/dev-studio"
+ },
+ "Bluecore": {
+ "cats": [
+ 32,
+ 75
+ ],
+ "description": "Bluecore is a retail marketing technology that uses data gained from direct marketing like email, social media, site activity.",
+ "icon": "Bluecore.svg",
+ "js": {
+ "triggermail": "",
+ "triggermail_email_address": "",
+ "bluecore_action_trigger": "",
+ "_bluecoreTrack": ""
+ },
+ "scripts": "\\.bluecore\\.com",
+ "saas": true,
+ "pricing": ["poa"],
+ "website": "https://www.bluecore.com"
},
"Bluefish": {
"cats": [
@@ -2805,6 +2853,25 @@
"scripts": "js\\.braintreegateway\\.com",
"website": "https://www.braintreepayments.com"
},
+ "Branch": {
+ "cats": [
+ 32,
+ 10
+ ],
+ "description": "Branch is a mobile deep linking system to increase engagement and retention.",
+ "icon": "Branch.png",
+ "js": {
+ "branch.setBranchViewData": "",
+ "branch_callback__0": ""
+ },
+ "scripts": [
+ "cdn\\.branch\\.io",
+ "app\\.link/_r\\?sdk=web([\\d.]+)\\;version:\\1"
+ ],
+ "saas": true,
+ "pricing": ["poa", "freemium"],
+ "website": "https://branch.io"
+ },
"Braze": {
"cats": [
32,
@@ -2834,6 +2901,23 @@
"implies": "Java",
"website": "https://www.brightspot.com"
},
+ "Bronto": {
+ "cats": [
+ 32,
+ 75
+ ],
+ "description": "Bronto is a cloud-based email marketing automation software.",
+ "icon": "Bronto.svg",
+ "js": {
+ "bronto.versions.sca": "(.+)\\;version:\\1",
+ "BrontoShopify": "",
+ "brontoCookieConsent": ""
+ },
+ "scripts": "(?:snip|cdn)\\.bronto\\.com",
+ "saas": true,
+ "pricing": ["poa"],
+ "website": "https://bronto.com"
+ },
"BrowserCMS": {
"cats": [
1
@@ -3463,6 +3547,17 @@
"scripts": "scripts\\.chitika\\.net/",
"website": "http://chitika.com"
},
+ "Choices": {
+ "description": "Choices.js is a lightweight, configurable select box/text input plugin.",
+ "cats": [
+ 19
+ ],
+ "icon": "Choices.png",
+ "scripts": [
+ "choices\\.js/|@([\\d.]+)(?:/assets)?(?:/scripts)?(?:/styles)?(?:/dist)?/choices(?:\\.min)?\\.js|css\\;version:\\1"
+ ],
+ "website": "https://joshuajohnson.co.uk/Choices/"
+ },
"Chorus": {
"cats": [
1
@@ -3672,11 +3767,11 @@
"scripts": "clipboard(?:-([\\d.]+))?(?:\\.min)?\\.js\\;version:\\1",
"website": "https://clipboardjs.com/"
},
- "Cloud Platform": {
+ "Acquia Cloud Platform": {
"cats": [
62
],
- "description": "Cloud Platform (formally Acquia Cloud) is a Drupal-tuned application lifecycle management suite with an infrastructure to support Drupal deployment workflow processes.",
+ "description": "Acquia Cloud Platform is a Drupal-tuned application lifecycle management suite with an infrastructure to support Drupal deployment workflow processes.",
"headers": {
"X-AH-Environment": "^\\w+$"
},
@@ -6027,6 +6122,20 @@
"implies": "WordPress",
"website": "https://getflywheel.com"
},
+ "Fomo": {
+ "cats": [
+ 32
+ ],
+ "description": "Fomo is a social proof marketing platform.",
+ "icon": "Fomo.png",
+ "js": {
+ "fomo.version": "(.+)\\;version:\\1"
+ },
+ "scripts": "fomo\\.com/api/v",
+ "saas": true,
+ "pricing": ["low", "recurring"],
+ "website": "https://fomo.com"
+ },
"Font Awesome": {
"cats": [
17
@@ -6533,6 +6642,21 @@
},
"website": "http://get-simple.info"
},
+ "GetSocial": {
+ "cats": [
+ 69,
+ 10
+ ],
+ "description": "GetSocial is a social analytics and publishing platform.",
+ "icon": "GetSocial.png",
+ "js": {
+ "GETSOCIAL_VERSION": "(.+)\\;version:\\1"
+ },
+ "scripts": "api\\.at\\.getsocial\\.io",
+ "saas": true,
+ "pricing": ["low", "recurring"],
+ "website": "https://getsocial.io"
+ },
"Ghost": {
"cats": [
11
@@ -6851,6 +6975,18 @@
"icon": "google_cloud.svg",
"website": "https://cloud.google.com"
},
+ "Google Cloud Storage": {
+ "cats": [
+ 19
+ ],
+ "description": "Google Cloud Storage allows world-wide storage and retrieval of any amount of data at any time.",
+ "headers": {
+ "x-goog-storage-class": "^\\w+$"
+ },
+ "icon": "google-cloud-storage.svg",
+ "implies": "Google Cloud",
+ "website": "https://cloud.google.com/storage"
+ },
"Google Code Prettify": {
"cats": [
19
@@ -7615,20 +7751,19 @@
"icon": "IBM.svg",
"website": "http://ibm.com/software/webservers/httpservers"
},
- "IBM WebSphere Commerce": {
+ "HCL Commerce": {
"cats": [
6
],
- "cpe": "cpe:/a:ibm:websphere_commerce_suite",
"html": "<(?:a|link|script)[^>]*(?:href|src)=\".*(?:/wcsstore/|webapp\\/wcs)",
- "icon": "IBM.svg",
+ "icon": "HCL Commerce.svg",
"implies": "Java",
"pricing": [
"poa"
],
"saas": true,
"url": "/wcs/",
- "website": "http://ibm.com/software/genservers/commerceproductline"
+ "website": "https://www.hcltechsw.com/products/commerce"
},
"IIS": {
"cats": [
@@ -7948,6 +8083,30 @@
},
"website": "http://www.instantcms.ru"
},
+ "Instapage": {
+ "cats": [
+ 51,
+ 74,
+ 10
+ ],
+ "description": "Instapage is a cloud-based landing page platform designed for marketing teams and agencies.",
+ "icon": "Instapage.svg",
+ "implies": [
+ "Lua",
+ "Node.js"
+ ],
+ "js": {
+ "instapageSp": "",
+ "_instapageSnowplow": ""
+ },
+ "scripts": [
+ "cdn\\.instapagemetrics\\.com",
+ "heatmap-events-collector\\.instapage\\.com"
+ ],
+ "saas": true,
+ "pricing": ["mid", "recurring"],
+ "website": "https://instapage.com"
+ },
"Intel Active Management Technology": {
"cats": [
22,
@@ -8535,6 +8694,32 @@
"saas": true,
"website": "https://newkajabi.com"
},
+ "Kameleoon": {
+ "cats": [
+ 74
+ ],
+ "description": "Kameleoon is a personalization technology platform for real-time omnichannel optimization and conversion.",
+ "icon": "Kameleoon.svg",
+ "dom": {
+ "link[href*='.kameleoon.eu/kameleoon.js']": {
+ "attributes": {
+ "href": ""
+ }
+ }
+ },
+ "cookies": {
+ "kameleoonVisitorCode": ""
+ },
+ "js": {
+ "Kameleoon.Gatherer.SCRIPT_VERSION": "(.+)\\;version:\\1",
+ "kameleoonEndLoadTime": "",
+ "kameleoonS": ""
+ },
+ "scripts": "\\.kameleoon\\.\\w+/kameleoon\\.js",
+ "saas": true,
+ "pricing": ["poa"],
+ "website": "https://kameleoon.com/"
+ },
"Kampyle": {
"cats": [
10,
@@ -8654,6 +8839,33 @@
"url": "kibana#/dashboard/",
"website": "http://www.elastic.co/products/kibana"
},
+ "Kibo Commerce": {
+ "cats": [
+ 6
+ ],
+ "description": "Kibo Commerce is a enterprise ecommerce platform that offers a cloud-based, end-to-end commerce solution for retailers and branded manufacturers.",
+ "icon": "Kibo.png",
+ "scripts": "cdn-tp\\d+\\.mozu\\.com",
+ "pricing": ["poa"],
+ "website": "https://kibocommerce.com"
+ },
+ "Kibo Personalization": {
+ "cats": [
+ 10,
+ 74
+ ],
+ "description": "Kibo Personalization is a omnichannel personalization software powered by machine learning to deliver individualized customer experiences and powered by Monetate and Certona.",
+ "icon": "Kibo.png",
+ "js": {
+ "monetateT": "",
+ "monetateQ": "",
+ "monetate": ""
+ },
+ "scripts": "\\.monetate\\.net",
+ "saas": true,
+ "pricing": ["poa"],
+ "website": "https://kibocommerce.com/personalization-software"
+ },
"KineticJS": {
"cats": [
25
@@ -9138,9 +9350,12 @@
],
"icon": "List.js.png",
"js": {
- "List": ""
+ "List": "\\;confidence:50"
},
- "scripts": "^list\\.(?:min\\.)?js$",
+ "scripts": [
+ "list\\.js/\\;confidence:50",
+ "@([\\d.]+)/(?:/dist)?list\\.(?:min\\.)?js\\;version:\\1",
+ ],
"website": "http://listjs.com"
},
"Listrak": {
@@ -9302,13 +9517,12 @@
10
],
"html": [
- "