robots.txt para Web Scraping: Lo que Obliga, Lo que No

robots.txt es una convención, no un contrato, y no es un candado. Aquí está lo que realmente pide a un scraper, lo que no puede imponer, y cómo respetarlo mientras se obtiene la información.

Cada conversación sobre la ética del scraping comienza con robots.txt, y la mayoría se equivoca en una de dos direcciones: tratándolo como una ley por la que serás arrestado si la rompes, o como un ruido que puedes ignorar por completo. No es ninguna de las dos. robots.txt es una convención voluntaria que indica a los bots bien comportados qué rutas preferiría un sitio que dejaran en paz. Saber exactamente lo que obliga y lo que no es lo que separa una operación de datos profesional de una imprudente. Esta es una guía para profesionales, y una nota al principio: esto es informativo, no un consejo legal.

Lo que realmente es robots.txt

robots.txt implementa el Protocolo de Exclusión de Robots, estandarizado en 2022 como RFC 9309. Es un archivo de texto plano que reside en la raíz de un dominio - https://example.com/robots.txt - con un archivo por dominio o subdominio. Es opcional: un 404 simplemente significa que el sitio no tiene archivo y no ha expresado ninguna preferencia. Crucialmente, es una solicitud, no una barrera. Nada en el servicio de un robots.txt impide técnicamente el acceso; depende de la buena fe de los bots que lo leen.

Leerlo es una única solicitud: haz esto antes de rastrear cualquier cosa, cada vez:

# Just read it
curl -s https://example.com/robots.txt

# Through a proxy, as your scraper would see it
curl -s -x http://USER:PASS@gate.quantumproxies.io:8000 https://example.com/robots.txt

Las directivas que importan

El vocabulario es pequeño. Aprende estos y podrás leer cualquier robots.txt de un vistazo:

