DEV Community

Cover image for Bloquear bots de IA: robots.txt, servidor y Cloudflare
lu1tr0n
lu1tr0n

Posted on Originally published at elsolitario.org

Bloquear bots de IA: robots.txt, servidor y Cloudflare

Meta actualizó sus términos comerciales el 30 de octubre de 2026: desde esa fecha, cualquier cuenta de negocio en Facebook, Instagram o WhatsApp autoriza a la empresa a rastrear su sitio web y usar ese contenido para entrenar sus modelos de IA, sin opción de rechazar la cláusula si seguís usando esas plataformas. Para cualquier developer o medio que no quiera sumarse, aprender a bloquear bots de IA deja de ser un detalle técnico menor.

El rastreador de Meta no es el único que recorre la web todos los días. GPTBot de OpenAI, ClaudeBot de Anthropic, CCBot de Common Crawl y Google-Extended también indexan contenido para entrenar modelos. Cada uno se identifica con un user-agent distinto, y cada uno respeta (o ignora) las reglas de bloqueo a su manera.

TL;DR

  • Disallow por user-agent en robots.txt frena a GPTBot, ClaudeBot y CCBot sin tocar el resto del tráfico.
  • Cloudflare bloquea scrapers de IA con un switch en el dashboard, sin tocar el servidor ni el código.
  • Las reglas por user-agent en Nginx o Apache cortan la petición antes de llegar a la aplicación.
  • robots.txt es voluntario: un scraper sin escrúpulos lo puede ignorar, por eso conviene sumar una regla de servidor.
  • Meta autoriza desde el 30 de octubre de 2026 a sus bots a rastrear sitios comerciales para entrenar IA.

¿Qué es bloquear bots de IA?

Bloquear bots de IA es aplicar reglas de robots.txt, filtros por user-agent en el servidor y servicios de borde como Cloudflare para impedir que los rastreadores automáticos de empresas de inteligencia artificial descarguen el contenido de un sitio y lo usen para entrenar o alimentar modelos generativos.

La diferencia con bloquear un buscador tradicional es el objetivo final del rastreo. Googlebot indexa para mostrar tu página en resultados de búsqueda y te manda tráfico de vuelta. Un scraper de IA copia el texto para entrenar un modelo o para generar respuestas que compiten directamente con tu sitio, sin enlace ni visita de regreso.

No todos los rastreadores de IA son iguales. Algunos, como GPTBot y ClaudeBot, publican su user-agent y respetan robots.txt porque sus empresas documentan públicamente cómo rastrean. Otros, usados por actores menos transparentes, rotan de user-agent o ignoran directamente el archivo. Por eso ninguna de las técnicas de este artículo funciona sola al cien por cien: se combinan.

Por qué bloquear bots de IA importa en 2026

El caso de Meta es el más reciente y el más amplio. Según sus nuevos términos comerciales, vigentes desde el 30 de octubre de 2026, la empresa puede usar software automatizado como web scrapers, bots, robots, spiders y crawlers para acceder, indexar y analizar cualquier dominio asociado a una cuenta de negocio, y usar ese contenido para entrenar sus productos de IA. No hay forma de rechazar solo esa cláusula: la alternativa es dejar de usar Facebook, Instagram o WhatsApp para fines comerciales.

El abogado de propiedad intelectual Matt Topic, de Loevy & Loevy, calificó la cláusula como una disposición notable para enterrar en los términos de servicio, dado que le da a Meta acceso a material que en un mercado de licencias costaría millones de dólares, según declaró a Nieman Lab. James Grimmelmann, profesor de derecho digital en Cornell, fue más allá: en la interpretación más amplia, Meta podría construir un archivo completo de todo el contenido y servirlo luego, directamente o vía IA, incluso en competencia con el medio que lo publicó originalmente.

Este patrón no es nuevo. X, antes Twitter, restringió el scraping no autorizado en sus términos desde 2023 para después vender ese mismo acceso a Grok; LinkedIn demandó en los últimos años a varias empresas dedicadas a extraer datos de perfiles. Lo distinto en el caso de Meta es la escala: cualquier negocio con una página de Facebook queda adentro de la cláusula, sin aviso individual ni opción de rechazo parcial.

Meta no es la excepción, es la norma que se está volviendo explícita. OpenAI, Anthropic, Google, Common Crawl y ByteDance operan rastreadores propios con el mismo fin: alimentar modelos de lenguaje con texto fresco de la web. La diferencia es que la mayoría de esas empresas publica su user-agent y respeta, al menos en teoría, el estándar de robots.txt; Meta todavía no detalla cuál será el user-agent exacto de su rastreador bajo los nuevos términos.

