diff --git a/run b/run
index a8ec820ef..102fc812d 100755
--- a/run
+++ b/run
@@ -10,13 +10,7 @@ fi
cmd="docker run --rm -v "$(pwd):/opt/wappalyzer" -it wappalyzer/dev"
-$cmd yarn install
-
-pushd src/drivers/webextension
-
-$cmd yarn install
-
-popd
+$cmd sh -c "yarn install; cd src/drivers/webextension; yarn install"
$cmd ./bin/run links
$cmd ./bin/run $@
diff --git a/src/apps.json b/src/apps.json
index ac052dc09..24326e933 100755
--- a/src/apps.json
+++ b/src/apps.json
@@ -401,7 +401,7 @@
"headers": {
"X-Akamai-Transformed": ""
},
- "icon": "Akamai.png",
+ "icon": "akamai.svg",
"website": "http://akamai.com"
},
"Akka HTTP": {
@@ -939,6 +939,14 @@
"script": "bittads\\.com/js/bitt\\.js$",
"website": "http://bittads.com"
},
+ "Bizweb":{
+ "cats": [
+ "6"
+ ],
+ "env": "^Bizweb$",
+ "icon": "bizweb.png",
+ "website": "https://www.bizweb.vn"
+ },
"Blesta": {
"cats": [
"6"
@@ -5331,7 +5339,7 @@
"cats": [
"12"
],
- "icon": "moon.png",
+ "icon": "moon.svg",
"script": "/moon(?:\\.min)?\\.js$",
"website": "http://moonjs.ga/"
},
@@ -5585,6 +5593,24 @@
"icon": "New Relic.png",
"website": "http://newrelic.com"
},
+ "Next.js": {
+ "cats": [
+ "18",
+ "22"
+ ],
+ "headers": {
+ "x-powered-by": "^Next.js ?([0-9.]+)?\\;version:\\1"
+ },
+ "html": "<[^>]+__next",
+ "env": "^__NEXT_DATA__$",
+ "icon": "zeit.svg",
+ "implies": [
+ "React",
+ "webpack",
+ "Node.js"
+ ],
+ "website": "https://zeit.co/next"
+ },
"Nginx": {
"cats": [
"22"
@@ -5614,6 +5640,16 @@
"script": "^/nodebb\\.min\\.js\\?",
"website": "https://nodebb.org"
},
+ "Now": {
+ "cats": [
+ "22"
+ ],
+ "headers": {
+ "server": "now"
+ },
+ "icon": "zeit.svg",
+ "website": "https://zeit.co/now"
+ },
"OWL Carousel": {
"cats": [
"5"
@@ -8430,6 +8466,10 @@
],
"icon": "typecho.svg",
"implies": "PHP",
+ "env": "^TypechoComment$",
+ "meta": {
+ "generator": "Typecho( [\\d.]+)?\\;version:\\1"
+ },
"url": "/admin/login\\.php?referer=http%3A%2F%2F",
"website": "http://typecho.org/"
},
@@ -8521,7 +8561,7 @@
},
"UMI.CMS": {
"cats": [
- 1
+ "1"
],
"headers": {
"X-Generated-By": "UMI.CMS"
diff --git a/src/drivers/bookmarklet/driver.js b/src/drivers/bookmarklet/driver.js
index 230ff6aaf..28cfca9c1 100644
--- a/src/drivers/bookmarklet/driver.js
+++ b/src/drivers/bookmarklet/driver.js
@@ -105,9 +105,9 @@
'' +
'
';
- if ( w.detected[url] != null && Object.keys(w.detected[url]).length ) {
- for ( app in w.detected[url] ) {
- if ( !hasOwn.call(w.detected[url], app) ) {
+ if ( detected[url] != null && Object.keys(detected[url]).length ) {
+ for ( app in detected[url] ) {
+ if ( !hasOwn.call(detected[url], app) ) {
continue;
}
@@ -154,5 +154,5 @@
}
};
- w.init();
+ w.driver.init();
})();
diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js
index b31c66205..ef7569b17 100644
--- a/src/drivers/npm/driver.js
+++ b/src/drivers/npm/driver.js
@@ -1,19 +1,21 @@
'use strict';
-const wappalyzer = require('./wappalyzer');
+const Wappalyzer = require('./wappalyzer');
const request = require('request');
const fs = require('fs');
const Browser = require('zombie');
const json = JSON.parse(fs.readFileSync(__dirname + '/apps.json'));
-wappalyzer.apps = json.apps;
-wappalyzer.categories = json.categories;
-
const driver = {
quiet: true,
analyze: url => {
+ const wappalyzer = new Wappalyzer();
+
+ wappalyzer.apps = json.apps;
+ wappalyzer.categories = json.categories;
+
return new Promise((resolve, reject) => {
wappalyzer.driver.log = (message, source, type) => {
if ( type === 'error' ) {
diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json
index 891db4dec..9f9e36f00 100644
--- a/src/drivers/npm/package.json
+++ b/src/drivers/npm/package.json
@@ -2,7 +2,7 @@
"name": "wappalyzer",
"description": "Uncovers the technologies used on websites",
"homepage": "https://github.com/AliasIO/Wappalyzer",
- "version": "5.0.5",
+ "version": "5.1.0",
"author": "Elbert Alias",
"license": "GPL-3.0",
"repository": {
diff --git a/src/drivers/webextension/css/popup.css b/src/drivers/webextension/css/popup.css
index 015a333bd..98c56c2de 100644
--- a/src/drivers/webextension/css/popup.css
+++ b/src/drivers/webextension/css/popup.css
@@ -1,31 +1,95 @@
body {
background: #fff;
- color: #4a4a4a;
font-family: Helvetica, Arial, sans-serif;
- font-size: 13px;
- line-height: 16px;
+ font-size: .8rem;
+ height: 20.8rem;
margin: 0;
- min-width: 200px;
- overflow-x: hidden;
- padding: 15px;
+ overflow: hidden;
+ width: 30rem;
}
-a {
- color: #4a4a4a;
+.header {
+ align-items: center;
+ background: linear-gradient(160deg, #32067c, #150233);
+ height: 4rem;
+ display: flex;
}
-a:focus {
- outline: 0;
+.header__link:focus {
+ outline: none;
}
-img {
+.header__logo {
+ display: inline-block;
+ margin: .2rem 0 0 1.5rem;
+ -webkit-backface-visibility: hidden;
+ -webkit-transform: translateZ(0) scale(1.0, 1.0);
+ transform: translateZ(0);
+ height: 2rem;
+}
+
+.container {
+ height: 15.8rem;
+ overflow: scroll;
+ padding: 1rem 1.5rem 0rem 1.5rem;
+}
+
+.detected {
+ columns: 2;
+ column-gap: 1.5rem;
+ line-height: 1.4rem;
+}
+
+.detected__category {
+ break-inside: avoid-column;
+ padding-bottom: 1rem;
+}
+
+.detected__category-link {
+ border-bottom: 1px solid #dbdbdb;
+ display: block;
+ margin-bottom: .5rem;
+ text-decoration: none;
+}
+
+.detected__category-name {
+ color: #4608ad;
+ display: block;
+ font-weight: bold;
+ line-height: 2rem;
+}
+
+.detected__category-link:hover .detected__category-name {
+ color: #4a4a4a;
+}
+
+.detected__app {
+ display: block;
+ line-height: 1.7rem;
+ text-decoration: none;
+}
+
+.detected__app:focus {
+ display: block;
+ outline: 0;
+}
+
+.detected__app-icon {
display: inline-block;
height: 16px;
- margin-right: 8px;
- vertical-align: top;
+ margin-right: .5rem;
+ vertical-align: -.2rem;
width: 16px;
}
+.detected__app-name {
+ color: #4a4a4a;
+}
+
+.detected__app:hover .detected__app-name {
+ border-bottom: 1px solid #4a4a4a;
+}
+
.detected-app {
padding: 7px 0;
}
@@ -39,40 +103,12 @@ img {
padding-bottom: 0;
}
- .detected-app a {
- color: #4608ad;
- display: block;
- text-decoration: none;
- }
-
- .detected-app a .label .name {
- border-bottom: 1px solid transparent;
- }
-
- .detected-app a:hover .label .name {
- border-bottom: 1px solid #4608ad;
- }
-
- .detected-app a .category .name {
- color: #4a4a4a;
- border-bottom: 1px solid transparent;
- }
-
- .detected-app a:hover .category .name {
- border-bottom: 1px solid #4a4a4a;
- }
-
-.label {
- font-weight: bold;
-}
-
-.category {
- display: block;
- margin: 5px 0 0 24px;
+.empty {
+ display: flex;
+ height: 16rem;
+ align-items: center;
+ justify-content: center;
}
-.empty {
- color: #999;
- font-style: italic;
- text-align: center;
+.empty__text {
}
diff --git a/src/drivers/webextension/html/popup.html b/src/drivers/webextension/html/popup.html
index 2f4e90ad2..1f17595cf 100644
--- a/src/drivers/webextension/html/popup.html
+++ b/src/drivers/webextension/html/popup.html
@@ -11,5 +11,12 @@
+
+
+