Una advertencia sobre la sintaxis: los comodines * y $ en los patrones de ruta no están en el estándar original, pero todos los motores principales los respetan, por lo que Disallow: /*.pdf$ es común y efectivo en la práctica.

import urllib.robotparser as rp

# Parse robots.txt and check a URL for your user agent
robots = rp.RobotFileParser()
robots.set_url("https://example.com/robots.txt")
robots.read()

UA = "MyResearchBot/1.0"
print(robots.can_fetch(UA, "https://example.com/products"))  # True / False
print(robots.crawl_delay(UA))                                 # seconds, or None
Diagrama de dos columnas contrastando lo que robots.txt es (una convención, una señal de ritmo) versus lo que no es (un contrato, un control de acceso)
robots.txt es una señal a respetar, no un candado que te detiene o un contrato que te obliga por sí solo.

Lo que obliga - y lo que no

Esta es la parte que la gente más necesita aclarar. robots.txt no es, por sí mismo, legalmente vinculante, y no es un mecanismo técnico de control de acceso - no bloquea nada. Los tribunales generalmente han tratado los datos públicos bien conocidos como públicos. Pero 'no es una ley por sí mismo' no es lo mismo que 'sin consecuencias'. Ignorar los deseos declarados de un sitio puede convertirse en un factor en argumentos de términos de servicio, intrusión o uso indebido de computadoras, invita a bloqueos y escrutinio adicional, y es simplemente mala ciudadanía. La postura pragmática: trata robots.txt como un piso ético que honras, y trata las verdaderas cuestiones legales - datos personales, contratos, jurisdicción - como un asunto separado para resolver correctamente. Nuestro resumen de la legalidad del web scraping en 2026 cubre esos temas por separado.

El cambio de los rastreadores de IA

robots.txt ha tomado una segunda vida como el canal de exclusión para el entrenamiento de IA. Los sitios ahora agregan reglas explícitas para agentes de usuario de IA - GPTBot, Google-Extended, CCBot, ClaudeBot, PerplexityBot y otros - para decir 'indéxame, pero no entrenes conmigo'. Esta es la razón por la que los investigadores ahora argumentan que robots.txt ya no es suficiente por sí solo para mantener los datos públicos fuera de los modelos: depende completamente de que cada rastreador elija obedecer, y solo habla con agentes declarados y bien comportados. Si operas un rastreador, declarar un User-Agent honesto y respetar estas exclusiones es la base. El archivo complementario emergente para la intención opuesta - invitar a herramientas de IA - es llms.txt, que cubrimos en nuestra guía de llms.txt.

# A modern robots.txt often carries AI-specific opt-outs:
#   User-agent: GPTBot
#   Disallow: /
#
#   User-agent: Google-Extended
#   Disallow: /
#
#   User-agent: *
#   Crawl-delay: 5
#   Sitemap: https://example.com/sitemap.xml
Diagrama de flujo de un rastreo conforme: obtener robots.txt, hacer coincidir el agente de usuario, respetar el crawl-delay, rastrear rutas públicas permitidas
Un rastreo conforme lee el archivo primero, respeta las directivas de ritmo, y solo toca las rutas públicas permitidas.

Ser un buen ciudadano mientras se obtienen datos

Respetar robots.txt y recopilar los datos públicos que necesitas no están en conflicto. Las disciplinas que te mantienen bienvenido son las mismas que te mantienen sin bloqueos: respeta Crawl-delay y regula tus solicitudes, identifica tu bot honestamente, almacena en caché agresivamente para nunca volver a obtener la misma página, y evita los puntos finales costosos que un sitio está tratando de proteger. La norma comunitaria, bien expresada en los foros, es que robots.txt existe principalmente para desalentar a los bots que generan tráfico aplastante - así que no seas ese bot. Nuestra guía de scraping educado convierte esto en reglas concretas de ritmo.

Para los equipos que quieren que el cumplimiento se maneje por defecto, una Scraper API puede leer y respetar robots.txt como parte de la solicitud, junto con una limitación de ritmo sensata - por lo que el buen comportamiento es el comportamiento predeterminado de la herramienta, no una casilla que podrías olvidar. También mantiene una huella limpia y declarada en lugar de un script bruto golpeando desde una IP.

Recopila datos públicos de manera conforme

Preguntas frecuentes

¿Aplica legalmente robots.txt al web scraping?

No por sí mismo. robots.txt es una convención voluntaria (RFC 9309), no una ley o un contrato, y no bloquea técnicamente el acceso. Pero ignorarlo puede alimentar reclamos de términos de servicio, intrusión o uso indebido de computadoras e invita a bloqueos y escrutinio. Trátalo como un piso ético a honrar, y maneja las verdaderas cuestiones legales - datos personales, contratos - por separado. Esto no es un consejo legal.

¿Cómo leo el robots.txt de un sitio web?

Envía un HTTP GET a la raíz del dominio con /robots.txt añadido, por ejemplo, https://example.com/robots.txt. cURL o cualquier cliente HTTP funciona; en Python, urllib.robotparser lo analiza y responde can_fetch() para un agente de usuario y URL dados. Un 404 significa que el sitio no tiene robots.txt y no ha declarado ninguna preferencia de rastreo.

¿Qué significa Disallow: /?

Pide a todos los bots coincidentes que no rastreen ninguna ruta en el sitio - todo el dominio está fuera de límites por solicitud. Un Disallow: vacío significa lo contrario: todo está permitido. Recuerda que estas son solicitudes a rastreadores bien comportados, no barreras impuestas, y que los valores de ruta distinguen entre mayúsculas y minúsculas mientras que los nombres de las directivas no.

¿Puedo ignorar robots.txt si los datos son públicos?

Técnicamente puedes, ya que no se impone, pero generalmente no deberías. Ignorarlo es mala ciudadanía, te bloquea más rápido, y puede fortalecer el argumento de un sitio en tu contra en una disputa. El enfoque profesional es respetarlo, rastrear solo rutas públicas permitidas, regular tus solicitudes, y mantener los datos personales completamente fuera de alcance.

robots.txt es un pequeño archivo que lleva una gran señal: aquí está cómo este sitio quiere ser rastreado. Léelo primero, respeta las rutas y el ritmo, declara quién eres, y puedes recopilar los datos públicos que necesitas mientras te mantienes firmemente en el lado correcto tanto de la etiqueta como del riesgo.

Prueba la Scraper API con rastreo consciente de robots