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 solicitudesUser-agent: Googlebot— reglas especiales para Google (todo permitido)
Por qué los sitios utilizan robots.txt:
- Protección contra sobrecarga del servidor — el scraping masivo crea carga en el servidor, ralentizando el trabajo para los usuarios reales
- Ocultación de páginas técnicas — carritos, formularios de pago, endpoints de API no deben ser indexados
- Protección de datos comerciales — los marketplaces no quieren que los competidores descarguen fácilmente todo el catálogo de productos
- 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).
Riesgos legales del scraping: lo que dice la ley
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
- Cumple con robots.txt — si una sección está prohibida para el scraping, no intentes eludirla. Busca fuentes de datos alternativas.
- 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.
- 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.
- Scrapea solo datos públicos — no intentes acceder a secciones cerradas, APIs o bases de datos.
- 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.
- 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
- 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).
- Rotación por tiempo (cada 5-10 minutos) — una IP se usa para varias solicitudes, luego se cambia. Comportamiento más natural.
- 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.
- 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:
- Verificamos robots.txt — Wildberries permite el scraping de las páginas de productos, pero prohíbe los endpoints de API.
- Usamos proxies residenciales — para cada región (Moscú, SPb, Novosibirsk) tomamos proxies de esa región.
- Rotación por cada solicitud — cada producto se scrapea desde una nueva IP.
- Retraso de 2-3 segundos — hacemos una pausa entre solicitudes.
- 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:
- Verificamos robots.txt — Avito permite el scraping de las páginas de anuncios, pero con un límite de Crawl-delay: 5 segundos.
- Usamos proxies residenciales — rotación cada 10 solicitudes (no en cada solicitud, para no parecer sospechoso).
- Retraso de 5-7 segundos — cumplimos con el Crawl-delay de robots.txt.
- Scrapeamos en horas nocturnas — cuando la carga en el sitio es mínima (2-6 am).
- 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:
- Verificamos robots.txt — se permite el scraping de /catalog/, se prohíbe /admin/ y /api/.
- 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).
- Proxies residenciales con rotación cada 5 minutos — una IP hace 20-30 solicitudes, luego se cambia.
- Retraso de 3-5 segundos — simulamos el comportamiento de un usuario normal.
- 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:
- Abre la configuración de la tarea (Task Settings)
- Activa "Respect robots.txt"
- Establece un retraso (Delay) de 3-5 segundos
- Conecta proxies en la sección "Proxy Settings"
- 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...