Los nuevos términos de Meta entran en vigencia el 30 de octubre de 2026.

Cómo funciona robots.txt frente a los rastreadores de IA

robots.txt es un archivo de texto plano que vive en la raíz de tu dominio (tusitio.com/robots.txt) y le dice a cualquier bot qué partes del sitio puede o no puede visitar. El estándar, formalizado como Robots Exclusion Protocol, es una convención: el bot tiene que leerlo y decidir obedecerlo. No hay ningún mecanismo técnico que fuerce el cumplimiento.

La mayoría de los rastreadores de IA documentan su propio user-agent para que puedas bloquearlos de forma selectiva. Los más comunes en 2026 son GPTBot (OpenAI), ClaudeBot y anthropic-ai (Anthropic), CCBot (Common Crawl, usado para entrenar muchos modelos abiertos), Google-Extended (controla el entrenamiento de Gemini sin afectar la indexación normal de Google), Bytespider (ByteDance) y PerplexityBot (Perplexity AI).

Un robots.txt que bloquea esos rastreadores específicos, pero deja pasar al resto, se ve así:

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: anthropic-ai
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Bytespider
Disallow: /

User-agent: PerplexityBot
Disallow: /

User-agent: *
Allow: /
Enter fullscreen mode Exit fullscreen mode

Cada bloque User-agent apunta a un rastreador puntual; Disallow: / le prohíbe absolutamente todo el sitio a ese user-agent. El bloque final, User-agent: * con Allow: /, deja pasar a todos los demás, incluido Googlebot, para que tu sitio siga apareciendo en el buscador. Si subís ese archivo a tusitio.com/robots.txt y lo visitás con el navegador, deberías ver exactamente ese texto; no hace falta reiniciar nada, los bots lo vuelven a leer en cada visita.

El estándar es insensible a mayúsculas en el nombre del user-agent, así que User-agent: gptbot y User-agent: GPTBot son equivalentes para cualquier bot que implemente el protocolo correctamente. Lo que sí importa es la ruta exacta después de Disallow: / bloquea todo el sitio, mientras /blog/ solo bloquea esa carpeta.

flowchart TD
    A["Bot de IA visita tusitio.com"] --> B["Lee /robots.txt"]
    B --> C{"Su user-agent esta en Disallow?"}
    C -->|"Si, y lo respeta"| D["No rastrea el sitio"]
    C -->|"No esta listado"| E["Rastrea el contenido"]
    C -->|"Si, pero lo ignora"| E
Enter fullscreen mode Exit fullscreen mode

⚠️ Ojo: robots.txt es una señal, no una cerradura. Un bot mal portado puede leer el archivo y rastrear igual; para esos casos hace falta bloquear a nivel de servidor o de CDN, no solo declarar la regla.

Reglas por user-agent a nivel de servidor

Cuando un rastreador no respeta robots.txt, la siguiente capa es rechazar la conexión antes de que llegue a tu aplicación, comparando la cabecera User-Agent de cada petición HTTP contra una lista negra. Esto corre en Nginx o Apache, así que aplica sin importar en qué lenguaje esté escrito tu backend.

En Nginx, dentro del bloque server de tu configuración (normalmente en /etc/nginx/sites-available/tusitio.conf en Linux), agregá:

if ($http_user_agent ~* "(GPTBot|ClaudeBot|anthropic-ai|CCBot|Bytespider|PerplexityBot)") {
    return 403;
}
Enter fullscreen mode Exit fullscreen mode

La expresión regular ~* es insensible a mayúsculas. Cada petición cuyo User-Agent contenga alguno de esos nombres recibe un 403 Forbidden antes de que Nginx siquiera pase la petición a PHP, Node o Python. Después de guardar, probá la sintaxis con nginx -t y recargá con systemctl reload nginx.

En Apache, el equivalente va en un bloque <VirtualHost> o en un .htaccess en la raíz del sitio:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|ClaudeBot|anthropic-ai|CCBot|Bytespider|PerplexityBot) [NC]
RewriteRule ^ - [F,L]
Enter fullscreen mode Exit fullscreen mode

El flag [NC] hace la comparación insensible a mayúsculas, y [F,L] fuerza un 403 y detiene cualquier otra regla de reescritura. Necesitás el módulo mod_rewrite habilitado (a2enmod rewrite en Debian/Ubuntu) antes de que esto funcione.

Para confirmar que la regla está activa, simulá la visita de un bot con curl desde cualquier terminal Linux o macOS (en Windows, con PowerShell, cambiá las comillas simples por dobles):

curl -A "GPTBot" -I https://tusitio.com/
Enter fullscreen mode Exit fullscreen mode

Si la regla funciona, la primera línea de la respuesta debería decir HTTP/2 403 en lugar del HTTP/2 200 que obtendrías con un navegador normal.

Cómo empezar: bloquear scrapers de IA con Cloudflare

Si tu sitio ya pasa por Cloudflare, no necesitás tocar ni robots.txt ni la configuración del servidor: el bloqueo se activa desde el dashboard. Cloudflare mantiene una lista administrada de user-agents de IA conocidos y la actualiza del lado de ellos, así que no tenés que mantener tu propia lista de bots cada mes.

Los pasos, documentados en el panel de bots de Cloudflare, son:

  • Entrá a dashboard.cloudflare.com y elegí el dominio.
  • Ve a Security → Bots (en algunos planes aparece como Security → Settings).
  • Activá el control AI Scrapers and Crawlers (también conocido como "Block AI Bots" en versiones anteriores del panel).
  • Guardá los cambios: la regla queda activa de inmediato, sin propagar DNS ni reiniciar nada.

Por dentro, ese toggle agrega una regla administrada que compara el user-agent y, en los planes de pago, también la huella de red del cliente, algo que un simple Disallow en robots.txt no puede hacer. Cloudflare documentó esta función en su blog como una forma de que cualquier sitio, sin tocar código, frene a los rastreadores de entrenamiento de IA.

GPTBot, ClaudeBot y CCBot publican su user-agent; otros rastreadores lo rotan.

sequenceDiagram
    participant B as Bot de IA
    participant CF as Cloudflare
    participant O as Servidor origen
    B->>CF: solicita pagina con User-Agent GPTBot
    CF->>CF: compara contra lista de AI Scrapers
    alt user-agent bloqueado
        CF-->>B: 403 Forbidden
    else user-agent permitido
        CF->>O: reenvia la peticion
        O-->>CF: responde contenido
        CF-->>B: entrega la pagina
    end
Enter fullscreen mode Exit fullscreen mode

Casos de uso reales

Un blog personal que no quiere que su contenido termine citado sin atribución en respuestas de chatbots puede resolver todo con un robots.txt de diez líneas: no tiene tráfico suficiente para justificar Cloudflare ni acceso al servidor para tocar Nginx.

Un medio de noticias mediano, con el escenario que describe Nieman Lab sobre Meta, necesita la capa de servidor o CDN: un bot que entrena modelos para competir con el propio medio tiene un incentivo fuerte para ignorar una convención voluntaria, así que la regla tiene que ser técnica, no solo declarativa.

Una tienda online que vive de aparecer en Google Shopping y en resultados de búsqueda normales necesita cuidado extra: bloquear de más, por ejemplo con un Disallow: / genérico sin especificar user-agent, también saca a Googlebot y mata el tráfico orgánico. La regla siempre va dirigida a un user-agent puntual, nunca a todos.

Errores comunes y buenas prácticas

  • Bloquear con User-agent: * por error: un Disallow genérico sin especificar el bot saca también a los motores de búsqueda que te mandan tráfico.
  • Confiar solo en robots.txt: funciona con los rastreadores que lo documentan y lo respetan, pero no detiene a un scraper que rota el user-agent a propósito.
  • Olvidar las subrutas de API: un bot puede ignorar la página HTML y pegarle directo a tu API REST o GraphQL si no tiene la misma regla de bloqueo.
  • No revisar los logs del servidor: sin mirar qué user-agents te visitan de verdad, es fácil bloquear bots que ya no existen e ignorar uno nuevo.
  • Cachear la respuesta 403: si tu CDN cachea esa respuesta para la ruta equivocada, podés bloquear por accidente a usuarios reales con el mismo user-agent genérico de un navegador viejo.

Comparativa: robots.txt, reglas de servidor y Cloudflare

OpciónCuándo usarlaVentajaLimitación

robots.txtBots que documentan su user-agent y respetan el estándarCero infraestructura, se edita en segundosEs una convención: nada obliga a nadie a obedecerla
Reglas de servidor (Nginx/Apache)Tenés acceso root o a la configuración del servidorBloqueo real a nivel de red, imposible de ignorarRequiere mantenimiento manual de la lista de user-agents
Cloudflare AI Scrapers and CrawlersEl sitio ya pasa por CloudflareLista administrada, un switch, sin tocar códigoDepende de un tercero y de qué plan tengas activo

Profundizando: cómo detectan los bots y cómo evaden el bloqueo

El bloqueo por user-agent asume que el bot se identifica con honestidad. Nada impide que un scraper mande un header User-Agent idéntico al de Chrome en Windows; en ese caso, ni robots.txt ni una regla de user-agent lo van a detectar, porque desde el servidor se ve indistinguible de una visita humana real.

