
detectar tecnologias com alternativa ao wappalyzer
Este projeto é uma ferramenta de linha de comando e biblioteca Python que usa a extensão do navegador Wappalyzer e suas impressões digitais para detectar tecnologias. Outros projetos que surgiram após a descontinuação do projeto oficial de código aberto estão usando impressões digitais desatualizadas e carecem de precisão em aplicativos web dinâmicos. Este projeto contorna essas limitações executando a extensão no Chromium através do Playwright.

Após instalar o pacote Python, instale o navegador Chromium do Playwright:
python -m playwright install chromium
Em contêineres Linux mínimos, instale também as dependências de sistema do Chromium:
python -m playwright install-deps chromium
pipx install wappalyzer
pipx run --spec playwright playwright install chromium
Para usar como biblioteca, instale-a com pip dentro de um contêiner isolado, por exemplo, venv ou docker. Você também pode usar --break-system-packages para fazer uma instalação 'normal', mas não é recomendado.
pip install wappalyzer
python -m playwright install chromium
git clone https://github.com/s0md3v/wappalyzer-next.git
cd wappalyzer-next
docker compose build
docker compose run --rm wappalyzer -i https://example.com
docker compose run --rm wappalyzer -i urls.txt -w 3 -oJ output.json
Alguns exemplos comuns de uso são fornecidos abaixo; consulte a lista de todas as opções para mais informações.
wappalyzer -i https://example.comwappalyzer -i urls.txt -w 3wappalyzer -i urls.txt -t 15wappalyzer -i https://example.com -c "sessionid=abc123; token=xyz789"wappalyzer -i https://example.com -oJ results.jsonwappalyzer -i https://example.com -oJQuando uma flag de saída é usada sem um arquivo, o relatório é escrito em stdout. Linhas de status, texto do banner e erros são escritos em stderr.
Nota: Para precisão, use o tipo de varredura 'full' (padrão). 'fast' e 'balanced' não usam emulação de navegador.
-i: URL de entrada ou arquivo contendo URLs (uma por linha)--scan-type: Tipo de varredura (padrão: 'full')
fast: Varredura rápida baseada em HTTP (envia 1 requisição)balanced: Varredura baseada em HTTP com mais requisiçõesfull: Varredura completa usando a extensão wappalyzer-w, --workers: Número de workers concorrentes (padrão: 5; varreduras completas limitadas a 3)-t, --timeout: Máximo de segundos para aguardar o carregamento de página em varreduras completas (padrão: 30)-oJ [file]: Caminho do arquivo de saída JSON, ou stdout quando o arquivo é omitido ou definido como --oC [file]: Caminho do arquivo de saída CSV, ou stdout quando o arquivo é omitido ou definido como --oH [file]: Caminho do arquivo de saída HTML, ou stdout quando o arquivo é omitido ou definido como A biblioteca Python está disponível no pypi como wappalyzer e pode ser importada com o mesmo nome.
Use Wappalyzer ao escanear mais de uma URL. O navegador é iniciado uma vez, reutilizado e fechado quando o bloco with termina.
from wappalyzer import Wappalyzer
with Wappalyzer(workers=3, timeout=30) as scanner:
results = scanner.analyze_many([
'https://example.com',
'https://github.com',
'https://python.org',
])
for url, technologies in results.items():
print(url)
for name, data in technologies.items():
version = f" {data['version']}" if data['version'] else ""
print(f" {name}{version}")
O mesmo scanner também pode escanear uma URL por vez sem reabrir o Chromium:
from wappalyzer import Wappalyzer
with Wappalyzer(workers=3, timeout=30) as scanner:
github = scanner.analyze('https://github.com')
python = scanner.analyze('https://python.org')
Para uma única URL, analyze() é mais curta. Ela cria seu próprio scanner, executa uma varredura e o fecha.
from wappalyzer import analyze
results = analyze(
url='https://example.com',
scan_type='full', # 'fast', 'balanced', or 'full'
cookie='sessionid=abc123',
timeout=30
)
Não chame a função analyze() de nível superior em um loop para trabalhos grandes. Use Wappalyzer.analyze_many() ou Wappalyzer.analyze() em um scanner reutilizado para que o Chromium e a extensão Wappalyzer não sejam recarregados para cada URL.
url (str): A URL a ser analisadascan_type (str, opcional): Tipo de varredura a realizar
'fast': Varredura rápida baseada em HTTP'balanced': Varredura baseada em HTTP com mais requisições'full': Varredura completa incluindo execução de JavaScript (padrão)workers (int, opcional): Número de workers do navegador a criar para varreduras completas (padrão: 1)cookie (str, opcional): String do cabeçalho Cookie para varreduras autenticadastimeout (int, opcional): Máximo de segundos para aguardar o carregamento de página em varreduras completas (padrão: 30)Retorna um dicionário com a URL como chave e as tecnologias detectadas como valor:
{
"https://github.com": {
"Amazon S3": {
"version": "",
"confidence": 100,
"categories": ["CDN"],
"groups": ["Servers"]
},
"React Router": {
"version": "6",
"confidence": 100,
"categories": ["JavaScript frameworks"],
"groups": ["Web development"]
}
},
"https://example.com": {}
}
O scanner completo executa a extensão Wappalyzer no Chromium através do Playwright. O suporte a extensões do Chromium no Playwright é direto e não requer geckodriver ou Selenium.
--c, --cookie: String do cabeçalho Cookie para varreduras autenticadas