Volver al blog

Robots.txt y proxies: cómo analizar a la competencia legalmente y evitar el baneo del sitio web

Guía completa sobre el scraping ético a través de proxies: cómo cumplir con robots.txt, evitar bloqueos y recopilar datos de competidores sin riesgos legales.

📅5 de marzo de 2026
```html

El scraping de datos de competidores es una práctica común para marketers, vendedores de marketplaces y agencias. Monitorea precios en Wildberries, recolecta anuncios de Avito, analiza la gama de productos de los competidores. Pero la mayoría de los sitios bloquean solicitudes masivas, y ignorar el archivo robots.txt puede llevar a problemas legales. En este artículo, analizaremos cómo usar proxies para hacer scraping de manera ética: cumplir con las reglas de los sitios, evitar bloqueos y recolectar datos sin riesgos para el negocio.

Qué es robots.txt y por qué es necesario para los sitios

El archivo robots.txt es un documento de texto en la raíz del sitio que informa a los robots de búsqueda y scrapers qué secciones pueden ser escaneadas y cuáles están prohibidas. Por ejemplo, una tienda en línea puede prohibir la indexación del carrito o del área de usuario, para que esas páginas no aparezcan en Google.

Un archivo robots.txt típico se ve así:

User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /api/
Crawl-delay: 10

User-agent: Googlebot
Allow: /

Sitemap: https://example.com/sitemap.xml

Análisis de las directivas:

  • User-agent: * — reglas para todos los bots (el asterisco significa "cualquier bot")
  • Disallow: /admin/ — prohibido escanear la sección /admin/
  • Crawl-delay: 10 — retraso de 10 segundos entre solicitudes
  • User-agent: Googlebot — reglas especiales para Google (todo permitido)

Por qué los sitios utilizan robots.txt:

  1. Protección contra sobrecarga del servidor — el scraping masivo crea carga en el servidor, ralentizando el trabajo para los usuarios reales
  2. Ocultación de páginas técnicas — carritos, formularios de pago, endpoints de API no deben ser indexados
  3. Protección de datos comerciales — los marketplaces no quieren que los competidores descarguen fácilmente todo el catálogo de productos
  4. Ahorro de tráfico — cada solicitud de un bot cuesta dinero al propietario del sitio

Importante: robots.txt es una recomendación, no una barrera técnica. El archivo no bloquea el acceso físicamente, pero ignorar las reglas puede llevar al bloqueo de tu IP o a demandas (especialmente en EE.UU. y Europa).

El scraping de datos se encuentra en una zona gris de la legislación. En diferentes países existen diferentes reglas, pero hay principios generales que es importante conocer para no recibir una demanda.

Legislación de Rusia

En Rusia no hay una ley específica sobre el scraping, pero se aplican normas generales:

  • Derechos de autor (Código Civil de la Federación Rusa, artículo 1259) — no se pueden copiar textos únicos, fotografías, descripciones de productos sin el permiso del titular de los derechos. El scraping de precios y características suele ser seguro, ya que son datos fácticos.
  • Datos personales (152-FZ) — está prohibido recolectar datos personales de los usuarios (nombre, teléfonos, correo electrónico) sin consentimiento. Esto se refiere al scraping de perfiles de redes sociales o bases de contactos.
  • Competencia desleal (artículo 14.33 del Código de Infracciones Administrativas de la Federación Rusa) — si el scraping se utiliza para copiar un modelo de negocio o engañar a los clientes, se puede recibir una multa de hasta 500,000 rublos.

Legislación de EE.UU. y Europa

En EE.UU. y la UE las leyes son más estrictas:

  • CFAA (Computer Fraud and Abuse Act, EE.UU.) — el acceso no autorizado a sistemas informáticos se considera un delito. La violación de robots.txt puede interpretarse como "acceso no autorizado". Un caso conocido: LinkedIn vs hiQ Labs (2022) — el tribunal dictó que el scraping de datos públicos es legal, pero ignorar barreras técnicas (por ejemplo, captchas) no lo es.
  • GDPR (Reglamento General de Protección de Datos, UE) — está prohibida la recolección de datos personales de ciudadanos de la UE sin consentimiento explícito. Multas de hasta 20 millones de euros o el 4% de la facturación anual de la empresa.
  • Términos de Servicio — muchos sitios prohíben explícitamente el scraping en sus reglas. La violación puede llevar a una demanda por incumplimiento de contrato.

Consejo práctico: Antes de hacer scraping, revisa tres documentos: robots.txt, Términos de Servicio y Política de Privacidad del sitio objetivo. Si el scraping está prohibido explícitamente, busca fuentes de datos alternativas (APIs públicas, programas de afiliados, conjuntos de datos listos).

Qué es seguro hacer scraping

Tipo de datos Riesgo Comentario
Precios de productos Bajo Datos fácticos, no protegidos por derechos de autor
Características de productos Bajo Datos técnicos son seguros
Descripciones únicas Alto Protegidas por derechos de autor
Fotografías de productos Alto Se necesita permiso del titular de los derechos
Contactos de usuarios Crítico Violación de 152-FZ y GDPR
Estadísticas públicas Bajo Datos abiertos son seguros

Scraping ético: cómo recolectar datos sin violaciones

El scraping ético es un equilibrio entre las tareas comerciales y el respeto hacia los propietarios de los sitios. Puedes recolectar los datos necesarios sin causar problemas al recurso objetivo y sin violar las leyes.

Principios básicos del scraping ético

  1. Cumple con robots.txt — si una sección está prohibida para el scraping, no intentes eludirla. Busca fuentes de datos alternativas.
  2. Limita la velocidad de las solicitudes — no envíes 1000 solicitudes por segundo. Haz pausas de 2-10 segundos entre solicitudes para no sobrecargar el servidor.
  3. Usa el User-Agent de tu scraper — no te escondas detrás de un usuario normal. Indica un User-Agent honesto, por ejemplo: "MyCompanyParser/1.0 (contact@mycompany.com)". Esto permite a los administradores del sitio contactarte si surgen problemas.
  4. Scrapea solo datos públicos — no intentes acceder a secciones cerradas, APIs o bases de datos.
  5. No revendas los datos copiados — utiliza la información recolectada para necesidades internas (análisis de competidores, monitoreo de precios), no para crear un servicio competidor.
  6. Cachea los datos — no solicites la misma página varias veces. Guarda los resultados localmente y actualízalos según un horario (una vez al día, una vez a la semana).

Cuándo NO hacer scraping

Hay situaciones en las que el scraping crea más problemas que beneficios:

  • El sitio proporciona API — muchos marketplaces (Wildberries, Ozon, Yandex.Market) tienen APIs oficiales para socios. Úsalas en lugar de hacer scraping — es más rápido, legal y confiable.
  • Los datos están protegidos por captcha o autenticación — eludir la protección puede ser considerado como un hackeo del sistema.
  • El sitio prohíbe explícitamente el scraping en los Términos de Servicio — el riesgo de una demanda es demasiado alto.
  • Estás recolectando datos personales — esto viola el GDPR y 152-FZ con multas enormes.

Cómo leer y cumplir correctamente con robots.txt

El archivo robots.txt se encuentra en la raíz del dominio: https://example.com/robots.txt. Antes de comenzar a hacer scraping, siempre verifica este archivo.

Directivas básicas de robots.txt

Directiva Significado Ejemplo
User-agent Para qué bot son aplicables las reglas User-agent: * (todos los bots)
Disallow Secciones prohibidas para scraping Disallow: /admin/
Allow Secciones permitidas (excepción de Disallow) Allow: /public/
Crawl-delay Retraso mínimo entre solicitudes (en segundos) Crawl-delay: 10
Sitemap Enlace al mapa del sitio (lista de todas las páginas) Sitemap: /sitemap.xml

Ejemplos de robots.txt y cómo interpretarlos

Ejemplo 1: Prohibición total del scraping

User-agent: *
Disallow: /

Esto significa: "A todos los bots se les prohíbe escanear todo el sitio". Hacer scraping de dicho sitio es una violación de las reglas del propietario. Busca fuentes de datos alternativas.

Ejemplo 2: Restricciones selectivas

User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /cart/
Allow: /products/
Crawl-delay: 5

Esto significa: "Se puede hacer scraping de la sección /products/ (productos), pero están prohibidos /admin/, /api/ y /cart/. Haz una pausa de 5 segundos entre solicitudes". Estas son condiciones normales — se puede hacer scraping de productos cumpliendo con los límites.

Ejemplo 3: Reglas para bots específicos

User-agent: Googlebot
Allow: /

User-agent: *
Disallow: /
Crawl-delay: 10

Esto significa: "Google puede escanear todo el sitio, pero todos los demás bots no". Si no eres Google, el scraping está prohibido.

Cómo verificar robots.txt antes de hacer scraping

La mayoría de los lenguajes de programación tienen bibliotecas para verificar automáticamente robots.txt. Ejemplo en Python:

from urllib.robotparser import RobotFileParser

rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()

# Verificamos si se puede hacer scraping de la página
url = "https://example.com/products/item123"
user_agent = "MyParser/1.0"

if rp.can_fetch(user_agent, url):
    print("Scraping permitido")
else:
    print("Scraping prohibido por robots.txt")

Esto verificará automáticamente las reglas y te informará si se puede hacer scraping de una URL específica.

Rate Limiting y retrasos entre solicitudes

Rate Limiting (limitación de velocidad de solicitudes) es una protección para los sitios contra sobrecargas. Si envías demasiadas solicitudes en poco tiempo, el servidor puede bloquear tu IP o mostrar un captcha.

Por qué es importante cumplir con los retrasos

  • Evitar el bloqueo de IP — los sitios rastrean la frecuencia de solicitudes desde una IP. Si envías 100 solicitudes por minuto, te bloquearán como bot.
  • Reducir la carga en el servidor — el scraping masivo puede "caer" el sitio, especialmente si es un recurso pequeño en un hosting barato.
  • Cumplir con Crawl-delay de robots.txt — si el sitio indicó un retraso de 10 segundos, ignorar esta regla es poco ético.
  • Comportamiento más natural — los usuarios normales no abren 10 páginas por segundo. Los retrasos hacen que tu scraper se asemeje a una persona real.

Retrasos recomendados para diferentes tareas

Tipo de scraping Retraso entre solicitudes Comentario
Sitio pequeño (hasta 1000 páginas) 5-10 segundos Baja potencia del servidor
Sitio mediano (tienda en línea) 2-5 segundos Equilibrio óptimo
Gran marketplace (Wildberries, Ozon) 1-3 segundos Infraestructura potente, pero fuerte protección
Endpoints de API Por límites de API (normalmente 10-100 solicitudes/min) Consulta la documentación de la API
Redes sociales (Instagram, VK) 10-30 segundos Límites muy estrictos, alto riesgo de baneo

Cómo implementar retrasos en el código

Ejemplo en Python utilizando la biblioteca time:

import time
import requests

urls = [
    "https://example.com/product1",
    "https://example.com/product2",
    "https://example.com/product3"
]

for url in urls:
    response = requests.get(url)
    print(f"Scrapeado: {url}")
    
    # Retraso de 3 segundos antes de la siguiente solicitud
    time.sleep(3)

Para escenarios más complejos, utiliza retrasos aleatorios (random delay) para que el comportamiento sea aún más natural:

import time
import random

for url in urls:
    response = requests.get(url)
    
    # Retraso aleatorio de 2 a 5 segundos
    delay = random.uniform(2, 5)
    time.sleep(delay)

Rotación de proxies para scraping ético

Incluso si cumples con robots.txt y haces retrasos, hacer scraping de un gran volumen de datos desde una sola IP puede generar sospechas. La rotación de proxies ayuda a distribuir las solicitudes entre diferentes direcciones IP, simulando el comportamiento de muchos usuarios reales.

Por qué se necesita rotación de proxies

  • Eludir Rate Limiting — si el límite es 100 solicitudes/hora desde una IP, entonces 10 proxies te darán 1000 solicitudes/hora.
  • Distribución geográfica — para hacer scraping de datos regionales (precios en Wildberries en Moscú y Vladivostok) se necesitan proxies de diferentes ciudades.
  • Reducir sospechas — las solicitudes desde diferentes IP parecen tráfico de usuarios reales.
  • Respaldo — si un proxy es bloqueado, el scraper cambia automáticamente a otro.

Qué proxies usar para scraping ético

Tipo de proxy Ventajas Desventajas Cuándo usar
Residenciales IPs reales de usuarios domésticos, bajo riesgo de baneo Más caros que otros tipos Scraping de redes sociales, marketplaces con fuerte protección
Móviles IPs de operadores móviles, máxima confianza Los más caros, menos IPs disponibles Scraping de Instagram, TikTok, aplicaciones móviles
Data centers Baratos, alta velocidad Fácilmente detectables, a menudo en listas negras Scraping de sitios simples, pruebas

Recomendación para scraping ético: Usa proxies residenciales con rotación automática. Proporcionan un equilibrio entre costo y confiabilidad, y sus IP parecen usuarios normales.

Estrategias de rotación de proxies

  1. Rotación por cada solicitud — cada solicitud se realiza desde una nueva IP. Adecuado para scraping de sitios con límites estrictos (redes sociales, marketplaces).
  2. Rotación por tiempo (cada 5-10 minutos) — una IP se usa para varias solicitudes, luego se cambia. Comportamiento más natural.
  3. Sticky sessions (sesiones pegajosas) — una IP se usa para toda la sesión del usuario (por ejemplo, autenticación + scraping del área de usuario). Esencial para sitios con autenticación.
  4. Rotación geográfica — para cada región se usa un proxy de esa región. Ejemplo: scraping de precios en Wildberries en Moscú — proxy de Moscú.

Ejemplo de rotación de proxies en Python

import requests
import random
import time

# Lista de proxies (reemplaza con reales)
proxies_list = [
    {"http": "http://user:pass@proxy1.example.com:8080"},
    {"http": "http://user:pass@proxy2.example.com:8080"},
    {"http": "http://user:pass@proxy3.example.com:8080"}
]

urls = [
    "https://example.com/product1",
    "https://example.com/product2",
    "https://example.com/product3"
]

for url in urls:
    # Elegir un proxy aleatorio
    proxy = random.choice(proxies_list)
    
    try:
        response = requests.get(url, proxies=proxy, timeout=10)
        print(f"Scrapeado {url} a través de {proxy}")
    except Exception as e:
        print(f"Error con el proxy {proxy}: {e}")
    
    # Retraso de 3 segundos
    time.sleep(3)

Casos prácticos: scraping de marketplaces y competidores

Consideremos escenarios reales de scraping ético para negocios.

Caso 1: Monitoreo de precios en Wildberries

Tarea: Vendes productos en Wildberries y quieres rastrear los precios de los competidores para ajustar los tuyos.

Problemas:

  • Wildberries bloquea IPs con solicitudes frecuentes
  • Los precios dependen de la región de entrega
  • Necesitas hacer scraping de 100-500 productos diariamente

Solución ética:

  1. Verificamos robots.txt — Wildberries permite el scraping de las páginas de productos, pero prohíbe los endpoints de API.
  2. Usamos proxies residenciales — para cada región (Moscú, SPb, Novosibirsk) tomamos proxies de esa región.
  3. Rotación por cada solicitud — cada producto se scrapea desde una nueva IP.
  4. Retraso de 2-3 segundos — hacemos una pausa entre solicitudes.
  5. Scrapeamos una vez al día — no actualizamos precios cada hora, es suficiente con un monitoreo diario.

Resultado: Obtienes precios actualizados de los competidores sin bloqueos. Wildberries no ve una carga anormal, ya que las solicitudes están distribuidas en el tiempo y IP.

Caso 2: Scraping de anuncios en Avito

Tarea: Eres un agente inmobiliario y quieres recolectar todos los anuncios de venta de apartamentos en tu ciudad para analizar el mercado.

Problemas:

  • Avito muestra captcha con actividad sospechosa
  • Necesitas scrape 5000+ anuncios
  • Los datos se actualizan cada día

Solución ética:

  1. Verificamos robots.txt — Avito permite el scraping de las páginas de anuncios, pero con un límite de Crawl-delay: 5 segundos.
  2. Usamos proxies residenciales — rotación cada 10 solicitudes (no en cada solicitud, para no parecer sospechoso).
  3. Retraso de 5-7 segundos — cumplimos con el Crawl-delay de robots.txt.
  4. Scrapeamos en horas nocturnas — cuando la carga en el sitio es mínima (2-6 am).
  5. Cacheamos los datos — no scrapeamos el mismo anuncio dos veces, guardamos los resultados en una base de datos.

Resultado: Durante la noche recolectas todos los nuevos anuncios sin captcha ni bloqueos. Avito no experimenta sobrecarga, obtienes los datos necesarios.

Caso 3: Análisis del catálogo de un competidor

Tarea: Eres propietario de una tienda en línea de electrónica y quieres saber qué nuevos productos han aparecido en el competidor.

Problemas:

  • El sitio del competidor está en un hosting protegido con un sistema anti-bots
  • Necesitas hacer scraping de un catálogo de 10,000 productos
  • Quieres hacer esto semanalmente

Solución ética:

  1. Verificamos robots.txt — se permite el scraping de /catalog/, se prohíbe /admin/ y /api/.
  2. Usamos Sitemap — en lugar de recorrer todas las páginas manualmente, tomamos la lista de URL del sitemap.xml (esto es más rápido y no crea carga adicional).
  3. Proxies residenciales con rotación cada 5 minutos — una IP hace 20-30 solicitudes, luego se cambia.
  4. Retraso de 3-5 segundos — simulamos el comportamiento de un usuario normal.
  5. Scrapeamos solo nuevos productos — comparamos el catálogo actual con el anterior y scrapeamos solo los cambios.

Resultado: Obtienes semanalmente una lista de novedades del competidor sin bloqueos. El sitio del competidor no experimenta problemas, obtienes una ventaja competitiva.

Herramientas para automatización cumpliendo reglas

Existen herramientas listas que simplifican el scraping ético y cumplen automáticamente con robots.txt.

Scrapy (Python)

Scrapy es un marco popular para scraping en Python. Verifica automáticamente robots.txt y cumple con las reglas.

Configuración para cumplir con robots.txt en Scrapy:

# settings.py

# Activar cumplimiento de robots.txt
ROBOTSTXT_OBEY = True

# Retraso entre solicitudes (en segundos)
DOWNLOAD_DELAY = 3

# Retraso aleatorio (de 0.5 a 1.5 * DOWNLOAD_DELAY)
RANDOMIZE_DOWNLOAD_DELAY = True

# Límite de solicitudes concurrentes a un dominio
CONCURRENT_REQUESTS_PER_DOMAIN = 1

# User-Agent de tu scraper
USER_AGENT = 'MyCompanyParser/1.0 (+http://mycompany.com/bot)'

Con estas configuraciones, Scrapy verificará automáticamente robots.txt antes de hacer scraping y cumplirá con todas las reglas.

Apify (plataforma en la nube)

Apify es una plataforma en la nube para web scraping sin código. Creas un scraper a través de una interfaz visual, y Apify gestiona automáticamente los proxies y el cumplimiento de límites.

Ventajas para scraping ético:

  • Rotación de proxies incorporada (residenciales y data centers)
  • Cumplimiento automático de robots.txt
  • Configuración de retrasos a través de la interfaz
  • Programación de ejecución (scraping diario/semanal)

Octoparse (scraper sin código)

Octoparse es una aplicación de escritorio para scraping sin programación. Es adecuada para marketers y vendedores que no saben escribir código.

Cómo configurar scraping ético en Octoparse:

  1. Abre la configuración de la tarea (Task Settings)
  2. Activa "Respect robots.txt"
  3. Establece un retraso (Delay) de 3-5 segundos
  4. Conecta proxies en la sección "Proxy Settings"
  5. Configura la programación de ejecución (Schedule)

Puppeteer/Playwright (JavaScript)

Puppeteer y Playwright son bibliotecas para automatización de navegadores. Son adecuadas para hacer scraping de sitios con renderizado JavaScript.

Ejemplo de scraping ético con Puppeteer:

const puppeteer = require('puppeteer');
const robotsParser = require('robots-parser');

async function ethicalScrape(url) {
  // Verificamos robots.txt
  const robots = robotsParser('https://example.com/robots.txt', 
    'MyParser/1.0');
  
  if (!robots.isAllowed(url)) {
    console.log('Scraping prohibido por robots.txt');
    return;
  }
  
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  
  // Retraso antes de cargar la página
  await new Promise(resolve => setTimeout(resolve, 3000));
  
  await page.goto(url);
  const data = await page.evaluate(() => {
    return document.querySelector('h1').innerText;
  });
  
  console.log(data);
  await browser.close();
}

ethicalScrape('https://example.com/product1');

Conclusión

El scraping ético a través de proxies es un equilibrio entre las tareas comerciales y el respeto hacia los propietarios de los sitios. Cumpliendo con robots.txt, haciendo retrasos entre solicitudes y utilizando rotación de proxies, puedes recolectar los datos necesarios sin riesgos legales y bloqueos. Los principios clave: verifica robots.txt antes de hacer scraping, limita la velocidad de las solicitudes, usa un User-Agent honesto y scrapea solo datos públicos. Esto protegerá tu negocio de demandas y asegurará el funcionamiento estable de los scrapers.

Si planeas hacer scraping de marketplaces, sitios de competidores o recolectar datos para análisis de mercado, recomendamos usar proxies residenciales con rotación automática. Ellos proporcionan...

```