Las empresas de IA envían sus propios rastreadores por la web, y los propietarios de los sitios responden mediante robots.txt, el archivo de texto plano que indica a los visitantes automatizados qué pueden obtener. Cada gran empresa de IA publica los nombres con los que responden sus rastreadores, de modo que un sitio puede bloquear uno, varios o todos ellos mientras sigue dando la bienvenida a los motores de búsqueda.
Queríamos tener una imagen actual de quién lo hace. El 6 de octubre de 2026 solicitamos el robots.txt de cada uno de los 10.000 dominios principales del ranking Tranco, evaluamos las reglas para 16 rastreadores de IA y dos rastreadores de búsqueda, y registramos cuáles de ellos deja entrar cada sitio en su página de inicio. Esta guía comparte los resultados, el evaluador que escribimos y lo que significan para cualquiera que recopile datos web.
Conclusiones clave
- 5.754 de los 10.000 dominios principales sirvieron un robots.txt que pudimos leer. Uno de cada cinco de ellos, el 20,4%, bloquea al menos un rastreador de IA en su página de inicio.
- Los rastreadores más bloqueados son CCBot de Common Crawl (16,2%), Bytespider de ByteDance (15,3%), GPTBot de OpenAI (15,1%) y ClaudeBot de Anthropic (14,0%).
- Los motores de búsqueda casi nunca se bloquean: Googlebot en el 2,6% y Bingbot en el 3,3%, la mayoría de ellos sitios que bloquean todos los rastreadores. El 17,3% de los sitios deja entrar a ambos motores de búsqueda mientras bloquea al menos un rastreador de IA.
- Muchos sitios separan el entrenamiento de la respuesta. De los 871 sitios que bloquean GPTBot, 345 siguen permitiendo ChatGPT-User, que obtiene páginas cuando una persona pregunta a ChatGPT sobre ellas.
- Cuanto más grande es el sitio, más probable es que bloquee: el 29,5% de los 1.000 principales bloquea al menos un rastreador de IA, frente al 18,8% de los clasificados entre el puesto 5.001 y el 10.000.
Cómo medimos
Para cada dominio solicitamos https://<domain>/robots.txt, recurriendo al host www. si era necesario, con un User-Agent que nos identificaba y enlazaba a nuestro sitio, a un ritmo moderado. A continuación evaluamos las reglas para cada rastreador respecto a la ruta de la página de inicio /.
Seguimos la RFC 9309, el estándar de robots.txt, en lugar del atajo que toman la mayoría de las bibliotecas:
- Un rastreador utiliza todos los grupos que lo nombran, y recurre al grupo
*solo cuando ningún grupo lo hace. - Gana la regla coincidente más larga, y
Allowgana en caso de empate. - Una respuesta 4xx significa que no hay reglas; una respuesta 5xx significa que todo está prohibido.
El analizador integrado de Python aplica la primera regla coincidente en lugar de la más larga, lo que interpreta mal archivos comunes como Disallow: / seguido de Allow: /$, así que escribimos nuestro propio evaluador y lo probamos contra los casos del estándar. Consideramos un rastreador “bloqueado” cuando no puede obtener la página de inicio, y registramos por separado si el archivo nombra al rastreador o lo bloquea solo mediante *.
De los 10.000 dominios, 5.877 devolvieron un robots.txt analizable y 5.754 de ellos eran sitios distintos; el resto eran en su mayoría hosts de API, redes de distribución de contenido y otros dominios que no sirven ningún sitio web. 460 respondieron con una página HTML en lugar de un archivo robots, lo que el estándar trata como ausencia de reglas.
Lo que encontramos
| Rastreador | Operador | Propósito | Bloqueado en la página de inicio | Nombrado en el archivo |
|---|---|---|---|---|
| CCBot | Common Crawl | Archivo web abierto ampliamente usado para entrenamiento de IA | 16,2% | 15,2% |
| Bytespider | ByteDance | Rastreo para modelos de IA | 15,3% | 13,1% |
| GPTBot | OpenAI | Entrenamiento | 15,1% | 17,7% |
| ClaudeBot | Anthropic | Entrenamiento | 14,0% | 15,1% |
| meta-externalagent | Meta | Entrenamiento y productos de IA | 12,5% | 10,8% |
| Google-Extended | Entrenamiento y fundamentación de Gemini, separado de Search | 12,3% | 13,5% | |
| anthropic-ai | Anthropic | Token antiguo de Anthropic | 11,7% | 9,9% |
| Applebot-Extended | Apple | Entrenamiento, separado de Applebot | 11,7% | 10,1% |
| Amazonbot | Amazon | Rastreo para servicios de Amazon | 11,7% | 10,3% |
| cohere-ai | Cohere | Productos de IA | 11,7% | 9,2% |
| PerplexityBot | Perplexity | Índice de búsqueda para respuestas | 10,8% | 12,7% |
| ChatGPT-User | OpenAI | Obtiene una página cuando un usuario pregunta | 9,4% | 11,7% |
| Perplexity-User | Perplexity | Obtiene una página cuando un usuario pregunta | 7,7% | 6,2% |
| OAI-SearchBot | OpenAI | Resultados de búsqueda en ChatGPT | 7,5% | 9,9% |
| Claude-User | Anthropic | Obtiene una página cuando un usuario pregunta | 7,3% | 6,1% |
| Claude-SearchBot | Anthropic | Resultados de búsqueda en Claude | 7,2% | 6,1% |
| Bingbot | Microsoft | Búsqueda web | 3,3% | 7,4% |
| Googlebot | Búsqueda web | 2,6% | 9,1% |
Los porcentajes son sobre los 5.754 sitios. “Nombrado” cuenta los archivos que se dirigen al rastreador por su nombre, ya sea para bloquearlo o para permitirlo, razón por la cual las dos columnas difieren: algunos sitios nombran a un rastreador solo para darle la bienvenida, y 153 sitios bloquean todos los rastreadores mediante * sin nombrar ninguno.
Tres patrones
Se bloquea a los rastreadores de IA; no a los motores de búsqueda. El 17,3% de los sitios deja entrar tanto a Googlebot como a Bingbot en la página de inicio mientras bloquea al menos un rastreador de IA. Solo el 0,2% bloquea a Googlebot por nombre. Los propietarios de sitios están trazando una línea clara entre ser indexados para la búsqueda y ser recopilados para la IA.
El entrenamiento se bloquea más que la respuesta. Los rastreadores que recopilan datos de entrenamiento se bloquean notablemente más a menudo que los que obtienen una página porque una persona ha preguntado sobre ella: GPTBot en el 15,1% de los sitios frente al 9,4% de ChatGPT-User, ClaudeBot en el 14,0% frente al 7,3% de Claude-User. De los 871 sitios que bloquean GPTBot, 345 siguen permitiendo ChatGPT-User, y de los 806 que bloquean ClaudeBot, 390 siguen permitiendo Claude-User. Muchos sitios, en otras palabras, quieren aparecer en las respuestas de IA sin contribuir al entrenamiento.
El bloqueo aumenta con el tamaño. Entre los 1.000 sitios principales, el 29,5% bloquea al menos un rastreador de IA y el 21,0% bloquea a GPTBot. Entre los sitios clasificados entre el puesto 5.001 y el 10.000, esas cifras bajan al 18,8% y al 13,9%. Los grandes editores y plataformas, cuyo contenido es más valioso para el entrenamiento, son los que con mayor probabilidad optan por excluirse.
Solo el 5,2% de los sitios bloquea los cinco rastreadores de IA más destacados (GPTBot, ClaudeBot, Google-Extended, CCBot y PerplexityBot) mientras sigue permitiendo a Googlebot. La mayoría de las exclusiones son selectivas: un sitio bloquea a algunas empresas y no a otras, o bloquea el entrenamiento y permite la respuesta.
El código
El módulo siguiente analiza un archivo robots.txt y lo evalúa para cualquier rastreador según las reglas de la RFC 9309. No tiene dependencias.
import re
from urllib.parse import quote, unquote
def parse_groups(text):
"""Split robots.txt into groups: a list of (user-agent tokens, [(allow, path)])."""
groups, agents, rules, in_rules = [], [], [], False
for raw in text.splitlines():
line = raw.split("#", 1)[0].strip()
if ":" not in line:
continue
key, value = (part.strip() for part in line.split(":", 1))
key = key.lower()
if key == "user-agent":
if in_rules: # a user-agent line after rules starts a new group
groups.append((agents, rules))
agents, rules, in_rules = [], [], False
agents.append(value.lower())
elif key in ("allow", "disallow") and agents:
in_rules = True
if value: # an empty Disallow allows everything
rules.append((key == "allow", value))
if agents:
groups.append((agents, rules))
return groups
def rules_for(groups, product_token):
"""RFC 9309: use every group naming the crawler's product token; otherwise the '*' groups."""
token = product_token.lower()
named = [r for agents, rules in groups for r in rules if token in agents]
if any(token in agents for agents, _ in groups):
return named
return [r for agents, rules in groups for r in rules if "*" in agents]
def _pattern(path):
regex = "".join(".*" if ch == "*" else re.escape(ch) for ch in path.rstrip("$"))
return re.compile(regex + ("$" if path.endswith("$") else ""))
def allowed(groups, product_token, path="/"):
"""Longest matching rule wins; Allow wins a tie (RFC 9309, section 2.2.2)."""
target = quote(unquote(path), safe="/?=&*$%:@!,;~+")
best_len, verdict = -1, True
for allow, rule in rules_for(groups, product_token):
rule = quote(unquote(rule), safe="/?=&*$%:@!,;~+")
if _pattern(rule).match(target):
length = len(rule)
if length > best_len or (length == best_len and allow):
best_len, verdict = length, allow
return verdict
def names(groups, product_token):
"""Does the file address this crawler by name, rather than only through '*'?"""
return any(product_token.lower() in agents for agents, _ in groups)
Y para comprobar un sitio, aquí el nuestro:
import requests
from robots import parse_groups, allowed, names
text = requests.get("https://shifter.io/robots.txt", timeout=15,
headers={"User-Agent": "ExampleSurvey/1.0 (+https://example.com/bot)"}).text
groups = parse_groups(text)
for crawler in ["GPTBot", "ClaudeBot", "Google-Extended", "CCBot", "Googlebot"]:
print(f"{crawler:16} homepage allowed: {allowed(groups, crawler, '/')} named: {names(groups, crawler)}")
Nuestro archivo nombra a los principales rastreadores de IA y los permite explícitamente, así que los cinco aparecen como permitidos, y Googlebot se permite mediante *. Probamos el evaluador contra 16 casos, incluyendo la precedencia de coincidencia más larga, la regla de empate, patrones con comodines y fin de ruta, grupos combinados y archivos vacíos.
Lo que significa para la recopilación de datos
- Lee el robots.txt por rastreador, no solo para
*. Un sitio que da la bienvenida a todos mediante*puede seguir bloqueando a un rastreador nombrado, y una proporción creciente de la web hace exactamente eso. - Identifica a tu recopilador con honestidad. Las reglas de robots solo funcionan si los rastreadores dicen quiénes son. Si recopilas bajo tu propio nombre, comprueba las reglas para ese nombre y para el propósito para el que recopilas.
- Respeta la distinción que trazan los sitios. Muchos sitios separan ahora la búsqueda, el entrenamiento y la obtención bajo demanda. Un recopilador que reúne datos de entrenamiento debería tratar un bloqueo a rastreadores de entrenamiento como aplicable a él, aunque su propio nombre no esté listado.
- Vuelve a comprobarlo con regularidad. Las exclusiones cambian a medida que los sitios actualizan sus archivos; una lista elaborada hace seis meses estará desactualizada.
Nuestra guía sobre robots.txt, exclusiones de IA y señales de reserva cubre las otras señales que usan los sitios y el contexto legal en Europa, y buenas prácticas de web scraping cubre cómo recopilar sin perjudicar a los sitios que visitas. Las canalizaciones de datos de entrenamiento que necesitan respetar las exclusiones en el momento de la obtención se tratan en construcción de conjuntos de datos de entrenamiento a gran escala.
Límites de la medición
- Solo página de inicio. Evaluamos la ruta
/. Muchos sitios bloquean a los rastreadores de IA en secciones específicas, como artículos o páginas de búsqueda, mientras dejan abierta la página de inicio, así que la proporción de sitios que restringen a los rastreadores de IA en algún lugar es mayor que estas cifras. - Solo robots.txt. Los sitios también señalizan mediante cabeceras HTTP, etiquetas meta y términos de servicio, y aplican la restricción mediante gestión de bots. Un sitio que no bloquea a un rastreador en robots.txt puede seguir bloqueándolo a nivel de red.
- Una instantánea. Estos son los archivos tal como se sirvieron el 6 de octubre de 2026, desde una sola red.
- Solo sitios principales. Los 10.000 dominios principales no son toda la web; los sitios más pequeños pueden comportarse de forma diferente.
La conclusión
Uno de cada cinco sitios principales dice ahora a al menos un rastreador de IA que se mantenga alejado de su página de inicio, mientras que casi todos siguen dando la bienvenida a los motores de búsqueda. Las exclusiones son selectivas: los rastreadores de entrenamiento se bloquean más a menudo que los que obtienen páginas para los usuarios, y los sitios más grandes son los que más bloquean.
Para cualquiera que recopile datos web, la lección práctica es leer el robots.txt para el rastreador y propósito concretos implicados, con un evaluador que siga el estándar, y volver a comprobarlo a medida que la web sigue redibujando estas líneas.
Fuentes y referencias
- IETF, RFC 9309: Robots Exclusion Protocol, septiembre de 2022.
- Tranco, lista Q2K34.
- Archivos robots.txt de los 10.000 dominios principales, solicitados por Shifter el 6 de octubre de 2026 usando el código anterior.