main
Elbert Alias 6 years ago
commit abbb3138be

3
.gitignore vendored

@ -15,4 +15,5 @@ Desktop.ini
._*
tags
tags.*
/nbproject/private/
.idea
/nbproject/private/

@ -1,6 +1,6 @@
FROM alpine
MAINTAINER Elbert Alias <elbert@alias.io>
LABEL maintainer="elbert@alias.io"
ENV WAPPALYZER_DIR=/opt/wappalyzer

@ -2954,6 +2954,17 @@
"icon": "ensighten.png",
"website": "https://success.ensighten.com/hc/en-us"
},
"Envoy": {
"cats": [
22
],
"icon": "Envoy.png",
"headers": {
"Server": "^envoy$",
"x-envoy-upstream-service-time" : ""
},
"website": "https://www.envoyproxy.io/"
},
"Enyo": {
"cats": [
12,
@ -4629,6 +4640,21 @@
],
"website": "https://www.inspectlet.com/"
},
"Instabot": {
"cats": [
5,
10,
32,
52,
58
],
"icon": "Instabot.png",
"js": {
"Instabot": ""
},
"script": "/rokoInstabot\\.js",
"website": "https://instabot.io/"
},
"InstantCMS": {
"cats": [
1
@ -4703,6 +4729,18 @@
"script": "https?://cdn\\.inwemo\\.com/inwemo\\.min\\.js",
"website": "https://inwemo.com/"
},
"Ionic": {
"cats": [
18
],
"icon": "ionic.png",
"implies": "Angular",
"js": {
"Ionic.config": "",
"Ionic.version": "^(.+)$\\;version:\\1"
},
"website": "https://ionicframework.com"
},
"Ionicons": {
"cats": [
17
@ -5763,6 +5801,9 @@
"cookies": {
"botble_session": ""
},
"headers": {
"CMS-Version": "^(.+)$\\;version:\\1;confidence:0"
},
"icon": "mypage-platform.png",
"implies": "Laravel",
"website": "https://www.mypage.vn"
@ -9521,6 +9562,16 @@
"script": "strapdown\\.js",
"website": "http://strapdownjs.com"
},
"Strapi": {
"cats": [
1
],
"headers": {
"X-Powered-By": "^Strapi"
},
"icon": "Strapi.png",
"website": "https://strapi.io"
},
"Strato": {
"cats": [
6
@ -9803,7 +9854,7 @@
"TEALIUMENABLED": ""
},
"script": [
"^//tags\\.tiqcdn\\.com/",
"^(?:https?:)?//tags\\.tiqcdn\\.com/",
"/tealium/utag\\.js$"
],
"website": "http://tealium.com"
@ -10675,7 +10726,7 @@
"<div [^>]*id=\"__nuxt\"",
"<script [^>]*>window\\.__NUXT__"
],
"icon": "Nuxt.js.png",
"icon": "Nuxt.js.svg",
"js": {
"$nuxt": ""
},
@ -10940,6 +10991,20 @@
"script": "cdn\\d+\\.editmysite\\.com",
"website": "https://www.weebly.com"
},
"Weglot": {
"cats": [
19
],
"headers": {
"Weglot-Translated": ""
},
"icon": "Weglot.png",
"script": [
"cdn\\.weglot\\.com",
"wp-content/plugins/weglot"
],
"website": "https://www.weglot.com"
},
"Wikinggruppen": {
"cats": [
6
@ -12843,6 +12908,19 @@
"generator": "xt:Commerce"
},
"website": "https://www.xt-commerce.com"
},
"Halo": {
"cats": [
1,
11
],
"html": [
"<link rel=[\"']stylesheet[\"'] [^>]+/halo-(?:backend|frontend|common)/"
],
"icon": "Halo.svg",
"implies": "Java",
"script": "/halo-(?:backend|frontend|common)/",
"website": "https://github.com/ruibaby/halo"
}
},
"categories": {

@ -17,6 +17,53 @@ function sleep(ms) {
return ms ? new Promise(resolve => setTimeout(resolve, ms)) : Promise.resolve();
}
function processJs(window, patterns) {
const js = {};
Object.keys(patterns).forEach((appName) => {
js[appName] = {};
Object.keys(patterns[appName]).forEach((chain) => {
js[appName][chain] = {};
patterns[appName][chain].forEach((pattern, index) => {
const properties = chain.split('.');
let value = properties
.reduce((parent, property) => (parent && parent[property]
? parent[property] : null), window);
value = typeof value === 'string' || typeof value === 'number' ? value : !!value;
if (value) {
js[appName][chain][index] = value;
}
});
});
});
return js;
}
function processHtml(html, maxCols, maxRows) {
if (maxCols || maxRows) {
const chunks = [];
const rows = html.length / maxCols;
let i;
for (i = 0; i < rows; i += 1) {
if (i < maxRows / 2 || i > rows - maxRows / 2) {
chunks.push(html.slice(i * maxCols, (i + 1) * maxCols));
}
}
html = chunks.join('\n');
}
return html;
}
class Driver {
constructor(Browser, pageUrl, options) {
this.options = Object.assign({}, {
@ -182,8 +229,8 @@ class Driver {
const { cookies, headers, scripts } = browser;
const html = this.processHtml(browser.html);
const js = this.processJs(browser.js);
const html = processHtml(browser.html, this.options.htmlMaxCols, this.options.htmlMaxRows);
const js = processJs(browser.js, this.wappalyzer.jsPatterns);
await this.wappalyzer.analyze(pageUrl, {
cookies,
@ -210,56 +257,6 @@ class Driver {
return resolve(reducedLinks);
}
processHtml(html) {
if (this.options.htmlMaxCols || this.options.htmlMaxRows) {
const chunks = [];
const maxCols = this.options.htmlMaxCols;
const maxRows = this.options.htmlMaxRows;
const rows = html.length / maxCols;
let i;
for (i = 0; i < rows; i += 1) {
if (i < maxRows / 2 || i > rows - maxRows / 2) {
chunks.push(html.slice(i * maxCols, (i + 1) * maxCols));
}
}
html = chunks.join('\n');
}
return html;
}
processJs(window) {
const patterns = this.wappalyzer.jsPatterns;
const js = {};
Object.keys(patterns).forEach((appName) => {
js[appName] = {};
Object.keys(patterns[appName]).forEach((chain) => {
js[appName][chain] = {};
patterns[appName][chain].forEach((pattern, index) => {
const properties = chain.split('.');
let value = properties
.reduce((parent, property) => (parent && parent[property]
? parent[property] : null), window);
value = typeof value === 'string' || typeof value === 'number' ? value : !!value;
if (value) {
js[appName][chain][index] = value;
}
});
});
});
return js;
}
crawl(pageUrl, index = 1, depth = 1) {
pageUrl.canonical = `${pageUrl.protocol}//${pageUrl.host}${pageUrl.pathname}`;
@ -320,3 +317,5 @@ class Driver {
}
module.exports = Driver;
module.exports.processJs = processJs;
module.exports.processHtml = processHtml;

@ -1,10 +1,6 @@
{
"name": "wappalyzer",
<<<<<<< HEAD
"version": "5.7.1",
=======
"version": "5.5.6",
>>>>>>> af187690ff1a68e0a8e2aa01b68bb5c058d258df
"lockfileVersion": 1,
"requires": true,
"dependencies": {

@ -72,8 +72,8 @@
"categoryName57": { "message": "靜態網站產生器" },
"categoryName58": { "message": "使用者指引" },
"categoryName59": { "message": "JavaScript 函式庫" },
"categoryName60": { "message": "Containers" },
"categoryName61": { "message": "SaaS" },
"categoryName62": { "message": "PaaS" },
"categoryName63": { "message": "IaaS" }
"categoryName60": { "message": "容器" },
"categoryName61": { "message": "軟體即服務(SaaS" },
"categoryName62": { "message": "平台即服務(PaaS" },
"categoryName63": { "message": "基礎設施即服務(IaaS" }
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,30 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="256.000000pt" height="256.000000pt" viewBox="0 0 256.000000 256.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,256.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1035 2500 c-508 -110 -892 -503 -980 -1005 -23 -130 -21 -330 5
-454 102 -500 477 -877 977 -980 139 -29 345 -29 484 -1 435 89 783 390 933
808 87 244 90 554 5 806 -137 409 -471 713 -898 818 -127 31 -401 35 -526 8z
m-203 -1195 l-57 -190 -62 -3 -61 -3 29 93 c16 50 29 96 29 101 0 4 -19 7 -42
5 l-41 -3 -30 -97 -30 -98 -59 0 c-52 0 -59 2 -54 18 3 9 15 50 27 90 11 40
19 76 16 79 -4 3 -23 -4 -43 -16 -20 -12 -38 -21 -39 -19 -8 8 54 85 83 103
22 14 36 35 50 75 l19 55 56 3 c64 3 66 0 42 -67 l-14 -41 44 0 44 0 16 55 16
54 57 3 c31 2 58 1 59 -2 2 -3 -23 -90 -55 -195z m418 5 l0 -200 -55 0 -55 0
0 40 0 40 -60 0 c-59 0 -60 0 -80 -40 l-20 -40 -65 0 -64 0 104 173 c57 94
114 182 127 194 18 17 38 23 93 26 39 1 71 4 73 5 1 1 2 -88 2 -198z m742 190
c54 -15 81 -54 72 -105 -23 -140 -64 -237 -112 -267 -30 -18 -51 -22 -131 -22
-170 -1 -199 29 -163 173 39 163 65 199 157 222 45 11 135 10 177 -1z m-492
-11 c0 -6 -16 -63 -35 -126 -19 -64 -35 -124 -35 -134 0 -26 37 -33 125 -26
l73 7 -14 -47 c-8 -25 -17 -49 -20 -52 -3 -3 -56 -6 -118 -6 -188 0 -199 20
-135 245 l43 150 58 0 c35 0 58 -4 58 -11z"/>
<path d="M1108 1339 c-21 -36 -38 -69 -38 -72 0 -13 71 -7 76 7 3 7 4 40 2 72
l-3 59 -37 -66z"/>
<path d="M1839 1420 c-19 -11 -29 -36 -60 -138 -24 -84 -18 -102 36 -102 48 0
71 26 100 112 29 88 31 123 9 132 -23 9 -67 7 -85 -4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 671 B

After

Width:  |  Height:  |  Size: 19 KiB

@ -1 +1,15 @@
<svg width="128" height="128" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg"><title>klarna</title><path d="M50.487 67.747c.197 21.498 12.425 41.418 31.753 52.167 9.467 5.226 20.117 7.987 31.064 8.086-.198-10.453-3.057-20.709-8.481-29.683-11.242-18.637-32.05-30.274-54.336-30.57zm0-7.494c22.286-.296 43.094-11.933 54.336-30.57 5.424-8.974 8.283-19.23 8.48-29.683-10.946.099-21.596 2.958-31.063 8.185-19.328 10.749-31.556 30.669-31.753 52.068zM39.639 0H21.89C17.55 0 14 3.353 14 7.495v117.448c0 1.38 1.282 2.761 3.156 2.761h17.849c4.339 0 7.79-3.353 7.79-7.494V2.564C42.795 1.084 41.513 0 39.64 0z" fill="#0072CC" fill-rule="evenodd"/></svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 165.9 144.2" style="enable-background:new 0 0 165.9 144.2;" xml:space="preserve">
<g>
<path d="M114,0.6H82.2c0,26.1-12,50.1-33,65.8l-12.6,9.5l48.9,66.7H125h0.7l-45-61.4C102.1,60,114,31.4,114,0.6z"/>
<rect y="0.6" width="32.7" height="142"/>
<path d="M148.1,108.5c-9.9,0-17.8,8-17.8,17.8c0,9.8,8,17.8,17.8,17.8c9.8,0,17.8-8,17.8-17.8C165.9,116.5,157.9,108.5,148.1,108.5
z"/>
<path d="M136.1,5.3c0-1.3-1-2.2-2.5-2.2H131v7.2h1.3V7.6h1.4l1,2.7h1.4l-1.3-2.9C135.6,7,136.1,6.3,136.1,5.3z M133.6,6.5h-1.4V4.3
h1.4c0.9,0,1.2,0.4,1.2,1.1C134.8,6,134.6,6.5,133.6,6.5z"/>
<path d="M140,6.8c0-3.8-3-6.8-6.7-6.8c-3.7,0-6.7,3.1-6.7,6.8c0,3.7,3,6.8,6.7,6.8C137,13.6,140,10.6,140,6.8z M127.8,6.8
c0-3,2.4-5.5,5.4-5.5s5.4,2.5,5.4,5.5s-2.4,5.5-5.4,5.5S127.8,9.9,127.8,6.8z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 649 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1,10 @@
<svg width="486px" height="346px" viewBox="0 0 486 346" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuxt Logo</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g fill-rule="nonzero">
<polygon id="Shape" fill="#42B883" points="200 0 400 346 0 346"></polygon>
<polygon id="Shape" fill="#3C8171" points="311 43 486 346 136 346"></polygon>
<polygon id="Shape" fill="#35495E" points="267.945522 117 400 345.454247 136 345.454247"></polygon>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB