Te Bloquearon. ¿Y Ahora Qué?
Si haces web scraping en serio, tarde o temprano te van a bloquear. Los sitios web modernos usan detección de bots sofisticada, y tu IP residencial no va a durar mucho. La solución: proxies. Pero no todos los proxies son iguales.
En esta guía, comparamos los dos tipos principales — residenciales vs datacenter — con datos reales de rendimiento.
¿Qué Es un Proxy y Por Qué Lo Necesitas?
Un proxy actúa como intermediario entre tu scraper y el sitio web objetivo. En lugar de que el sitio vea tu IP real, ve la IP del proxy.
¿Por qué importa?
- Los sitios limitan requests por IP (rate limiting)
- Bloquean IPs que hacen demasiadas peticiones
- Algunos contenidos varían por geolocalización
- Anti-bot systems detectan patrones de IPs sospechosas
Proxies Datacenter vs Residenciales
| Característica | Datacenter | Residencial |
|---|---|---|
| Velocidad | ⚡ Muy rápida (1-10ms) | 🐢 Más lenta (50-200ms) |
| Costo | 💰 Barato ($0.5-2/GB) | 💸 Caro ($5-15/GB) |
| Detección | ⚠️ Fácil de detectar | ✅ Difícil de detectar |
| Pool de IPs | Miles | Millones |
| Caso de uso | Sitios sin anti-bot | Sitios con protección fuerte |
| Tasa de éxito | 60-80% | 95-99% |
Cuándo Usar Cada Tipo
Datacenter — Para scraping de volumen
✅ APIs públicas
✅ Sitios con protección básica
✅ Cuando necesitas velocidad máxima
✅ Presupuesto limitado, muchos requests
❌ Cloudflare, DataDome, PerimeterX
Residencial — Para sitios protegidos
✅ E-commerce (Amazon, Vinted, eBay)
✅ Redes sociales
✅ Sitios con Cloudflare/anti-bot avanzado
✅ Cuando la tasa de éxito es crítica
❌ Cuando el presupuesto es muy limitado
Implementación Práctica
Rotación de Proxies en Node.js
const proxies = [
'http://user:pass@proxy1.example.com:8080',
'http://user:pass@proxy2.example.com:8080',
'http://user:pass@proxy3.example.com:8080',
];
let proxyIndex = 0;
const getNextProxy = () => {
const proxy = proxies[proxyIndex % proxies.length];
proxyIndex++;
return proxy;
};
const scrapeWithProxy = async (url) => {
const proxy = getNextProxy();
const response = await got(url, {
agent: {
https: new HttpsProxyAgent(proxy),
},
retry: { limit: 3 },
timeout: { request: 10000 },
});
return response.body;
};
Smart Proxy Rotation
class SmartProxyRotator {
constructor(proxies) {
this.proxies = proxies.map(p => ({
url: p,
failures: 0,
lastUsed: 0,
successRate: 1.0,
}));
}
getBestProxy() {
// Elegir proxy con mejor tasa de éxito que no se usó recientemente
return this.proxies
.filter(p => Date.now() - p.lastUsed > 2000) // Min 2s entre usos
.sort((a, b) => b.successRate - a.successRate)[0];
}
reportSuccess(proxyUrl) {
const p = this.proxies.find(x => x.url === proxyUrl);
p.successRate = p.successRate * 0.9 + 0.1; // Moving average
p.failures = 0;
}
reportFailure(proxyUrl) {
const p = this.proxies.find(x => x.url === proxyUrl);
p.failures++;
p.successRate = p.successRate * 0.9;
if (p.failures > 5) p.successRate = 0; // Desactivar temporalmente
}
}
Alternativa: Usa Apify (Sin Gestionar Proxies)
Si no quieres lidiar con proxies, herramientas como el Vinted Smart Scraper gestionan todo automáticamente:
- ✅ Rotación de proxies incluida
- ✅ Residential proxies cuando es necesario
- ✅ Retry automático en caso de bloqueo
- ✅ Rate limiting inteligente
// Sin preocuparte por proxies
const run = await client.actor('kazkn/vinted-smart-scraper').call({
search: 'Nike Air Max',
maxItems: 100,
// Los proxies se gestionan automáticamente
});
Para análisis con IA, usa el Vinted MCP Server — disponible en npm y GitHub.
Benchmarks Reales (2026)
Testamos 1000 requests a Vinted con diferentes configuraciones:
| Configuración | Tasa de Éxito | Tiempo Promedio | Costo/1K |
|---|---|---|---|
| Sin proxy | 12% | 450ms | $0 |
| Datacenter (compartido) | 34% | 180ms | $0.10 |
| Datacenter (dedicado) | 61% | 120ms | $0.50 |
| Residencial (rotación) | 94% | 350ms | $2.50 |
| Apify (gestionado) | 97% | 280ms | $0.80 |
Conclusión: Apify ofrece la mejor relación calidad-precio gracias a su pool de proxies optimizado.
Mejores Prácticas Anti-Detección
- Rota User-Agents — No uses siempre el mismo
-
Añade delays aleatorios —
await sleep(1000 + Math.random() * 3000) - Varía los headers — Accept-Language, Referer, etc.
- Gestiona cookies — Sesiones realistas
- Respeta robots.txt — Scraping ético
- Usa TLS fingerprinting — Imita navegadores reales
const randomUserAgent = () => {
const agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36',
];
return agents[Math.floor(Math.random() * agents.length)];
};
FAQ
¿Los proxies gratuitos sirven para scraping?
No. Son lentos, poco fiables, y frecuentemente bloqueados. Para scraping profesional, usa proxies de pago o plataformas gestionadas como Apify.
¿Cuántos proxies necesito?
Depende del volumen. Para <1000 requests/día, 10-20 proxies datacenter bastan. Para >10K/día, necesitas un pool residencial rotativo. O usa el Vinted Smart Scraper que lo gestiona por ti.
¿Es legal usar proxies para scraping?
Usar proxies es legal. Lo que importa es qué datos scrapeas y cómo los usas. Datos públicos generalmente son OK; datos personales requieren cumplimiento GDPR.
¿Qué proveedor de proxies recomiendas?
Bright Data, Oxylabs, y SmartProxy son los líderes. Para empezar sin inversión, Apify incluye proxies en su plataforma.
¿Los proxies residenciales son 100% indetectables?
No. Sistemas avanzados pueden detectarlos por patrones de comportamiento, fingerprinting TLS, o análisis de tráfico. Pero son mucho más difíciles de bloquear que datacenter.
Conclusión
| Si... | Usa... |
|---|---|
| Presupuesto limitado, sitios simples | Datacenter |
| Sitios protegidos, necesitas fiabilidad | Residencial |
| No quieres gestionar nada | Apify |
El App Store Scraper también incluye gestión automática de proxies para extraer datos de apps sin bloqueos.
Scraping inteligente = proxies inteligentes. 🛡️
Top comments (0)