# katana: crawling y descubrimiento de endpoints para pentests web

> Cómo instalar y ejecutar katana, cuándo usar el modo headless, y cómo Tandera usa la salida del crawl para alimentar el análisis de parámetros y secretos.

`katana` hace crawl de una aplicación web y devuelve las URLs, endpoints y parámetros que encuentra. A diferencia de las fuentes pasivas de URL (`gau`, `waybackurls`), ve la aplicación tal como existe ahora, incluyendo rutas que nunca se archivaron — y, en modo headless, rutas que solo existen después de que se ejecuta el JavaScript.

## Instalación

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

El modo headless necesita un Chromium disponible; katana descargará uno en el primer uso.

## Comandos principales

```bash
# crawl estándar
katana -u https://example.com -silent

# headless — obligatorio para SPAs
katana -u https://example.com -headless -silent

# profundidad, alcance y parsing de JS
katana -u https://example.com -d 3 -jc -kf all -silent

# mantenlo dentro del engagement
katana -u https://example.com -crawl-scope example.com -silent

# JSONL con el detalle de la solicitud
katana -u https://example.com -jsonl -o crawl.jsonl -field url,method
```

`-jc` parsea archivos JavaScript en busca de endpoints. `-kf all` sigue archivos conocidos como `robots.txt` y `sitemap.xml`. `-d` es la profundidad del crawl — 3 suele bastar; 5 en una app grande se ejecutará durante mucho tiempo.

## Salida

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

## Dónde encaja en Tandera

katana aparece en tres flujos y dos fases — la única herramienta del catálogo agendada tan ampliamente. Se ejecuta en **fingerprint** para establecer la superficie de URLs, y de nuevo en **enrich** para profundizarla una vez que otras fuentes han contribuido.

Su salida es la entrada de varias etapas de **analyze**: `linkfinder` y `jxscout` minan el JavaScript que recupera, `arjun` hace fuzzing de los parámetros que encontró, y `unfurl` descompone el corpus de URLs en hostnames, paths y nombres de parámetro.

## Uso en un pentest

**Usa headless para cualquier cosa moderna.** Un front-end React o Vue devuelve casi nada a un crawler no headless — las rutas solo existen después de que el bundle se ejecuta. Si katana devuelve 12 URLs para una aplicación que ves que es grande, esa es la razón.

**Delimita el crawl explícitamente.** `-crawl-scope` evita que se vaya a una CDN, un proveedor de pagos o un host de widget de terceros. Hacer crawl de esos está fuera de alcance y, según el objetivo, es ilegal.

**Haz crawl antes de hacer fuzzing.** Los nombres de parámetro que katana recupera valen más que cualquier wordlist genérica, porque son el vocabulario de la propia aplicación.

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

---

Canonical: https://tandera.io/es/tools/katana
This page as markdown: https://tandera.io/es/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`.
