Sobre o projeto

Katana é um framework de rastreamento e spidering web baseado em Go, projetado para uso direto ou como parte de fluxos de trabalho automatizados. Aceita alvos como URL única, URLs separadas por vírgula, arquivo de lista ou entrada STDIN por pipe, e pode emitir URLs descobertas e metadados para STDOUT, arquivo ou JSONL. As opções de instalação incluem go install, binários de lançamento pré-construídos e imagem Docker. O modo de rastreamento padrão usa a biblioteca HTTP do Go e não renderiza JavaScript ou DOM. O modo headless opcional usa Chrome para renderizar páginas, executar JavaScript e descobrir endpoints carregados pelo navegador ou assíncronos. A configuração headless inclui seleção do Chrome do sistema, caminho personalizado do Chrome ou URL WebSocket do depurador, diretórios de dados do navegador, controles de modo anônimo e sandbox, modo de navegador visível, opções adicionais do Chrome, extração de XHR e estratégias de carregamento de página como heurística, load, DOMContentLoaded, networkidle e none. Um tempo de espera DOM pode ser configurado para renderização JavaScript. Katana pode analisar e rastrear endpoints de arquivos JavaScript e, opcionalmente, usar análise jsluice. Suporta preenchimento automático experimental de formulários, extração de formulários e campos, configuração personalizada de formulários e detecção automática de captcha com resolução externa via CapSolver. Os tipos de captcha suportados documentados são reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile e hCaptcha. O comportamento de rastreamento pode ser restringido por profundidade, duração, páginas máximas por domínio, tamanho de resposta, timeouts, tentativas, tratamento de redirecionamentos, proxies, cabeçalhos ou cookies personalizados, resolvedores personalizados e estratégias de profundidade ou largura. Também pode processar arquivos robots.txt e sitemap, detectar tecnologias e, opcionalmente, randomizar o TLS client hello. Os controles de escopo incluem os campos predefinidos rdn, fqdn e dn, regras de inclusão e exclusão por expressão regular, desativação de escopo de host, exibição de URL externa e exclusão de CDNs, faixas de IP privadas, CIDRs, IPs ou hosts correspondentes a regex. A filtragem de saída suporta regex de URL, correspondência ou filtragem de extensão, condições de resposta baseadas em DSL, filtros de tipo de página, normalização de parâmetros de consulta, filtragem de URLs semelhantes e filtragem de conteúdo duplicado. A similaridade de conteúdo de página pode usar simhash, TF-IDF ou BM25 com limites configuráveis e orçamentos de processamento por cluster. Os controles de taxa e execução abrangem buscadores concorrentes, entradas paralelas, atrasos de solicitação e limites de taxa globais ou por host por segundo e por minuto. A saída pode usar campos ou modelos configuráveis, armazenar solicitações e respostas HTTP, omitir dados brutos ou corpos e executar em modo silencioso, verbose ou debug. Rastreamentos podem ser retomados a partir de um arquivo de configuração de retomada. Um recurso opcional de base de conhecimento fornece classificação de tipo de página e formulário baseada em ML usando um modelo baixado automaticamente. Também pode extrair segredos, opcionalmente validá-los com chamadas de provedor ao vivo, e classificar endpoints REST, GraphQL, SOAP e XHR. A documentação do projeto lembra os usuários de usar a ferramenta com responsabilidade e que são responsáveis pelo próprio uso.