# Verificación de bots

> Cómo comprueba el borde que un rastreador es quien dice ser: rangos de IP publicados, DNS inverso confirmado y Web Bot Auth, y qué es un suplantador.

Un User-Agent es solo texto. Una petición que dice ser un bot del [catálogo](https://developers.openwaf.dev/es/ai-crawl-control/bot-catalog/) cuenta como **verificada** solo si funciona uno de los métodos de verificación de ese bot.

| Método | Panel | Verificado cuando |
|---|---|---|
| `ip` | Rangos IP | La IP del cliente está en los rangos que publica el operador. |
| `rdns` | DNS inverso | El nombre PTR de la IP acaba en uno de los sufijos del bot (como `.googlebot.com`) **y** ese nombre resuelve a la misma IP (DNS inverso confirmado hacia delante). |
| `web_bot_auth` | Web Bot Auth | La petición lleva cabeceras `Signature-Agent`, `Signature-Input` (etiqueta `web-bot-auth`, Ed25519) y `Signature` válidas (HTTP Message Signatures, RFC 9421), comprobadas con las claves que publica el agente en `/.well-known/http-message-signatures-directory`. |

## Suplantados y no verificables

- Un User-Agent que dice ser un bot del catálogo y no pasa la verificación (IP fuera de sus rangos, DNS inverso que falta o no coincide) es **suplantado**.
- Un error de DNS no convierte una petición en suplantada: queda sin verificar, con la señal `rdns_error`.
- Una firma Web Bot Auth no válida deja la señal `wba_invalid`.
- Los bots que no publican rangos, DNS inverso ni firmas (ClaudeBot, Bytespider…) son **no verificables**: conservan su categoría con `verified=false`, se les aplica además la clave `unverified_bot` (gana la acción más fuerte) y nunca quedan exentos de nada.

## Rastreadores suplantados y el reto

Sin verificación, bastaba con decir «Googlebot» para saltarse el [reto de navegador](https://developers.openwaf.dev/es/waf/browser-challenge/). Con `spoofed_challenge: enforce`, solo los rastreadores **verificados** se lo saltan: los falsos reciben el mismo reto que cualquiera. Con `log` (por defecto), el borde mantiene la exención por User-Agent, pero registra que habría retado. `spoofed_challenge` es independiente de `mode`.

En el panel: **Configuración → Protección → Bloquear crawlers falsos en el reto**.

Los rastreadores verificados nunca reciben el enlace trampa, ni se les reta o manda al laberinto por seguirlo.
