# katana: crawling e descoberta de endpoints para pentests web

> Como instalar e executar o katana, quando usar o modo headless, e como o Tandera usa a saída do crawl para alimentar análise de parâmetros e segredos.

O `katana` faz crawl de uma aplicação web e retorna as URLs, endpoints e parâmetros que encontra. Diferente das fontes passivas de URL (`gau`, `waybackurls`), ele vê a aplicação como ela existe agora, incluindo rotas que nunca foram arquivadas — e, em modo headless, rotas que só existem depois que o JavaScript roda.

## Instalação

```bash
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
```

O modo headless precisa de um Chromium disponível; o katana baixa um no primeiro uso.

## Comandos principais

```bash
# crawl padrão
katana -u https://example.com -silent

# headless — obrigatório para SPAs
katana -u https://example.com -headless -silent

# profundidade, escopo e parsing de JS
katana -u https://example.com -d 3 -jc -kf all -silent

# mantém dentro do engajamento
katana -u https://example.com -crawl-scope example.com -silent

# JSONL com o detalhe da requisição
katana -u https://example.com -jsonl -o crawl.jsonl -field url,method
```

O `-jc` parseia arquivos JavaScript em busca de endpoints. O `-kf all` segue arquivos conhecidos como `robots.txt` e `sitemap.xml`. O `-d` é a profundidade do crawl — 3 costuma bastar; 5 numa app grande vai rodar por muito tempo.

## Saída

```json
{"timestamp":"2026-08-29T10:07:00Z","request":{"method":"GET",
 "endpoint":"https://example.com/api/v2/users?id=1"},
 "response":{"status_code":200}}
```

## Onde ele entra no Tandera

O katana aparece em três fluxos e duas fases — a única ferramenta do catálogo agendada tão amplamente. Roda em **fingerprint** para estabelecer a superfície de URLs, e de novo em **enrich** para aprofundá-la depois que outras fontes contribuíram.

Sua saída é a entrada de várias etapas de **analyze**: `linkfinder` e `jxscout` mineram o JavaScript que ele recupera, `arjun` faz fuzzing dos parâmetros que ele achou, e `unfurl` decompõe o corpus de URLs em hostnames, paths e nomes de parâmetro.

## Usando em um pentest

**Use headless para qualquer coisa moderna.** Um front-end React ou Vue devolve quase nada para um crawler não headless — as rotas só existem depois que o bundle executa. Se o katana retorna 12 URLs para uma aplicação que você vê que é grande, é essa a razão.

**Delimite o crawl explicitamente.** O `-crawl-scope` impede que ele vagueie para uma CDN, um provedor de pagamento ou um host de widget de terceiros. Fazer crawl nesses está fora do escopo e, dependendo do alvo, é ilegal.

**Faça crawl antes de fazer fuzzing.** Os nomes de parâmetro que o katana recupera valem mais que qualquer wordlist genérica, porque são o vocabulário da própria aplicação.

```bash
katana -u https://example.com -headless -jc -d 3 -silent \
  | unfurl -u paths | sort -u > paths.txt
```

---

Canonical: https://tandera.io/pt-br/tools/katana
This page as markdown: https://tandera.io/pt-br/tools/katana.md
Index for agents: https://tandera.io/llms.txt

Every page here is also available as markdown: append `.md` to the path (e.g. `/recon.md`, `/index.md` for this homepage, `/blog/<slug>.md`), or request the canonical path with `Accept: text/markdown`.
