
Hace dos posts dije que revisaras tus logs de servidor por si los crawlers de IA reciben un 403. De ahí sale la siguiente pregunta obvia: vale, encontraste el bloqueo — ¿y ahora cómo dejas pasar a los crawlers correctos sin dejar entrar a todos?
Este es ese post: el modelo al que he llegado, y las grietas con las que sigo topando.
Por delante, para que nadie lo confunda con una batallita: aún no lo he desplegado en mi propio borde. Es investigación para hacerlo bien. Si lo tienes en producción, los comentarios son donde yo aprendo algo.
Una pregunta que en realidad son dos
Quieres que los crawlers de IA lleguen a tu contenido — así te citan en ChatGPT, Perplexity y Gemini. No quieres que cada scraper de internet entre detrás de ellos.
«Deja entrar a los buenos, deja fuera a los malos» suena a un solo trabajo. Son dos, y tiran en direcciones opuestas. Abre más la puerta a GPTBot y la has abierto a cualquier cosa dispuesta a escribir GPTBot en una cabecera. Ciérrala y desapareces de las respuestas en las que intentabas aparecer.
Todo el problema es la identidad: ¿cómo sabes que una petición es de verdad del crawler que dice ser? Todo lo de abajo son tres respuestas cada vez más honestas a eso.
Respuesta 1 — el nombre (y por qué no vale nada)
El arreglo perezoso: permitir todo cuyo User-Agent contenga GPTBot.
Un User-Agent es una cadena. Cualquiera puede escribirla. Un scraper se etiqueta GPTBot, cruza sin problema, y tu gesto hacia la visibilidad en IA es ahora una puerta abierta justo para el tráfico que dejabas fuera.
El nombre no es identidad. Es una afirmación. Necesitas algo que el visitante no pueda falsificar.
Respuesta 2 — el origen (IP)
Mejor: comprueba de dónde vino la petición de verdad. Bien hecho, es un baile de DNS en dos pasos, no una consulta plana de IP:
- Reverse-DNS de la IP que pide → obtén un hostname
- Confirma que el hostname pertenece al proveedor —
.crawl.openai.com,.anthropic.com,.perplexity.ai,.googlebot.com - Forward-resolve ese hostname → debe devolver la IP original

Un scraper puede afirmar un hostname. No puede hacer que el DNS del proveedor haga forward-resolve a su propia IP. Ambas direcciones tienen que coincidir.
Algunos proveedores también publican rangos en crudo para contrastar:
- OpenAI — gptbot.json, searchbot.json, chatgpt-user.json
- Perplexity — perplexitybot.json, perplexity-user.json
- Google — rangos del crawler
Dónde se rompe el origen — tres grietas, ninguna pequeña
No todos publican. Esta me sorprendió: Anthropic no publica rangos de IP para ClaudeBot. Las IP de sus docs son para la API de Claude, no para el crawler. Su propia guía para identificar a ClaudeBot es User-Agent más reverse-DNS contra *.anthropic.com. Así que para uno de los tres crawlers más grandes, «solo contrasta el rango publicado» no es una opción que exista.
Google no separa el tráfico de entrenamiento por IP. Google-Extended — el control para el entrenamiento de Gemini y AI Overviews — es un token de robots.txt, no un conjunto de IP. No hay google-extended.json. Puedes permitirlo o denegarlo en robots.txt, pero no distinguirlo a nivel de red. La verificación por IP no lo alcanza.
Rotación. Es la grieta más afilada de todas. Una allowlist obsoleta y una ventana de 403 de 20 minutos son ambas un coste real, y «solo consulta el JSON más a menudo» es un parche sobre un diseño que no debería haber requerido consultar.
Cada rango publicado es una foto de un objetivo en movimiento. El proveedor rota, o publica un bloque nuevo tarde, y eliges entre una allowlist que ya está mal y una ventana donde crawlers legítimos comen un 403. Ya no verificas identidad. Cuidas bloques CIDR y esperas que el JSON esté al día.
Respuesta 3 — la prueba (Web Bot Auth)
Aquí el modelo de confianza cambia de forma, en vez de solo volverse más quisquilloso.
Web Bot Auth — un borrador de la IETF liderado por Cloudflare (draft-meunier-web-bot-auth-architecture, sobre RFC 9421 HTTP Message Signatures) — hace que cada crawler firme sus peticiones con una clave Ed25519. La clave pública vive en un directorio well-known del propio dominio del proveedor. Verificas la firma. La identidad se prueba por criptografía, no se infiere de dónde vino el paquete.
El cambio es todo el asunto: de «dónde se originó esta conexión» a «puedes probar que tienes la clave». Eso sobrevive a la rotación. No le importa de qué datacenter salió la petición. Ningún CIDR que cuidar, ningún JSON que consultar.
Y es real, y se mueve rápido:
- Integrado en el programa Verified Bots de Cloudflare, con un directorio Signed Agents
- El agente de ChatGPT estuvo en la primera cohorte firmada, 2025
- AWS WAF añadió soporte para Web Bot Auth a finales de 2025, permitiendo automáticamente a los agentes verificados
Estado, con honestidad: un borrador activo de la IETF, no un estándar ratificado. Pero con Cloudflare, OpenAI, Anthropic y AWS moviéndose al unísono, ya es la dirección de facto.
Dónde se rompe la prueba
Solo ayuda con los crawlers que de verdad firman. Y los scrapers que más quieres bloquear son justo los que nunca lo adoptarán. Las firmas verifican a los honestos. No hacen nada a los deshonestos.
Entonces, ¿por qué no esperar a que las firmas ganen?
Porque las firmas responden a una pregunta más estrecha de lo que parece. El replanteamiento que por fin me hizo clic: las firmas mueven la pregunta de «quién eres» a «qué estás haciendo».
Detente en eso. Una firma válida prueba identidad, no intención. Un crawler legítimo en un mal día y una clave robada se comportan idéntico en la capa de firma — ambos presentan una firma válida. La verificación te da un nombre. No dice nada sobre si el portador de ese nombre está machacando tu origin a 400 peticiones por segundo ahora mismo.
Lo que significa que siempre hay un suelo bajo todo lo demás: el comportamiento. Rate limits, patrones de peticiones, a qué tira un cliente una vez dentro. La verificación te da un nombre. El comportamiento decide si el nombre puede seguir actuando como uno.
El modelo: tres puertas, no una
Pon las tres respuestas en orden y dejan de competir. Se apilan.
- ¿Firmado? Verifica la firma → vía rápida. (Web Bot Auth — prueba)
- ¿Sin firma, pero dice ser un crawler conocido? Reverse-DNS + forward-confirm, o un rango publicado. (IP — origen)
- Pasó cualquier puerta — ahora obsérvalo. Rate limits y comportamiento, siempre activos, para todos. (el suelo)

