main
parent
2cb284594f
commit
81bb646b2a
@ -1,114 +0,0 @@
|
|||||||
const Zombie = require('zombie');
|
|
||||||
|
|
||||||
class Browser {
|
|
||||||
constructor(options) {
|
|
||||||
this.options = options;
|
|
||||||
|
|
||||||
this.browser = new Zombie({
|
|
||||||
proxy: options.proxy,
|
|
||||||
silent: true,
|
|
||||||
strictSSL: false,
|
|
||||||
userAgent: options.userAgent,
|
|
||||||
waitDuration: options.maxWait,
|
|
||||||
});
|
|
||||||
|
|
||||||
this.statusCode = null;
|
|
||||||
this.contentType = null;
|
|
||||||
this.headers = null;
|
|
||||||
this.statusCode = null;
|
|
||||||
this.contentType = null;
|
|
||||||
this.html = null;
|
|
||||||
this.scripts = null;
|
|
||||||
this.cookies = null;
|
|
||||||
|
|
||||||
this.window = this.browser.window;
|
|
||||||
this.document = this.browser.document;
|
|
||||||
|
|
||||||
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.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.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() {
|
|
||||||
if (!this.browser.document || !this.browser.document.scripts) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
const scripts = Array.prototype.slice
|
|
||||||
.apply(this.browser.document.scripts)
|
|
||||||
.filter(script => script.src)
|
|
||||||
.map(script => script.src);
|
|
||||||
|
|
||||||
return scripts;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Browser;
|
|
@ -1,73 +1,77 @@
|
|||||||
{
|
{
|
||||||
"github": { "message": "Fork Wappalyzer no GitHub!" },
|
"github": { "message": "Fork Wappalyzer no GitHub!" },
|
||||||
"noAppsDetected": { "message": "Não foi detectada nenhuma tecnologia." },
|
"noAppsDetected": { "message": "Não foi detectada nenhuma tecnologia." },
|
||||||
"nothingToDo": { "message": "Nada a fazer aqui." },
|
"nothingToDo": { "message": "Nada a fazer aqui." },
|
||||||
"optionDynamicIcon": { "message": "Utilizar o ícone da tecnologia em vez do logótipo do Wappalyzer" },
|
"optionDynamicIcon": { "message": "Utilizar o ícone da tecnologia em vez do logótipo do Wappalyzer" },
|
||||||
"optionTracking": { "message": "Envie anonimamente tecnologias identificadas para wappalyzer.com" },
|
"optionTracking": { "message": "Envie anonimamente tecnologias identificadas para wappalyzer.com" },
|
||||||
"optionUpgradeMessage": { "message": "Fale-me sobre actualizações" },
|
"optionUpgradeMessage": { "message": "Fale-me sobre actualizações" },
|
||||||
"options": { "message": "Opções" },
|
"options": { "message": "Opções" },
|
||||||
"optionsSave": { "message": "Opções de Guardar" },
|
"optionsSave": { "message": "Opções de Guardar" },
|
||||||
"optionsSaved": { "message": "Guardado" },
|
"optionsSaved": { "message": "Guardado" },
|
||||||
"twitter": { "message": "Seguir Wappalyzer no Twitter" },
|
"twitter": { "message": "Seguir Wappalyzer no Twitter" },
|
||||||
"website": { "message": "Ir para wappalyzer.com" },
|
"website": { "message": "Ir para wappalyzer.com" },
|
||||||
"categoryPin": { "message": "Mostrar sempre ícone" },
|
"categoryPin": { "message": "Mostrar sempre ícone" },
|
||||||
"categoryName1": { "message": "CMS" },
|
"categoryName1": { "message": "CMS" },
|
||||||
"categoryName2": { "message": "Fórum" },
|
"categoryName2": { "message": "Fórum" },
|
||||||
"categoryName3": { "message": "Gestor de Base de Dados" },
|
"categoryName3": { "message": "Gestor de Base de Dados" },
|
||||||
"categoryName4": { "message": "Ferramenta de Documentação" },
|
"categoryName4": { "message": "Ferramenta de Documentação" },
|
||||||
"categoryName5": { "message": "Widget" },
|
"categoryName5": { "message": "Widget" },
|
||||||
"categoryName6": { "message": "Comércio Eletrónico" },
|
"categoryName6": { "message": "Comércio Eletrónico" },
|
||||||
"categoryName7": { "message": "Galeria de Fotos" },
|
"categoryName7": { "message": "Galeria de Fotos" },
|
||||||
"categoryName8": { "message": "Wikis" },
|
"categoryName8": { "message": "Wikis" },
|
||||||
"categoryName9": { "message": "Painéis de Hospedagem" },
|
"categoryName9": { "message": "Painéis de Hospedagem" },
|
||||||
"categoryName10": { "message": "Analítica" },
|
"categoryName10": { "message": "Analítica" },
|
||||||
"categoryName11": { "message": "Blog" },
|
"categoryName11": { "message": "Blog" },
|
||||||
"categoryName12": { "message": "Framework JavaScript" },
|
"categoryName12": { "message": "Framework JavaScript" },
|
||||||
"categoryName13": { "message": "Rastreador de Problemas" },
|
"categoryName13": { "message": "Rastreador de Problemas" },
|
||||||
"categoryName14": { "message": "Leitor Vídeo" },
|
"categoryName14": { "message": "Leitor Vídeo" },
|
||||||
"categoryName15": { "message": "Sistema de Comentários" },
|
"categoryName15": { "message": "Sistema de Comentários" },
|
||||||
"categoryName16": { "message": "Captcha" },
|
"categoryName16": { "message": "Captcha" },
|
||||||
"categoryName17": { "message": "Script de Tipos de Letra" },
|
"categoryName17": { "message": "Script de Tipos de Letra" },
|
||||||
"categoryName18": { "message": "Framework Web" },
|
"categoryName18": { "message": "Framework Web" },
|
||||||
"categoryName19": { "message": "Diversos" },
|
"categoryName19": { "message": "Diversos" },
|
||||||
"categoryName20": { "message": "Editor" },
|
"categoryName20": { "message": "Editor" },
|
||||||
"categoryName21": { "message": "LMS" },
|
"categoryName21": { "message": "LMS" },
|
||||||
"categoryName22": { "message": "Servidor Web" },
|
"categoryName22": { "message": "Servidor Web" },
|
||||||
"categoryName23": { "message": "Ferramenta de Cache" },
|
"categoryName23": { "message": "Ferramenta de Cache" },
|
||||||
"categoryName24": { "message": "Editor WYSIWYG" },
|
"categoryName24": { "message": "Editor WYSIWYG" },
|
||||||
"categoryName25": { "message": "Gráficos JavaScript" },
|
"categoryName25": { "message": "Gráficos JavaScript" },
|
||||||
"categoryName26": { "message": "Framework Mobile" },
|
"categoryName26": { "message": "Framework Mobile" },
|
||||||
"categoryName27": { "message": "Linguagem de Programação" },
|
"categoryName27": { "message": "Linguagem de Programação" },
|
||||||
"categoryName28": { "message": "Sistema Operativo" },
|
"categoryName28": { "message": "Sistema Operativo" },
|
||||||
"categoryName29": { "message": "Motor de Busca" },
|
"categoryName29": { "message": "Motor de Busca" },
|
||||||
"categoryName30": { "message": "Web Mail" },
|
"categoryName30": { "message": "Web Mail" },
|
||||||
"categoryName31": { "message": "CDN" },
|
"categoryName31": { "message": "CDN" },
|
||||||
"categoryName32": { "message": "Automação de Marketing" },
|
"categoryName32": { "message": "Automação de Marketing" },
|
||||||
"categoryName33": { "message": "Extensão de Servidor Web" },
|
"categoryName33": { "message": "Extensão de Servidor Web" },
|
||||||
"categoryName34": { "message": "Base de Dados" },
|
"categoryName34": { "message": "Base de Dados" },
|
||||||
"categoryName35": { "message": "Mapa" },
|
"categoryName35": { "message": "Mapa" },
|
||||||
"categoryName36": { "message": "Rede de Publicidade" },
|
"categoryName36": { "message": "Rede de Publicidade" },
|
||||||
"categoryName37": { "message": "Serviço de Rede" },
|
"categoryName37": { "message": "Serviço de Rede" },
|
||||||
"categoryName38": { "message": "Servidor de Média" },
|
"categoryName38": { "message": "Servidor de Média" },
|
||||||
"categoryName39": { "message": "Webcam" },
|
"categoryName39": { "message": "Webcam" },
|
||||||
"categoryName40": { "message": "Impressão" },
|
"categoryName40": { "message": "Impressão" },
|
||||||
"categoryName41": { "message": "Processador de Pagamento" },
|
"categoryName41": { "message": "Processador de Pagamento" },
|
||||||
"categoryName42": { "message": "Gestor de Etiquetas" },
|
"categoryName42": { "message": "Gestor de Etiquetas" },
|
||||||
"categoryName43": { "message": "Sistema de Subscrição Paga" },
|
"categoryName43": { "message": "Sistema de Subscrição Paga" },
|
||||||
"categoryName44": { "message": "Sistema Build/CI" },
|
"categoryName44": { "message": "Sistema Build/CI" },
|
||||||
"categoryName45": { "message": "Sistema SCADA" },
|
"categoryName45": { "message": "Sistema SCADA" },
|
||||||
"categoryName46": { "message": "Acesso Remoto" },
|
"categoryName46": { "message": "Acesso Remoto" },
|
||||||
"categoryName47": { "message": "Ferramenta de Desenvolvimento" },
|
"categoryName47": { "message": "Ferramenta de Desenvolvimento" },
|
||||||
"categoryName48": { "message": "Rede de Armazenamento" },
|
"categoryName48": { "message": "Rede de Armazenamento" },
|
||||||
"categoryName49": { "message": "Leitores de Feed" },
|
"categoryName49": { "message": "Leitores de Feed" },
|
||||||
"categoryName50": { "message": "Sistema de Gestão de Documentos" },
|
"categoryName50": { "message": "Sistema de Gestão de Documentos" },
|
||||||
"categoryName51": { "message": "Criador de Páginas de Destino" },
|
"categoryName51": { "message": "Criador de Páginas de Destino" },
|
||||||
"categoryName52": { "message": "Chat ao Vivo" },
|
"categoryName52": { "message": "Chat ao Vivo" },
|
||||||
"categoryName53": { "message": "CRM" },
|
"categoryName53": { "message": "CRM" },
|
||||||
"categoryName54": { "message": "SEO" },
|
"categoryName54": { "message": "SEO" },
|
||||||
"categoryName55": { "message": "Contabilidade" },
|
"categoryName55": { "message": "Contabilidade" },
|
||||||
"categoryName56": { "message": "Cryptominer" },
|
"categoryName56": { "message": "Cryptominer" },
|
||||||
"categoryName57": { "message": "Gerador de Site Estático" },
|
"categoryName57": { "message": "Gerador de Site Estático" },
|
||||||
"categoryName58": { "message": "User Onboarding" },
|
"categoryName58": { "message": "User Onboarding" },
|
||||||
"categoryName59": { "message": "JavaScript Libraries" }
|
"categoryName59": { "message": "JavaScript Libraries" },
|
||||||
|
"categoryName60": { "message": "Containers" },
|
||||||
|
"categoryName61": { "message": "SaaS" },
|
||||||
|
"categoryName62": { "message": "PaaS" },
|
||||||
|
"categoryName63": { "message": "IaaS" }
|
||||||
}
|
}
|
||||||
|
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Loading…
Reference in new issue