@ -0,0 +1,2 @@
|
||||
**/lib/*
|
||||
node_modules
|
@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
"extends": "airbnb-base",
|
||||
"rules": {
|
||||
"no-param-reassign": 0
|
||||
}
|
||||
};
|
@ -1,284 +0,0 @@
|
||||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"assertion-error": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
|
||||
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
|
||||
"dev": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"browser-stdout": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
|
||||
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
|
||||
"dev": true
|
||||
},
|
||||
"chai": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
|
||||
"integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"assertion-error": "1.1.0",
|
||||
"check-error": "1.0.2",
|
||||
"deep-eql": "3.0.1",
|
||||
"get-func-name": "2.0.0",
|
||||
"pathval": "1.1.0",
|
||||
"type-detect": "4.0.8"
|
||||
}
|
||||
},
|
||||
"check-error": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
|
||||
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
|
||||
"dev": true
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
|
||||
"integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
|
||||
"dev": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"deep-eql": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
|
||||
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"type-detect": "4.0.8"
|
||||
}
|
||||
},
|
||||
"diff": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
|
||||
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
|
||||
"dev": true
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"file-type": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-7.4.0.tgz",
|
||||
"integrity": "sha1-KnyU9ioAMBULt9m2xwz6HT51nIY="
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
},
|
||||
"get-func-name": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
|
||||
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
|
||||
"dev": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
|
||||
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "1.0.0",
|
||||
"inflight": "1.0.6",
|
||||
"inherits": "2.0.3",
|
||||
"minimatch": "3.0.4",
|
||||
"once": "1.4.0",
|
||||
"path-is-absolute": "1.0.1"
|
||||
}
|
||||
},
|
||||
"growl": {
|
||||
"version": "1.10.3",
|
||||
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
|
||||
"integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
|
||||
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
|
||||
"dev": true
|
||||
},
|
||||
"he": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
|
||||
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
|
||||
"dev": true
|
||||
},
|
||||
"html-comment-regex": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
|
||||
"integrity": "sha1-ZouTd26q5V696POtRkswekljYl4="
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "1.4.0",
|
||||
"wrappy": "1.0.2"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||
"dev": true
|
||||
},
|
||||
"is-svg": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
|
||||
"integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
|
||||
"requires": {
|
||||
"html-comment-regex": "1.1.1"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "1.1.11"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
},
|
||||
"mocha": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.0.tgz",
|
||||
"integrity": "sha512-d6RWgYPILd+AoWVOxiD0UwUqRicnE1inTxMr40CXOgqYve1MvnKntoLAtLIcxjEeVjEoYYTe5QAq3mUc6/ySjQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"browser-stdout": "1.3.1",
|
||||
"commander": "2.11.0",
|
||||
"debug": "3.1.0",
|
||||
"diff": "3.5.0",
|
||||
"escape-string-regexp": "1.0.5",
|
||||
"glob": "7.1.2",
|
||||
"growl": "1.10.3",
|
||||
"he": "1.1.1",
|
||||
"minimatch": "3.0.4",
|
||||
"mkdirp": "0.5.1",
|
||||
"supports-color": "4.4.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||
"dev": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1.0.2"
|
||||
}
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true
|
||||
},
|
||||
"pathval": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
|
||||
"integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
|
||||
},
|
||||
"read-chunk": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz",
|
||||
"integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=",
|
||||
"requires": {
|
||||
"pify": "3.0.0",
|
||||
"safe-buffer": "5.1.1"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
|
||||
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "2.0.0"
|
||||
}
|
||||
},
|
||||
"type-detect": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
|
||||
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
|
||||
"dev": true
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +1,11 @@
|
||||
--- src/drivers/npm/node_modules/zombie/lib/document.js 2018-04-20 14:36:04.097829977 +1000
|
||||
+++ src/drivers/npm/node_modules/zombie/lib/document.js 2018-04-20 14:34:25.699317000 +1000
|
||||
@@ -281,7 +281,7 @@
|
||||
// The current window, postMessage and window.close need this
|
||||
--- src/drivers/npm/node_modules/zombie/lib/document.js
|
||||
+++ src/drivers/npm/node_modules/zombie/lib/document.js
|
||||
@@ -247,7 +247,7 @@ function setupWindow(window, args) {
|
||||
browser._windowInScope = window;
|
||||
var result = undefined;
|
||||
- if (typeof code === 'string' || code instanceof String) result = VM.runInContext(code, window, { filename: filename });else if (code) result = code.call(window);
|
||||
+ if (typeof code === 'string' || code instanceof String) result = VM.runInContext(code, window, { filename: filename, timeout: 1000 });else if (code) result = code.call(window);
|
||||
let result;
|
||||
if (typeof code == 'buffer' || code instanceof Buffer) code = code.toString();
|
||||
- if (typeof code === 'string' || code instanceof String) result = VM.runInContext(code, context, { filename });else if (code) result = code.call(window);
|
||||
+ if (typeof code === 'string' || code instanceof String) result = VM.runInContext(code, context, { filename, timeout: 1000 });else if (code) result = code.call(window);
|
||||
browser.emit('evaluated', code, result, filename);
|
||||
return result;
|
||||
} catch (error) {
|
||||
|
@ -0,0 +1,20 @@
|
||||
class Browser {
|
||||
constructor(options) {
|
||||
this.options = options;
|
||||
|
||||
this.window = null;
|
||||
this.document = null;
|
||||
this.statusCode = null;
|
||||
this.contentType = null;
|
||||
this.headers = null;
|
||||
this.statusCode = null;
|
||||
this.contentType = null;
|
||||
this.html = null;
|
||||
this.js = null;
|
||||
this.links = null;
|
||||
this.scripts = null;
|
||||
this.cookies = null;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Browser;
|
@ -0,0 +1,121 @@
|
||||
const Zombie = require('zombie');
|
||||
const Browser = require('../browser');
|
||||
|
||||
class ZombieBrowser extends Browser {
|
||||
constructor(options) {
|
||||
super(options);
|
||||
|
||||
this.browser = new Zombie({
|
||||
proxy: options.proxy,
|
||||
silent: true,
|
||||
strictSSL: false,
|
||||
userAgent: options.userAgent,
|
||||
waitDuration: options.maxWait,
|
||||
});
|
||||
|
||||
this.browser.on('authenticate', (auth) => {
|
||||
auth.username = this.options.username;
|
||||
auth.password = this.options.password;
|
||||
});
|
||||
}
|
||||
|
||||
visit(url) {
|
||||
return new Promise((resolve) => {
|
||||
this.browser.visit(url, () => {
|
||||
const resource = this.browser.resources.length
|
||||
? this.browser.resources.filter(_resource => _resource.response).shift() : null;
|
||||
|
||||
this.window = this.browser.window;
|
||||
this.document = this.browser.document;
|
||||
this.headers = this.getHeaders();
|
||||
this.statusCode = resource ? resource.response.status : 0;
|
||||
this.contentType = this.headers['content-type'] ? this.headers['content-type'].shift() : null;
|
||||
this.html = this.getHtml();
|
||||
this.js = this.getJs();
|
||||
this.links = this.getLinks();
|
||||
this.scripts = this.getScripts();
|
||||
this.cookies = this.getCookies();
|
||||
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
const headers = {};
|
||||
|
||||
const resource = this.browser.resources.length
|
||||
? this.browser.resources.filter(_resource => _resource.response).shift() : null;
|
||||
|
||||
if (resource) {
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
resource.response.headers._headers.forEach((header) => {
|
||||
if (!headers[header[0]]) {
|
||||
headers[header[0]] = [];
|
||||
}
|
||||
|
||||
headers[header[0]].push(header[1]);
|
||||
});
|
||||
}
|
||||
|
||||
return headers;
|
||||
}
|
||||
|
||||
getHtml() {
|
||||
let html = '';
|
||||
|
||||
if (this.browser.document && this.browser.document.documentElement) {
|
||||
try {
|
||||
html = this.browser.html();
|
||||
} catch (error) {
|
||||
this.log(error.message, 'error');
|
||||
}
|
||||
}
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
getScripts() {
|
||||
let scripts = [];
|
||||
|
||||
if (this.browser.document && this.browser.document.scripts) {
|
||||
scripts = Array.prototype.slice
|
||||
.apply(this.browser.document.scripts)
|
||||
.filter(script => script.src)
|
||||
.map(script => script.src);
|
||||
}
|
||||
|
||||
return scripts;
|
||||
}
|
||||
|
||||
getJs() {
|
||||
return this.browser.window;
|
||||
}
|
||||
|
||||
getLinks() {
|
||||
let links = [];
|
||||
|
||||
if (this.browser.document) {
|
||||
links = Array.from(this.browser.document.getElementsByTagName('a'));
|
||||
}
|
||||
|
||||
return links;
|
||||
}
|
||||
|
||||
getCookies() {
|
||||
const cookies = [];
|
||||
|
||||
if (this.browser.cookies) {
|
||||
this.browser.cookies.forEach(cookie => cookies.push({
|
||||
name: cookie.key,
|
||||
value: cookie.value,
|
||||
domain: cookie.domain,
|
||||
path: cookie.path,
|
||||
}));
|
||||
}
|
||||
|
||||
return cookies;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ZombieBrowser;
|
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const Wappalyzer = require('./driver');
|
||||
const Browser = require('./browsers/zombie');
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const url = args.shift() || '';
|
||||
|
||||
if (!url) {
|
||||
process.stderr.write('No URL specified\n');
|
||||
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const options = {};
|
||||
|
||||
let arg;
|
||||
|
||||
do {
|
||||
arg = args.shift();
|
||||
|
||||
const matches = /--([^=]+)=(.+)/.exec(arg);
|
||||
|
||||
if (matches) {
|
||||
const key = matches[1].replace(/-\w/g, _matches => _matches[1].toUpperCase());
|
||||
const value = matches[2];
|
||||
|
||||
options[key] = value;
|
||||
}
|
||||
} while (arg);
|
||||
|
||||
const wappalyzer = new Wappalyzer(Browser, url, options);
|
||||
|
||||
wappalyzer.analyze()
|
||||
.then((json) => {
|
||||
process.stdout.write(`${JSON.stringify(json)}\n`);
|
||||
|
||||
process.exit(0);
|
||||
})
|
||||
.catch((error) => {
|
||||
process.stderr.write(`${error}\n`);
|
||||
|
||||
process.exit(1);
|
||||
});
|
@ -1,47 +1,16 @@
|
||||
'use strict';
|
||||
const Driver = require('./driver');
|
||||
const ZombieBrowser = require('./browsers/zombie');
|
||||
|
||||
const Wappalyzer = require('./driver');
|
||||
class Wappalyzer {
|
||||
constructor(pageUrl, options) {
|
||||
this.browser = ZombieBrowser;
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const url = args.shift() || '';
|
||||
|
||||
if ( !url ) {
|
||||
process.stderr.write('No URL specified\n');
|
||||
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
var options = {};
|
||||
var arg;
|
||||
|
||||
while ( arg = args.shift() ) {
|
||||
var matches = /--([^=]+)=(.+)/.exec(arg);
|
||||
|
||||
if ( matches ) {
|
||||
var key = matches[1].replace(/-\w/g, matches => matches[1].toUpperCase());
|
||||
var value = matches[2];
|
||||
|
||||
options[key] = value;
|
||||
return new Driver(this.browser, pageUrl, options);
|
||||
}
|
||||
}
|
||||
|
||||
const wappalyzer = new Wappalyzer(url, options);
|
||||
|
||||
setTimeout(() => {
|
||||
console.log('force quit');
|
||||
|
||||
process.exit(1);
|
||||
}, 10000);
|
||||
|
||||
wappalyzer.analyze()
|
||||
.then(json => {
|
||||
process.stdout.write(JSON.stringify(json) + '\n')
|
||||
|
||||
process.exit(0);
|
||||
})
|
||||
.catch(error => {
|
||||
process.stderr.write(error + '\n')
|
||||
Wappalyzer.browsers = {
|
||||
zombie: ZombieBrowser,
|
||||
};
|
||||
|
||||
process.exit(1);
|
||||
});
|
||||
module.exports = Wappalyzer;
|
||||
|
@ -1,542 +0,0 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
abab@^1.0.0:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
|
||||
|
||||
acorn-globals@^1.0.4:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
|
||||
dependencies:
|
||||
acorn "^2.1.0"
|
||||
|
||||
acorn@^2.1.0, acorn@^2.4.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
|
||||
|
||||
ajv@^5.1.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda"
|
||||
dependencies:
|
||||
co "^4.6.0"
|
||||
fast-deep-equal "^1.0.0"
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
json-schema-traverse "^0.3.0"
|
||||
|
||||
asn1@~0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
|
||||
|
||||
assert-plus@1.0.0, assert-plus@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
|
||||
aws-sign2@~0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
||||
|
||||
aws4@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
|
||||
|
||||
babel-runtime@5.8.29:
|
||||
version "5.8.29"
|
||||
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-5.8.29.tgz#4a2052cbcff531788d3a9d6b03cd7f448285f825"
|
||||
dependencies:
|
||||
core-js "^1.0.0"
|
||||
|
||||
bcrypt-pbkdf@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
|
||||
dependencies:
|
||||
tweetnacl "^0.14.3"
|
||||
|
||||
bluebird@^3.0:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
||||
|
||||
boom@4.x.x:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
|
||||
dependencies:
|
||||
hoek "4.x.x"
|
||||
|
||||
boom@5.x.x:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
|
||||
dependencies:
|
||||
hoek "4.x.x"
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||
|
||||
co@^4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
||||
|
||||
combined-stream@^1.0.5, combined-stream@~1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
core-js@^1.0.0:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
|
||||
|
||||
core-util-is@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
|
||||
cryptiles@3.x.x:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
|
||||
dependencies:
|
||||
boom "5.x.x"
|
||||
|
||||
cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
|
||||
|
||||
"cssstyle@>= 0.2.29 < 0.3.0":
|
||||
version "0.2.37"
|
||||
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
|
||||
dependencies:
|
||||
cssom "0.3.x"
|
||||
|
||||
dashdash@^1.12.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
debug@^2.2:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
deep-is@~0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
|
||||
ecc-jsbn@~0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
|
||||
dependencies:
|
||||
jsbn "~0.1.0"
|
||||
|
||||
escodegen@^1.6.1:
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
|
||||
dependencies:
|
||||
esprima "^3.1.3"
|
||||
estraverse "^4.2.0"
|
||||
esutils "^2.0.2"
|
||||
optionator "^0.8.1"
|
||||
optionalDependencies:
|
||||
source-map "~0.5.6"
|
||||
|
||||
esprima@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
|
||||
|
||||
estraverse@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
||||
|
||||
eventsource@^0.1.6:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
|
||||
dependencies:
|
||||
original ">=0.0.5"
|
||||
|
||||
extend@~3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
||||
|
||||
extsprintf@1.3.0, extsprintf@^1.2.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
||||
|
||||
fast-deep-equal@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
|
||||
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||
|
||||
fast-levenshtein@~2.0.4:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
||||
|
||||
forever-agent@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
|
||||
form-data@~2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.5"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
getpass@^0.1.1:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
har-schema@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
||||
|
||||
har-validator@~5.0.3:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
|
||||
dependencies:
|
||||
ajv "^5.1.0"
|
||||
har-schema "^2.0.0"
|
||||
|
||||
hawk@~6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
|
||||
dependencies:
|
||||
boom "4.x.x"
|
||||
cryptiles "3.x.x"
|
||||
hoek "4.x.x"
|
||||
sntp "2.x.x"
|
||||
|
||||
hoek@4.x.x:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
|
||||
|
||||
http-signature@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
jsprim "^1.2.2"
|
||||
sshpk "^1.7.0"
|
||||
|
||||
iconv-lite@^0.4.13:
|
||||
version "0.4.19"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
|
||||
|
||||
is-typedarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||
|
||||
isstream@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
|
||||
jsbn@~0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
|
||||
jsdom@^7.2.2:
|
||||
version "7.2.2"
|
||||
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e"
|
||||
dependencies:
|
||||
abab "^1.0.0"
|
||||
acorn "^2.4.0"
|
||||
acorn-globals "^1.0.4"
|
||||
cssom ">= 0.3.0 < 0.4.0"
|
||||
cssstyle ">= 0.2.29 < 0.3.0"
|
||||
escodegen "^1.6.1"
|
||||
nwmatcher ">= 1.3.7 < 2.0.0"
|
||||
parse5 "^1.5.1"
|
||||
request "^2.55.0"
|
||||
sax "^1.1.4"
|
||||
symbol-tree ">= 3.1.0 < 4.0.0"
|
||||
tough-cookie "^2.2.0"
|
||||
webidl-conversions "^2.0.0"
|
||||
whatwg-url-compat "~0.6.5"
|
||||
xml-name-validator ">= 2.0.1 < 3.0.0"
|
||||
|
||||
json-schema-traverse@^0.3.0:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
|
||||
|
||||
json-schema@0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
|
||||
|
||||
json-stringify-safe@~5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||
|
||||
jsprim@^1.2.2:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
|
||||
dependencies:
|
||||
assert-plus "1.0.0"
|
||||
extsprintf "1.3.0"
|
||||
json-schema "0.2.3"
|
||||
verror "1.10.0"
|
||||
|
||||
levn@~0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
|
||||
dependencies:
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
lodash@^3.10.1:
|
||||
version "3.10.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
|
||||
|
||||
mime-db@~1.30.0:
|
||||
version "1.30.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
|
||||
|
||||
mime-types@^2.1.12, mime-types@~2.1.17:
|
||||
version "2.1.17"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
|
||||
dependencies:
|
||||
mime-db "~1.30.0"
|
||||
|
||||
mime@^1.3.4:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
|
||||
ms@^0.7.1:
|
||||
version "0.7.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
|
||||
|
||||
"nwmatcher@>= 1.3.7 < 2.0.0":
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
|
||||
|
||||
oauth-sign@~0.8.2:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
|
||||
|
||||
optionator@^0.8.1:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
||||
dependencies:
|
||||
deep-is "~0.1.3"
|
||||
fast-levenshtein "~2.0.4"
|
||||
levn "~0.3.0"
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
wordwrap "~1.0.0"
|
||||
|
||||
options@>=0.0.5:
|
||||
version "0.0.6"
|
||||
resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
|
||||
|
||||
original@>=0.0.5:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
|
||||
dependencies:
|
||||
url-parse "1.0.x"
|
||||
|
||||
parse5@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
|
||||
|
||||
performance-now@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||
|
||||
prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
|
||||
punycode@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
||||
|
||||
qs@~6.5.1:
|
||||
version "6.5.1"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
|
||||
|
||||
querystringify@0.0.x:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
|
||||
|
||||
request@^2.55.0, request@^2.65.0, request@^2.81.0:
|
||||
version "2.83.0"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
|
||||
dependencies:
|
||||
aws-sign2 "~0.7.0"
|
||||
aws4 "^1.6.0"
|
||||
caseless "~0.12.0"
|
||||
combined-stream "~1.0.5"
|
||||
extend "~3.0.1"
|
||||
forever-agent "~0.6.1"
|
||||
form-data "~2.3.1"
|
||||
har-validator "~5.0.3"
|
||||
hawk "~6.0.2"
|
||||
http-signature "~1.2.0"
|
||||
is-typedarray "~1.0.0"
|
||||
isstream "~0.1.2"
|
||||
json-stringify-safe "~5.0.1"
|
||||
mime-types "~2.1.17"
|
||||
oauth-sign "~0.8.2"
|
||||
performance-now "^2.1.0"
|
||||
qs "~6.5.1"
|
||||
safe-buffer "^5.1.1"
|
||||
stringstream "~0.0.5"
|
||||
tough-cookie "~2.3.3"
|
||||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.1.0"
|
||||
|
||||
requires-port@1.0.x:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
||||
|
||||
safe-buffer@^5.0.1, safe-buffer@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
||||
|
||||
sax@^1.1.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
|
||||
sntp@2.x.x:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
|
||||
dependencies:
|
||||
hoek "4.x.x"
|
||||
|
||||
source-map@~0.5.6:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||
|
||||
sshpk@^1.7.0:
|
||||
version "1.13.1"
|
||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
|
||||
dependencies:
|
||||
asn1 "~0.2.3"
|
||||
assert-plus "^1.0.0"
|
||||
dashdash "^1.12.0"
|
||||
getpass "^0.1.1"
|
||||
optionalDependencies:
|
||||
bcrypt-pbkdf "^1.0.0"
|
||||
ecc-jsbn "~0.1.1"
|
||||
jsbn "~0.1.0"
|
||||
tweetnacl "~0.14.0"
|
||||
|
||||
stringstream@~0.0.5:
|
||||
version "0.0.5"
|
||||
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
|
||||
|
||||
"symbol-tree@>= 3.1.0 < 4.0.0":
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
|
||||
|
||||
tough-cookie@^2.2.0, tough-cookie@~2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
|
||||
dependencies:
|
||||
punycode "^1.4.1"
|
||||
|
||||
tr46@~0.0.1:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
||||
version "0.14.5"
|
||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||
|
||||
type-check@~0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
||||
dependencies:
|
||||
prelude-ls "~1.1.2"
|
||||
|
||||
ultron@1.0.x:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
|
||||
|
||||
url-parse@1.0.x:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
|
||||
dependencies:
|
||||
querystringify "0.0.x"
|
||||
requires-port "1.0.x"
|
||||
|
||||
uuid@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
|
||||
|
||||
verror@1.10.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
core-util-is "1.0.2"
|
||||
extsprintf "^1.2.0"
|
||||
|
||||
webidl-conversions@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506"
|
||||
|
||||
whatwg-url-compat@~0.6.5:
|
||||
version "0.6.5"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf"
|
||||
dependencies:
|
||||
tr46 "~0.0.1"
|
||||
|
||||
wordwrap@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
|
||||
ws@^1.0.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61"
|
||||
dependencies:
|
||||
options ">=0.0.5"
|
||||
ultron "1.0.x"
|
||||
|
||||
"xml-name-validator@>= 2.0.1 < 3.0.0":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
|
||||
|
||||
zombie@^5.0.7:
|
||||
version "5.0.7"
|
||||
resolved "https://registry.yarnpkg.com/zombie/-/zombie-5.0.7.tgz#215ba90b4b97f75b796c935affcc63d68cbac772"
|
||||
dependencies:
|
||||
babel-runtime "5.8.29"
|
||||
bluebird "^3.0"
|
||||
debug "^2.2"
|
||||
eventsource "^0.1.6"
|
||||
iconv-lite "^0.4.13"
|
||||
jsdom "^7.2.2"
|
||||
lodash "^3.10.1"
|
||||
mime "^1.3.4"
|
||||
ms "^0.7.1"
|
||||
request "^2.65.0"
|
||||
tough-cookie "^2.2.0"
|
||||
ws "^1.0.1"
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"github": { "message": "چنگال زدن Wappalyzer در گیتهاب!" },
|
||||
"twitter": { "message": "دنبال کردن Wappalyzer در توییتر" },
|
||||
"website": { "message": "رفتن به wappalyzer.com" },
|
||||
"options": { "message": "گزینهها" },
|
||||
"optionsSave": { "message": "ذخیره گزینهها" },
|
||||
"optionsSaved": { "message": "ذخیره شد" },
|
||||
"optionUpgradeMessage": { "message": "درباره ارتقا به من بگویید" },
|
||||
"optionDynamicIcon": { "message": "از نماد فن آوری به جای علامت Wappalyzer استفاده شود" },
|
||||
"optionTracking": { "message": "ارسال فن آوری های شناسایی شده به صورت ناشناس به wappalyzer.com" },
|
||||
"nothingToDo": { "message": "هیچ چیز برای انجام اینجا نیست." },
|
||||
"noAppsDetected": { "message": "هیچ فنآوری شناسایی نشده است." },
|
||||
"categoryPin": { "message": "همیشه نماد را نشان بده" },
|
||||
"termsAccept": { "message": "قبول" },
|
||||
"termsContent": { "message": "این افزونه اطلاعات وبسایتهای بازدید شده توسط شما را به صورت ناشناس ارسال میکند، مانند آدرس سایت و تکنولوژیهای استفاده شده در آن سایت را ارسال میکند. اطلاعات بیشتر در <a href='https://www.wappalyzer.com'>wappalyzer.com</a>. شما میتوانید این افزونه را غیرفعال کنید." },
|
||||
"categoryName1": { "message": "سیستم مدیریت محتوا" },
|
||||
"categoryName2": { "message": "انجمن پیام" },
|
||||
"categoryName3": { "message": "مدیر پایگاهداده" },
|
||||
"categoryName4": { "message": "ابزار مستند سازی" },
|
||||
"categoryName5": { "message": "ابزارک" },
|
||||
"categoryName6": { "message": "تجارت الکترونیک" },
|
||||
"categoryName7": { "message": "گالری تصویر" },
|
||||
"categoryName8": { "message": "ویکیها" },
|
||||
"categoryName9": { "message": "پنلهای میزبانی" },
|
||||
"categoryName10": { "message": "تجزیه و تحلیلها" },
|
||||
"categoryName11": { "message": "بلاگ" },
|
||||
"categoryName12": { "message": "چارچوب جاوا اسکریپت" },
|
||||
"categoryName13": { "message": "ردیاب مشکل" },
|
||||
"categoryName14": { "message": "پخش کننده ویدیویی" },
|
||||
"categoryName15": { "message": "سیستم نظرسنجی" },
|
||||
"categoryName16": { "message": "کپچا" },
|
||||
"categoryName17": { "message": "اسکریپ فونت" },
|
||||
"categoryName18": { "message": "چارچوب وب" },
|
||||
"categoryName19": { "message": "متفرقه" },
|
||||
"categoryName20": { "message": "ویرایشگر" },
|
||||
"categoryName21": { "message": "سامانه مدیریت آموزشی" },
|
||||
"categoryName22": { "message": "وب سرور" },
|
||||
"categoryName23": { "message": "ابزار کش" },
|
||||
"categoryName24": { "message": "ویرایشگر متن توانمند" },
|
||||
"categoryName25": { "message": "گرافیکهای جاوا اسکریپت" },
|
||||
"categoryName26": { "message": "چارچوب موبایل" },
|
||||
"categoryName27": { "message": "زبان برنامه نویسی" },
|
||||
"categoryName28": { "message": "سیستم عامل" },
|
||||
"categoryName29": { "message": "موتور جستجو" },
|
||||
"categoryName30": { "message": "پست الکترونیکی تحت وب" },
|
||||
"categoryName31": { "message": "شبکه تحویل محتوا" },
|
||||
"categoryName32": { "message": "اتوماسیون بازاریابی" },
|
||||
"categoryName33": { "message": "افزودنی وبسرور" },
|
||||
"categoryName34": { "message": "پایگاهداده" },
|
||||
"categoryName35": { "message": "نقشه" },
|
||||
"categoryName36": { "message": "شبکه تبلیغاتی" },
|
||||
"categoryName37": { "message": "خدمات شبکه" },
|
||||
"categoryName38": { "message": "سرور رسانه" },
|
||||
"categoryName39": { "message": "وبکم" },
|
||||
"categoryName40": { "message": "پرینتر" },
|
||||
"categoryName41": { "message": "پردازنده پرداخت" },
|
||||
"categoryName42": { "message": "مدیر برچسب" },
|
||||
"categoryName43": { "message": "Paywall" },
|
||||
"categoryName44": { "message": "سیستم ساخت/CI" },
|
||||
"categoryName45": { "message": "سیستم SCADA" },
|
||||
"categoryName46": { "message": "دسترسی از راه دور" },
|
||||
"categoryName47": { "message": "ابزار توسعه" },
|
||||
"categoryName48": { "message": "ذخیره سازی شبکه" },
|
||||
"categoryName49": { "message": "خوانندهای خوراک" },
|
||||
"categoryName50": { "message": "سیستم مدیریت سند" },
|
||||
"categoryName51": { "message": "سازنده صفحات Landing" },
|
||||
"categoryName52": { "message": "گفتگوی زنده" },
|
||||
"categoryName53": { "message": "مدیریت ارتباط با مشتری" },
|
||||
"categoryName54": { "message": "بهینه سازی موتور جستجو" },
|
||||
"categoryName55": { "message": "حسابداری" },
|
||||
"categoryName56": { "message": "کریپتوماینر" },
|
||||
"categoryName57": { "message": "تولید کننده سایت ایستا" },
|
||||
"categoryName58": { "message": "آن بوردینگ کاربر" },
|
||||
"categoryName59": { "message": "کتابخانههای جاوا اسکریپت" },
|
||||
"categoryName60": { "message": "کانتینرها" },
|
||||
"categoryName61": { "message": "SaaS" },
|
||||
"categoryName62": { "message": "PaaS" },
|
||||
"categoryName63": { "message": "IaaS" },
|
||||
"categoryName64": { "message": "Reverse Proxy" },
|
||||
"categoryName65": { "message": "Load Balancer" }
|
||||
}
|
@ -1,71 +1,82 @@
|
||||
{
|
||||
"github": { "message": "Fork Wappalyzer no GitHub!" },
|
||||
"noAppsDetected": { "message": "Não foi detetada nenhuma apliação." },
|
||||
"nothingToDo": { "message": "Nada a fazer aqui." },
|
||||
"optionTracking": { "message": "Enviar anonimamente relatorios sobre as apliações detetadas ao wappalyzer.com para investigação" },
|
||||
"optionUpgradeMessage": { "message": "Atualizações automaticas" },
|
||||
"optionDynamicIcon": { "message": "Utilizar o icone da aplicação em vez do logotido do Wappalyzer" },
|
||||
"options": { "message": "Definições" },
|
||||
"optionsSave": { "message": "Guardar as opções" },
|
||||
"optionsSaved": { "message": "Guardado" },
|
||||
"twitter": { "message": "Seguir o Wappalyzer no Twitter" },
|
||||
"website": { "message": "Ir para wappalyzer.com" },
|
||||
"categoryPin": { "message": "Always show icon" },
|
||||
"categoryName1": { "message": "Sistema de gerenciamento de conteudo(CMS)" },
|
||||
"categoryName2": { "message": "Forum" },
|
||||
"categoryName3": { "message": "Gestor de base de dados" },
|
||||
"categoryName4": { "message": "Ferramenta de documentação" },
|
||||
"categoryName5": { "message": "Widget" },
|
||||
"categoryName6": { "message": "Loja online" },
|
||||
"categoryName7": { "message": "Galeria de fotografias" },
|
||||
"categoryName8": { "message": "Wiki" },
|
||||
"categoryName9": { "message": "Gestor de servidores" },
|
||||
"categoryName10": { "message": "Ferramenta de estatisticas" },
|
||||
"categoryName11": { "message": "Blog" },
|
||||
"categoryName12": { "message": "Framework JavaScript" },
|
||||
"categoryName13": { "message": "Ferramenta de seguimento de problemas" },
|
||||
"categoryName14": { "message": "Leitor de videos" },
|
||||
"categoryName15": { "message": "Sistemas de comentários" },
|
||||
"categoryName16": { "message": "Captcha" },
|
||||
"categoryName17": { "message": "Script de policia" },
|
||||
"categoryName18": { "message": "Framework WEB" },
|
||||
"categoryName19": { "message": "Diversos" },
|
||||
"categoryName20": { "message": "Editor" },
|
||||
"categoryName21": { "message": "Sistema de gestão de Aprendizagem(LMS)" },
|
||||
"categoryName22": { "message": "Servidor WEB" },
|
||||
"categoryName23": { "message": "Ferramenta de cache" },
|
||||
"categoryName24": { "message": "Editor WYSIWYG" },
|
||||
"categoryName25": { "message": "Grafismo JavaScript" },
|
||||
"categoryName26": { "message": "Framework para dispositivos mobile" },
|
||||
"categoryName27": { "message": "Linguagem de programação" },
|
||||
"categoryName28": { "message": "Sistema Operativo" },
|
||||
"categoryName29": { "message": "Motor de pesquisa" },
|
||||
"categoryName30": { "message": "WebMail" },
|
||||
"categoryName31": { "message": "Rede de distribuição de conteudo(CDN)" },
|
||||
"categoryName32": { "message": "Sistema de vendas" },
|
||||
"categoryName33": { "message": "Extensão do servidor WEB" },
|
||||
"categoryName34": { "message": "Base de dados" },
|
||||
"categoryName35": { "message": "Mapa" },
|
||||
"categoryName36": { "message": "Rede de publicidade" },
|
||||
"categoryName37": { "message": "Dispositivo de rede" },
|
||||
"categoryName38": { "message": "Servidor multimédia" },
|
||||
"categoryName39": { "message": "Webcam" },
|
||||
"categoryName40": { "message": "Impressora" },
|
||||
"categoryName41": { "message": "Serviço de pagamento" },
|
||||
"categoryName42": { "message": "Gestor de Tags" },
|
||||
"categoryName43": { "message": "Sistema de assinaturas paga(Paywall)" },
|
||||
"categoryName44": { "message": "Sistema CI" },
|
||||
"categoryName45": { "message": "Sistema SCADA" },
|
||||
"categoryName46": { "message": "Acesso à distancia" },
|
||||
"categoryName47": { "message": "Ferramenta de desenvolvimento" },
|
||||
"categoryName48": { "message": "Rede de armazenamento" },
|
||||
"categoryName49": { "message": "Leitor RSS" },
|
||||
"categoryName50": { "message": "Sistema de gestão de documentos" },
|
||||
"categoryName51": { "message": "Landing Page Builder" },
|
||||
"categoryName52": { "message": "Chat em direto" },
|
||||
"categoryName53": { "message": "Sistemas de relação com o cliente(CRM)" },
|
||||
"categoryName54": { "message": "Otimização para motores de pesquisa(SEO)" },
|
||||
"categoryName55": { "message": "Accounting" },
|
||||
"categoryName56": { "message": "Cryptominer" },
|
||||
"categoryName57": { "message": "Static Site Generator" }
|
||||
"github": { "message": "Fork Wappalyzer no GitHub!" },
|
||||
"noAppsDetected": { "message": "Não foi detectada nenhuma tecnologia." },
|
||||
"nothingToDo": { "message": "Nada a fazer aqui." },
|
||||
"optionDynamicIcon": { "message": "Utilizar o ícone da tecnologia em vez do logótipo do Wappalyzer" },
|
||||
"optionTracking": { "message": "Envie anonimamente tecnologias identificadas para wappalyzer.com" },
|
||||
"optionUpgradeMessage": { "message": "Fale-me sobre actualizações" },
|
||||
"options": { "message": "Opções" },
|
||||
"optionsSave": { "message": "Opções de Guardar" },
|
||||
"optionsSaved": { "message": "Guardado" },
|
||||
"twitter": { "message": "Seguir Wappalyzer no Twitter" },
|
||||
"website": { "message": "Ir para wappalyzer.com" },
|
||||
"categoryPin": { "message": "Mostrar sempre ícone" },
|
||||
"termsAccept": { "message": "Aceitar" },
|
||||
"termsContent": { "message": "Esta extensão envia informações anónimas sobre os sites que visitas, incluindo o nome de domínio e as tecnologias identificadas, para o <a href='https://www.wappalyzer.com'>wappalyzer.com</a>. Isso pode ser desativado nas configurações." },
|
||||
"privacyPolicy": { "message": "Políticas de Privacidade" },
|
||||
"categoryName1": { "message": "CMS" },
|
||||
"categoryName2": { "message": "Fórum" },
|
||||
"categoryName3": { "message": "Gestor de Base de Dados" },
|
||||
"categoryName4": { "message": "Ferramenta de Documentação" },
|
||||
"categoryName5": { "message": "Widget" },
|
||||
"categoryName6": { "message": "Ecommerce" },
|
||||
"categoryName7": { "message": "Galeria de Fotos" },
|
||||
"categoryName8": { "message": "Wikis" },
|
||||
"categoryName9": { "message": "Painéis de Hospedagem" },
|
||||
"categoryName10": { "message": "Analítica" },
|
||||
"categoryName11": { "message": "Blog" },
|
||||
"categoryName12": { "message": "Framework JavaScript" },
|
||||
"categoryName13": { "message": "Localizador de Problemas" },
|
||||
"categoryName14": { "message": "Leitor Vídeo" },
|
||||
"categoryName15": { "message": "Sistema de Comentários" },
|
||||
"categoryName16": { "message": "Captcha" },
|
||||
"categoryName17": { "message": "Tipos de Letra" },
|
||||
"categoryName18": { "message": "Framework Web" },
|
||||
"categoryName19": { "message": "Diversos" },
|
||||
"categoryName20": { "message": "Editor" },
|
||||
"categoryName21": { "message": "LMS" },
|
||||
"categoryName22": { "message": "Servidor Web" },
|
||||
"categoryName23": { "message": "Ferramenta de Cache" },
|
||||
"categoryName24": { "message": "Editor WYSIWYG" },
|
||||
"categoryName25": { "message": "Gráficos JavaScript" },
|
||||
"categoryName26": { "message": "Framework Mobile" },
|
||||
"categoryName27": { "message": "Linguagem de Programação" },
|
||||
"categoryName28": { "message": "Sistema Operativo" },
|
||||
"categoryName29": { "message": "Motor de Busca" },
|
||||
"categoryName30": { "message": "WebMail" },
|
||||
"categoryName31": { "message": "CDN" },
|
||||
"categoryName32": { "message": "Automação de Marketing" },
|
||||
"categoryName33": { "message": "Extensão de Servidor Web" },
|
||||
"categoryName34": { "message": "Base de Dados" },
|
||||
"categoryName35": { "message": "Mapa" },
|
||||
"categoryName36": { "message": "Rede de Publicidade" },
|
||||
"categoryName37": { "message": "Serviço de Rede" },
|
||||
"categoryName38": { "message": "Servidor de Média" },
|
||||
"categoryName39": { "message": "Webcam" },
|
||||
"categoryName40": { "message": "Impressão" },
|
||||
"categoryName41": { "message": "Processador de Pagamento" },
|
||||
"categoryName42": { "message": "Gestor de Etiquetas" },
|
||||
"categoryName43": { "message": "Sistema de Subscrição Paga" },
|
||||
"categoryName44": { "message": "Sistema Build/CI" },
|
||||
"categoryName45": { "message": "Sistema SCADA" },
|
||||
"categoryName46": { "message": "Acesso Remoto" },
|
||||
"categoryName47": { "message": "Ferramenta de Desenvolvimento" },
|
||||
"categoryName48": { "message": "Rede de Armazenamento" },
|
||||
"categoryName49": { "message": "Leitores de Feed" },
|
||||
"categoryName50": { "message": "Sistema de Gestão de Documentos" },
|
||||
"categoryName51": { "message": "Criador de Páginas de Destino" },
|
||||
"categoryName52": { "message": "Chat ao Vivo" },
|
||||
"categoryName53": { "message": "CRM" },
|
||||
"categoryName54": { "message": "SEO" },
|
||||
"categoryName55": { "message": "Contabilidade" },
|
||||
"categoryName56": { "message": "Cryptominer" },
|
||||
"categoryName57": { "message": "Gerador de Site Estático" },
|
||||
"categoryName58": { "message": "User Onboarding" },
|
||||
"categoryName59": { "message": "Bibliotecas de JavaScript" },
|
||||
"categoryName60": { "message": "Containers" },
|
||||
"categoryName61": { "message": "SaaS" },
|
||||
"categoryName62": { "message": "PaaS" },
|
||||
"categoryName63": { "message": "IaaS" },
|
||||
"categoryName64": { "message": "Reverse Proxy" },
|
||||
"categoryName65": { "message": "Load Balancer" }
|
||||
}
|
||||
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"github": { "message": "Fork Wappalyzer no GitHub!" },
|
||||
"twitter": { "message": "Seguir o Wappalyzer no Twitter" },
|
||||
"website": { "message": "Ir para wappalyzer.com" },
|
||||
"options": { "message": "Configurações" },
|
||||
"optionsSave": { "message": "Salvar configurações" },
|
||||
"optionsSaved": { "message": "Salvo" },
|
||||
"optionUpgradeMessage": { "message": "Atualizações automáticas" },
|
||||
"optionDynamicIcon": { "message": "Utilizar o ícone da tecnologia ao invés da logo do Wappalyzer" },
|
||||
"optionTracking": { "message": "Enviar relatórios anônimos para wappalyzer.com sobre tecnologias identificadas" },
|
||||
"nothingToDo": { "message": "Nada a fazer aqui." },
|
||||
"noAppsDetected": { "message": "Nenhuma tecnologia identificada." },
|
||||
"categoryPin": { "message": "Sempre mostrar ícone" },
|
||||
"termsAccept": { "message": "Accept" },
|
||||
"termsContent": { "message": "This extension sends anonymous information about websites you visit, including domain name and identified technologies, to <a href='https://www.wappalyzer.com'>wappalyzer.com</a>. This can be disabled in the settings." },
|
||||
"categoryName1": { "message": "CMS" },
|
||||
"categoryName2": { "message": "Fórum" },
|
||||
"categoryName3": { "message": "Gestão de banco de dados" },
|
||||
"categoryName4": { "message": "Ferramenta de documentação" },
|
||||
"categoryName5": { "message": "Widget" },
|
||||
"categoryName6": { "message": "Ecommerce" },
|
||||
"categoryName7": { "message": "Galeria de fotografias" },
|
||||
"categoryName8": { "message": "Wiki" },
|
||||
"categoryName9": { "message": "Gestão de servidores" },
|
||||
"categoryName10": { "message": "Ferramenta estatística" },
|
||||
"categoryName11": { "message": "Blog" },
|
||||
"categoryName12": { "message": "Framework JavaScript" },
|
||||
"categoryName13": { "message": "Rastreamento de problemas" },
|
||||
"categoryName14": { "message": "Reprodutor de vídeo" },
|
||||
"categoryName15": { "message": "Sistema de comentários" },
|
||||
"categoryName16": { "message": "Captcha" },
|
||||
"categoryName17": { "message": "Script de fonte" },
|
||||
"categoryName18": { "message": "Framework web" },
|
||||
"categoryName19": { "message": "Diversos" },
|
||||
"categoryName20": { "message": "Editor" },
|
||||
"categoryName21": { "message": "LMS" },
|
||||
"categoryName22": { "message": "Servidor web" },
|
||||
"categoryName23": { "message": "Ferramenta de cache" },
|
||||
"categoryName24": { "message": "Editor WYSIWYG" },
|
||||
"categoryName25": { "message": "Gráfico JavaScript" },
|
||||
"categoryName26": { "message": "Framework mobile" },
|
||||
"categoryName27": { "message": "Linguagem de programação" },
|
||||
"categoryName28": { "message": "Sistema Operacional" },
|
||||
"categoryName29": { "message": "Motor de pesquisa" },
|
||||
"categoryName30": { "message": "Web Mail" },
|
||||
"categoryName31": { "message": "CDN" },
|
||||
"categoryName32": { "message": "Automação de marketing" },
|
||||
"categoryName33": { "message": "Extensão de servidor web" },
|
||||
"categoryName34": { "message": "Banco de dados" },
|
||||
"categoryName35": { "message": "Mapa" },
|
||||
"categoryName36": { "message": "Rede de publicidade" },
|
||||
"categoryName37": { "message": "Serviço de rede" },
|
||||
"categoryName38": { "message": "Servidor de mídia" },
|
||||
"categoryName39": { "message": "Webcam" },
|
||||
"categoryName40": { "message": "Impressora" },
|
||||
"categoryName41": { "message": "Serviço de pagamento" },
|
||||
"categoryName42": { "message": "Gestor de Tags" },
|
||||
"categoryName43": { "message": "Paywall" },
|
||||
"categoryName44": { "message": "Sistema de Build/CI" },
|
||||
"categoryName45": { "message": "Sistema SCADA" },
|
||||
"categoryName46": { "message": "Acesso remoto" },
|
||||
"categoryName47": { "message": "Ferramenta de desenvolvimento" },
|
||||
"categoryName48": { "message": "Armazenamento na rede" },
|
||||
"categoryName49": { "message": "Leitor de feed" },
|
||||
"categoryName50": { "message": "Sistema de gestão de documentos" },
|
||||
"categoryName51": { "message": "Landing Page Builder" },
|
||||
"categoryName52": { "message": "Chat direto" },
|
||||
"categoryName53": { "message": "CRM" },
|
||||
"categoryName54": { "message": "SEO" },
|
||||
"categoryName55": { "message": "Contabilidade" },
|
||||
"categoryName56": { "message": "Minerador de cryptomoedas" },
|
||||
"categoryName57": { "message": "Gerador de sites estáticos" },
|
||||
"categoryName58": { "message": "Integração com usuário" },
|
||||
"categoryName59": { "message": "Biblioteca JavaScript" },
|
||||
"categoryName60": { "message": "Containers" },
|
||||
"categoryName61": { "message": "SaaS" },
|
||||
"categoryName62": { "message": "PaaS" },
|
||||
"categoryName63": { "message": "IaaS" },
|
||||
"categoryName64": { "message": "Reverse Proxy" },
|
||||
"categoryName65": { "message": "Load Balancer" }
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
jsonToDOM.namespaces = {
|
||||
html: "http://www.w3.org/1999/xhtml",
|
||||
xul: "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
};
|
||||
|
||||
jsonToDOM.defaultNamespace = jsonToDOM.namespaces.html;
|
||||
|
||||
function jsonToDOM(jsonTemplate, doc, nodes) {
|
||||
function namespace(name) {
|
||||
var reElemNameParts = /^(?:(.*):)?(.*)$/.exec(name);
|
||||
return { namespace: jsonToDOM.namespaces[reElemNameParts[1]], shortName: reElemNameParts[2] };
|
||||
}
|
||||
|
||||
// Note that 'elemNameOrArray' is: either the full element name (eg. [html:]div) or an array of elements in JSON notation
|
||||
function tag(elemNameOrArray, elemAttr) {
|
||||
// Array of elements? Parse each one...
|
||||
if (Array.isArray(elemNameOrArray)) {
|
||||
var frag = doc.createDocumentFragment();
|
||||
Array.prototype.forEach.call(arguments, function(thisElem) {
|
||||
frag.appendChild(tag.apply(null, thisElem));
|
||||
});
|
||||
return frag;
|
||||
}
|
||||
|
||||
// Single element? Parse element namespace prefix (if none exists, default to defaultNamespace), and create element
|
||||
var elemNs = namespace(elemNameOrArray);
|
||||
var elem = doc.createElementNS(elemNs.namespace || jsonToDOM.defaultNamespace, elemNs.shortName);
|
||||
|
||||
// Set element's attributes and/or callback functions (eg. onclick)
|
||||
for (var key in elemAttr) {
|
||||
var val = elemAttr[key];
|
||||
if (nodes && key == "key") {
|
||||
nodes[val] = elem;
|
||||
continue;
|
||||
}
|
||||
|
||||
var attrNs = namespace(key);
|
||||
if (typeof val == "function") {
|
||||
// Special case for function attributes; don't just add them as 'on...' attributes, but as events, using addEventListener
|
||||
elem.addEventListener(key.replace(/^on/, ""), val, false);
|
||||
}
|
||||
else {
|
||||
// Note that the default namespace for XML attributes is, and should be, blank (ie. they're not in any namespace)
|
||||
elem.setAttributeNS(attrNs.namespace || "", attrNs.shortName, val);
|
||||
}
|
||||
}
|
||||
|
||||
// Create and append this element's children
|
||||
var childElems = Array.prototype.slice.call(arguments, 2);
|
||||
childElems.forEach(function(childElem) {
|
||||
if (childElem != null) {
|
||||
elem.appendChild(
|
||||
childElem instanceof doc.defaultView.Node ? childElem :
|
||||
Array.isArray(childElem) ? tag.apply(null, childElem) :
|
||||
doc.createTextNode(childElem));
|
||||
}
|
||||
});
|
||||
|
||||
return elem;
|
||||
}
|
||||
|
||||
return tag.apply(null, jsonTemplate);
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
jsonToDOM.namespaces = {
|
||||
html: 'http://www.w3.org/1999/xhtml',
|
||||
xul: 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul',
|
||||
};
|
||||
|
||||
jsonToDOM.defaultNamespace = jsonToDOM.namespaces.html;
|
||||
|
||||
function jsonToDOM(jsonTemplate, doc, nodes) {
|
||||
function namespace(name) {
|
||||
const reElemNameParts = /^(?:(.*):)?(.*)$/.exec(name);
|
||||
return { namespace: jsonToDOM.namespaces[reElemNameParts[1]], shortName: reElemNameParts[2] };
|
||||
}
|
||||
|
||||
// Note that 'elemNameOrArray' is: either the full element name (eg. [html:]div) or an array of elements in JSON notation
|
||||
function tag(elemNameOrArray, elemAttr) {
|
||||
// Array of elements? Parse each one...
|
||||
if (Array.isArray(elemNameOrArray)) {
|
||||
const frag = doc.createDocumentFragment();
|
||||
Array.prototype.forEach.call(arguments, (thisElem) => {
|
||||
frag.appendChild(tag(...thisElem));
|
||||
});
|
||||
return frag;
|
||||
}
|
||||
|
||||
// Single element? Parse element namespace prefix (if none exists, default to defaultNamespace), and create element
|
||||
const elemNs = namespace(elemNameOrArray);
|
||||
const elem = doc.createElementNS(elemNs.namespace || jsonToDOM.defaultNamespace, elemNs.shortName);
|
||||
|
||||
// Set element's attributes and/or callback functions (eg. onclick)
|
||||
for (const key in elemAttr) {
|
||||
const val = elemAttr[key];
|
||||
if (nodes && key == 'key') {
|
||||
nodes[val] = elem;
|
||||
continue;
|
||||
}
|
||||
|
||||
const attrNs = namespace(key);
|
||||
if (typeof val === 'function') {
|
||||
// Special case for function attributes; don't just add them as 'on...' attributes, but as events, using addEventListener
|
||||
elem.addEventListener(key.replace(/^on/, ''), val, false);
|
||||
} else {
|
||||
// Note that the default namespace for XML attributes is, and should be, blank (ie. they're not in any namespace)
|
||||
elem.setAttributeNS(attrNs.namespace || '', attrNs.shortName, val);
|
||||
}
|
||||
}
|
||||
|
||||
// Create and append this element's children
|
||||
const childElems = Array.prototype.slice.call(arguments, 2);
|
||||
childElems.forEach((childElem) => {
|
||||
if (childElem != null) {
|
||||
elem.appendChild(
|
||||
childElem instanceof doc.defaultView.Node ? childElem
|
||||
: Array.isArray(childElem) ? tag(...childElem)
|
||||
: doc.createTextNode(childElem),
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
return elem;
|
||||
}
|
||||
|
||||
return tag(...jsonTemplate);
|
||||
}
|
@ -1,69 +1,96 @@
|
||||
/** global: browser */
|
||||
/** global: Wappalyzer */
|
||||
/* globals browser Wappalyzer */
|
||||
/* eslint-env browser */
|
||||
|
||||
const wappalyzer = new Wappalyzer();
|
||||
|
||||
function getOption(name, defaultValue, callback) {
|
||||
browser.storage.local.get(name)
|
||||
.then(item => {
|
||||
callback(item.hasOwnProperty(name) ? item[name] : defaultValue);
|
||||
});
|
||||
/**
|
||||
* Get a value from localStorage
|
||||
*/
|
||||
function getOption(name, defaultValue = null) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
let value = defaultValue;
|
||||
|
||||
try {
|
||||
const option = await browser.storage.local.get(name);
|
||||
|
||||
if (option[name] !== undefined) {
|
||||
value = option[name];
|
||||
}
|
||||
} catch (error) {
|
||||
wappalyzer.log(error.message, 'driver', 'error');
|
||||
|
||||
return reject(error.message);
|
||||
}
|
||||
|
||||
return resolve(value);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a value in localStorage
|
||||
*/
|
||||
function setOption(name, value) {
|
||||
var option = {};
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
await browser.storage.local.set({ [name]: value });
|
||||
} catch (error) {
|
||||
wappalyzer.log(error.message, 'driver', 'error');
|
||||
|
||||
option[name] = value;
|
||||
return reject(error.message);
|
||||
}
|
||||
|
||||
browser.storage.local.set(option);
|
||||
return resolve();
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
var nodes = document.querySelectorAll('[data-i18n]');
|
||||
document.addEventListener('DOMContentLoaded', async () => {
|
||||
const nodes = document.querySelectorAll('[data-i18n]');
|
||||
|
||||
Array.prototype.forEach.call(nodes, node => {
|
||||
Array.prototype.forEach.call(nodes, (node) => {
|
||||
node.childNodes[0].nodeValue = browser.i18n.getMessage(node.dataset.i18n);
|
||||
});
|
||||
|
||||
document.querySelector('#github').addEventListener('click', () => {
|
||||
open(wappalyzer.config.githubURL);
|
||||
window.open(wappalyzer.config.githubURL);
|
||||
});
|
||||
|
||||
document.querySelector('#twitter').addEventListener('click', () => {
|
||||
open(wappalyzer.config.twitterURL);
|
||||
window.open(wappalyzer.config.twitterURL);
|
||||
});
|
||||
|
||||
document.querySelector('#wappalyzer').addEventListener('click', () => {
|
||||
open(wappalyzer.config.websiteURL);
|
||||
window.open(wappalyzer.config.websiteURL);
|
||||
});
|
||||
|
||||
getOption('upgradeMessage', true, value => {
|
||||
const el = document.querySelector('#option-upgrade-message');
|
||||
let el;
|
||||
let value;
|
||||
|
||||
el.checked = value;
|
||||
// Upgrade message
|
||||
value = await getOption('upgradeMessage', true);
|
||||
|
||||
el.addEventListener('change', () => {
|
||||
setOption('upgradeMessage', el.checked);
|
||||
});
|
||||
});
|
||||
el = document.querySelector('#option-upgrade-message');
|
||||
|
||||
getOption('dynamicIcon', true, value => {
|
||||
const el = document.querySelector('#option-dynamic-icon');
|
||||
el.checked = value;
|
||||
|
||||
el.checked = value;
|
||||
el.addEventListener('change', e => setOption('upgradeMessage', e.target.checked));
|
||||
|
||||
el.addEventListener('change', () => {
|
||||
setOption('dynamicIcon', el.checked);
|
||||
});
|
||||
});
|
||||
// Dynamic icon
|
||||
value = await getOption('dynamicIcon', true);
|
||||
|
||||
getOption('tracking', true, value => {
|
||||
const el = document.querySelector('#option-tracking');
|
||||
el = document.querySelector('#option-dynamic-icon');
|
||||
|
||||
el.checked = value;
|
||||
el.checked = value;
|
||||
|
||||
el.addEventListener('change', () => {
|
||||
setOption('tracking', el.checked);
|
||||
});
|
||||
});
|
||||
el.addEventListener('change', e => setOption('dynamicIcon', e.target.checked));
|
||||
|
||||
// Tracking
|
||||
value = await getOption('tracking', true);
|
||||
|
||||
el = document.querySelector('#option-tracking');
|
||||
|
||||
el.checked = value;
|
||||
|
||||
el.addEventListener('change', e => setOption('tracking', e.target.checked));
|
||||
});
|
||||
|
@ -1,74 +1,84 @@
|
||||
{
|
||||
"name": "Wappalyzer",
|
||||
"short_name": "Wappalyzer",
|
||||
"author": "Elbert Alias",
|
||||
"homepage_url": "https://www.wappalyzer.com",
|
||||
"description": "Identify web technologies",
|
||||
"version": "5.4.14",
|
||||
"default_locale": "en",
|
||||
"manifest_version": 2,
|
||||
"icons": {
|
||||
"16": "images/icon_16.png",
|
||||
"19": "images/icon_19.png",
|
||||
"32": "images/icon_32.png",
|
||||
"38": "images/icon_38.png",
|
||||
"128": "images/icon_128.png"
|
||||
},
|
||||
"page_action": {
|
||||
"default_icon": {
|
||||
"16": "images/icon_16.png",
|
||||
"19": "images/icon_19.png",
|
||||
"32": "images/icon_32.png",
|
||||
"38": "images/icon_38.png",
|
||||
"128": "images/icon_128.png"
|
||||
},
|
||||
"default_title": "Wappalyzer",
|
||||
"default_popup": "html/popup.html"
|
||||
},
|
||||
"background": {
|
||||
"page": "html/background.html"
|
||||
"name": "Wappalyzer",
|
||||
"short_name": "Wappalyzer",
|
||||
"author": "Elbert Alias",
|
||||
"homepage_url": "https://www.wappalyzer.com",
|
||||
"description": "Identify web technologies",
|
||||
"version": "5.8.3",
|
||||
"default_locale": "en",
|
||||
"manifest_version": 2,
|
||||
"icons": {
|
||||
"16": "images/icon_16.png",
|
||||
"19": "images/icon_19.png",
|
||||
"32": "images/icon_32.png",
|
||||
"38": "images/icon_38.png",
|
||||
"128": "images/icon_128.png"
|
||||
},
|
||||
"page_action": {
|
||||
"default_icon": {
|
||||
"16": "images/icon_16.png",
|
||||
"19": "images/icon_19.png",
|
||||
"32": "images/icon_32.png",
|
||||
"38": "images/icon_38.png",
|
||||
"128": "images/icon_128.png"
|
||||
},
|
||||
"default_title": "Wappalyzer",
|
||||
"default_popup": "html/popup.html"
|
||||
},
|
||||
"background": {
|
||||
"page": "html/background.html"
|
||||
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": [
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"js": [
|
||||
"node_modules/webextension-polyfill/dist/browser-polyfill.js",
|
||||
"js/content.js"
|
||||
],
|
||||
"run_at": "document_idle"
|
||||
},
|
||||
{
|
||||
"matches": [
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": [
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"js": [
|
||||
"js/iframe.js"
|
||||
],
|
||||
"run_at": "document_start",
|
||||
"all_frames": true
|
||||
}
|
||||
],
|
||||
"web_accessible_resources": [
|
||||
"js/inject.js"
|
||||
],
|
||||
"options_page": "html/options.html",
|
||||
"options_ui": {
|
||||
"page": "html/options.html",
|
||||
"open_in_tab": false
|
||||
},
|
||||
"permissions": [
|
||||
"https://*/*"
|
||||
],
|
||||
"js": [
|
||||
"node_modules/webextension-polyfill/dist/browser-polyfill.js",
|
||||
"js/content.js"
|
||||
],
|
||||
"run_at": "document_idle"
|
||||
},
|
||||
{
|
||||
"matches": [
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"exclude_matches": [
|
||||
"https://*.modirum.com/*",
|
||||
"https://www.alphaecommerce.gr/*"
|
||||
],
|
||||
"js": [
|
||||
"node_modules/webextension-polyfill/dist/browser-polyfill.js",
|
||||
"js/lib/iframe.js"
|
||||
],
|
||||
"run_at": "document_start",
|
||||
"all_frames": true
|
||||
}
|
||||
],
|
||||
"web_accessible_resources": [
|
||||
"js/inject.js"
|
||||
],
|
||||
"options_ui": {
|
||||
"page": "html/options.html",
|
||||
"open_in_tab": false
|
||||
},
|
||||
"permissions": [
|
||||
"cookies",
|
||||
"storage",
|
||||
"tabs",
|
||||
"webRequest",
|
||||
"webNavigation",
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"content_security_policy": "script-src 'self'; object-src 'self'"
|
||||
"storage",
|
||||
"tabs",
|
||||
"webRequest",
|
||||
"webNavigation",
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"content_security_policy": "script-src 'self'; object-src 'self'",
|
||||
"applications": {
|
||||
"gecko": {
|
||||
"id": "wappalyzer@crunchlabz.com",
|
||||
"strict_min_version": "60.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"webextension-polyfill": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.4.0.tgz",
|
||||
"integrity": "sha512-oreMp+EoAo1pzRMigx4jB5jInIpx6NTCySPSjGyLLee/dCIPiRqowCEfbFP8o20wz9SOtNwSsfkaJ9D/tRgpag=="
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"webextension-polyfill": "^0.2.1"
|
||||
"webextension-polyfill": "^0.4.0"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 529 B |
Before Width: | Height: | Size: 631 B |
Before Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 779 B |
Before Width: | Height: | Size: 644 B |
Before Width: | Height: | Size: 682 B |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 384 B |
After Width: | Height: | Size: 623 B |
After Width: | Height: | Size: 950 B |
After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 732 B |
Before Width: | Height: | Size: 210 B |
Before Width: | Height: | Size: 274 B |
Before Width: | Height: | Size: 743 B |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 642 B |
Before Width: | Height: | Size: 706 B After Width: | Height: | Size: 763 B |
Before Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 714 B |
After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 100 B |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 270 B |
After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 765 B |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 10 KiB |