La forma de tenerlo en la cabeza: aditivo, no un reemplazo. Al ver las puertas es obvio por qué. Las firmas no reemplazan la capa de IP — reducen su radio de impacto. Cada crawler honesto que firma sale del grupo que te ves forzado a juzgar por las circunstancias. A la puerta de IP-y-olfato le queda algo más pequeño y sucio — una población mayormente de malos actores, con la que es mucho más fácil ser agresivo. Y tras ambas, el comportamiento no deja de vigilar, porque la identidad nunca fue lo mismo que la intención.
Detectar un falso mientras el mundo se pone al día
Hasta que las firmas sean universales, casi todo el trabajo es cazar mentirosos de User-Agent. Las señales son consistentes:
- Reverse-resuelve a un host general (Hetzner, OVH, DigitalOcean) sin coincidencia de proveedor
- NXDOMAIN — sin reverse-DNS en absoluto
- Va directo a
/admin,/.env,/wp-login— los crawlers reales leen contenido, no secretos - Cientos de peticiones por minuto, sin Crawl-Delay
- Una errata en el nombre:
GPT-Bot, o una versión que no existe (ClaudeBot/2.x)
Ninguna es prueba por sí sola. Juntas son un scraper con una placa ajena.
La regla que me llevé
Toda la progresión es una idea volviéndose más honesta consigo misma:
- El nombre pide al visitante que se identifique. Confía en una cadena.
- El origen pregunta de dónde vino. Confía en una dirección que rota o no se publica.
- La prueba le pide demostrar que tiene una clave. Confía en las matemáticas — pero solo sobre quién, nunca sobre qué.
Cada puerta acerca la confianza a algo que el visitante no puede falsificar. Ninguna es la meta, porque la meta no existe: incluso una identidad perfecta no dice nada sobre la intención. Verifica por prueba donde puedas, por origen donde no, y sostén la línea con comportamiento para todos — porque un nombre nunca fue una promesa de buen comportamiento.
Aún no lo he construido. Cuando lo haga, será firmas primero, IP como respaldo, comportamiento debajo — y escribiré qué se rompió, porque algo siempre se rompe.
Más sobre esto
También te puede interesar

Diseño Web para Restaurantes en Valencia: Atrae Más Comensales
¿Buscas diseño web para restaurantes en Valencia? Creamos páginas atractivas y funcionales que atraen más clientes. Solicita presupuesto …

Herramientas de generación de leads: cuestionarios, calculadoras y pop-ups inteligentes en Valencia
Descubre cómo cuestionarios, calculadoras y pop-ups inteligentes pueden aumentar tus leads en Valencia y toda España. Guía práctica con e…

Diseño Web para Psicólogos en Orihuela
Creamos páginas web para psicólogos en Orihuela con reserva online, videoconsulta y diseño empático. Solicita presupuesto en 24-48h.