Ahí es donde entra el fingerprinting de red que ofrecen servicios como Cloudflare: en vez de mirar solo el header declarado, analizan patrones de la conexión TLS, el orden en que llegan las cabeceras HTTP y el comportamiento de navegación (si ejecuta JavaScript, si carga imágenes, si respeta cookies) para estimar si el cliente es un bot aunque mienta su identidad. Es una heurística, no una certeza, y por eso estos sistemas también generan falsos positivos ocasionales contra navegadores poco comunes o VPNs agresivas.

Una capa adicional, más allá del alcance práctico de este artículo pero relevante para sitios grandes, es el challenge de prueba de trabajo: en vez de bloquear directamente, el servidor le pide al cliente resolver un cálculo breve antes de servir la página. Un navegador real lo resuelve en milisegundos sin que el usuario note nada; un scraper que hace miles de peticiones por segundo ve multiplicado su costo de cómputo, lo cual desincentiva el rastreo masivo sin cerrar por completo el acceso.

Grimmelmann advierte, en su lectura de los nuevos términos de Meta, que ninguna de estas tres técnicas resuelve el problema de fondo: un bloqueo técnico frena al bot, pero no borra el permiso contractual que ya firmaste al aceptar los términos de una cuenta de negocio. La única forma de revertir ese permiso, según los términos actuales, es dejar de usar la cuenta.

flowchart TD
    A["Peticion de un bot"] --> B["Capa 1: robots.txt"]
    B --> C["Capa 2: regla de user-agent en el servidor"]
    C --> D["Capa 3: Cloudflare o CDN con fingerprinting"]
    D --> E["Bloqueado o permitido"]
Enter fullscreen mode Exit fullscreen mode

💡 Tip: antes de bloquear nada, mirá los logs de acceso de tu servidor durante una semana y filtrá por el campo User-Agent. Vas a ver con nombre y apellido cuáles de estos bots te visitan de verdad, en vez de bloquear una lista genérica que bajaste de un artículo.

📖 Resumen en Telegram: Ver resumen

Tu próximo paso: revisá los logs de tu servidor de la última semana, filtrá por el header User-Agent y armá tu propio robots.txt con los bots que realmente te visitan antes de copiar una lista genérica.

Preguntas frecuentes

¿robots.txt bloquea de verdad a GPTBot y ClaudeBot?

Sí, mientras OpenAI y Anthropic sigan documentando públicamente esos user-agents y configuren sus rastreadores para respetar el estándar, como hacen hoy. El riesgo es que la política de una empresa cambie o que un bot nuevo no se identifique igual.

¿Cloudflare bloquea scrapers de IA en el plan gratuito?

Sí, el control de bots de IA está disponible para todos los dominios que usan Cloudflare, incluido el plan Free; los planes de pago suman además fingerprinting de red más granular.

¿Qué pasa si un rastreador de IA ignora el robots.txt?

No hay consecuencia automática: robots.txt no es una barrera técnica. Si te importa de verdad que ese bot no entre, necesitás sumar una regla de servidor o de CDN que rechace la conexión por user-agent o por comportamiento.

¿Las reglas por user-agent afectan al SEO en Google?

No, si la regla apunta a un user-agent específico como GPTBot o CCBot. El riesgo de afectar el SEO aparece solo si usás un Disallow: / genérico que también le cierra la puerta a Googlebot.

¿Meta-ExternalAgent respeta las reglas de robots.txt?

Meta documenta su rastreador de IA bajo ese nombre y dice respetar robots.txt para ese user-agent puntual, pero los nuevos términos comerciales no detallan si eso cambia para el rastreo que habilitan desde cuentas de negocio a partir del 30 de octubre de 2026.

¿Conviene bloquear todos los scrapers de IA o solo algunos?

Depende del sitio. Un medio que vive de la atención y de la publicidad tiene sentido en bloquear a todos los que no le devuelven tráfico. Un proyecto open source que quiere que su documentación alimente asistentes de código puede preferir dejar pasar a algunos de forma selectiva.

Referencias

  • Nieman Lab: cobertura de los nuevos términos comerciales de Meta y su impacto legal en medios de noticias.
  • Google Search Central: documentación oficial del estándar robots.txt (Robots Exclusion Protocol).
  • Cloudflare Developers: documentación del control de bots y del bloqueo de AI Scrapers and Crawlers.
  • Cloudflare Blog: anuncio original de la función de bloqueo de bots de IA con un clic.
  • Wikipedia: historia y especificación general del archivo robots.txt.

📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.

Top comments (0)