In this Article
Scrapy es el framework Python de producción para scraping web serio — rápido, asíncrono y construido para crawling a escala. Pero haz crawl de un objetivo real desde una sola IP de datacenter y serás limitado por tasa o bloqueado en minutos. La solución es enrutar Scrapy a través de proxies — idealmente residenciales — para que las solicitudes parezcan usuarios reales. La buena noticia: el soporte de proxy de Scrapy está incorporado vía request.meta['proxy'], y con un gateway rotativo ni siquiera gestionas una lista de IPs. Esta guía muestra exactamente cómo usar un proxy con Scrapy (por solicitud, un middleware para todas las solicitudes y rotación), y luego clasifica los 8 mejores proxies para Scrapy en 2026. DataImpulse a $1/GB es la línea base de valor.
Soy Andrii Byzov, un CMO Fraccional AI-Native que corre crawlers Scrapy a diario. Abajo: la configuración para copiar y pegar, el truco del orden de middleware, y los proveedores que valen tu presupuesto.
Datos Clave
- Define el proxy con
request.meta['proxy']— elHttpProxyMiddlewareincorporado de Scrapy lo lee y maneja la autenticación desde la URL del proxy (http://user:pass@host:port). - Aplícalo a cada solicitud con un pequeño DownloaderMiddleware, o defínelo por solicitud en
start_requests. - Un gateway rotativo significa ninguna lista de IPs. Apunta
meta['proxy']a un endpoint residencial rotativo (como DataImpulse) y cada solicitud sale de una IP nueva automáticamente. - Para una lista estática de IPs, usa
scrapy-rotating-proxies(ROTATING_PROXY_LIST) — rota, detecta baneos y se sitúa antes delHttpProxyMiddlewareen el orden (sus prioridades por defecto ya hacen esto). - Scrapy soporta proxies HTTP/HTTPS nativamente (no SOCKS5) — usa el endpoint HTTP (puerto 823 de DataImpulse). Combina con residencial a $1/GB, datacenter $0,50/GB, móvil $2/GB en un pool de 90M+, 195 países.
Cómo Usar un Proxy con Scrapy
1. Por solicitud vía meta['proxy']
import scrapy
class IpSpider(scrapy.Spider):
name = "ip"
def start_requests(self):
proxy = "http://YOUR_LOGIN__cr.us:[email protected]:823" # __cr.us = US
yield scrapy.Request("https://httpbin.org/ip", meta={"proxy": proxy})
def parse(self, response):
self.log(response.text) # confirm the egress IP
El HttpProxyMiddleware de Scrapy (habilitado por defecto) recoge el meta['proxy'] y define el header Proxy-Authorization desde las credenciales en la URL — ningún código extra necesario.
2. Un middleware para hacer proxy de cada solicitud
Más limpio para un proyecto entero — define el proxy una vez y se aplica a todas las solicitudes:
# middlewares.py
class DataImpulseProxyMiddleware:
PROXY = "http://YOUR_LOGIN__cr.us:[email protected]:823"
def process_request(self, request, spider):
request.meta["proxy"] = self.PROXY
# settings.py — run BEFORE the built-in HttpProxyMiddleware (750)
DOWNLOADER_MIDDLEWARES = {
"myproject.middlewares.DataImpulseProxyMiddleware": 350,
}
3. Rotando una lista estática de IPs con scrapy-rotating-proxies
Si tienes una lista de proxies (en vez de un gateway rotativo), scrapy-rotating-proxies los rota y detecta baneos:
# pip install scrapy-rotating-proxies
# settings.py
ROTATING_PROXY_LIST = [
"http://YOUR_LOGIN__cr.us:[email protected]:823",
# ...more endpoints/sessions...
]
DOWNLOADER_MIDDLEWARES = {
"rotating_proxies.middlewares.RotatingProxyMiddleware": 610,
"rotating_proxies.middlewares.BanDetectionMiddleware": 620,
}
Con el gateway residencial rotativo de DataImpulse normalmente no necesitas esto — un endpoint ya devuelve una IP nueva por solicitud. Recurre a scrapy-rotating-proxies cuando gestionas muchas sesiones discretas o quieres detección de baneo incorporada. Nota: el soporte de proxy de Scrapy es solo HTTP/HTTPS, así que usa el endpoint HTTP (puerto 823), no SOCKS5; consulta los tutoriales de DataImpulse para los parámetros de sesión.
Mejores Proxies para Scrapy de un Vistazo
| Proveedor | Mejor para Scrapy | Precio residencial | Protocolos | Destacado |
|---|---|---|---|---|
| DataImpulse | Mejor valor, crawlers internos | $1/GB PAYG | HTTP/HTTPS | Pool de 90M+, gateway rotativo, nunca caduca |
| Bright Data | Empresarial + gestionado | ~$4/GB promo; $8 normal | HTTP/HTTPS/SOCKS5 | Web Unlocker, SERP API, datasets |
| Oxylabs | SLA empresarial | desde $6/GB | HTTP/HTTPS/SOCKS5 | Pool de 175M+, scraper APIs |
| Decodo | Mercado medio, grilla geo completa | $3,75/GB (~$2 a 1TB+) | HTTP/HTTPS | Pool de 115M+, sticky hasta 24h |
| IPRoyal | Sesiones sticky largas | desde $7,35/GB | HTTP/HTTPS/SOCKS5 | Sticky hasta 7 días; PAYG barato |
| SOAX | Mezcla residencial + móvil | $3,60/GB Starter | HTTP/HTTPS | 155M+ res, 33M+ móvil |
| Webshare | Económico / self-serve | desde $3,50/mes res; $2,99/mes DC | HTTP/SOCKS5 | Nivel gratis, datacenter más barato |
| NetNut | Estabilidad ISP-residencial | desde $3,53/GB | HTTP/HTTPS | IPs estáticas de ISP de consumidor |

Las selecciones, en resumen
DataImpulse es la línea base de valor para crawlers Scrapy — residencial a $1/GB pay-as-you-go (datacenter $0,50/GB, móvil $2/GB), 90M+ IPs en 195 países, un gateway HTTP/HTTPS rotativo que entrega una IP nueva por solicitud, y segmentación por país/ciudad/ASN en el nombre de usuario. El tráfico nunca caduca, así que las ejecuciones de dev no queman una suscripción. Tasa de éxito publicada 99,51%; G2 4,8/5; soporte humano 24/7. Para crawling interno de alto volumen, es el menor costo por solicitud exitosa.
Bright Data es la opción empresarial (residencial ~$8/GB normal, ~$4 promo) con Web Unlocker, SERP API y datasets. Oxylabs (desde $6/GB, pool de 175M+) es la opción de nivel SLA con scraper APIs. Decodo (desde $3,75/GB, sticky hasta 24h) es la opción equilibrada de mercado medio. IPRoyal (desde $7,35/GB, sticky hasta 7 días) sirve para crawls largos y estables en sesión. SOAX ($3,60/GB, 155M+ residencial + 33M+ móvil) añade un fuerte pool móvil. Webshare (nivel gratis, datacenter desde $2,99/mes) es la entrada económica self-serve, y NetNut (desde $3,53/GB) es la opción de estabilidad ISP-residencial.
Proxies Rotativos vs Sticky con Scrapy
Para crawling amplio, un gateway residencial rotativo es ideal — cada solicitud de Scrapy recibe una IP nueva, lo que reparte la carga y esquiva los límites de tasa sin gestión de IP. Para flujos con estado (login y luego solicitudes de seguimiento), usa una sesión sticky para que la misma IP persista a lo largo de la secuencia, y mantén las cookies activadas (el middleware de cookies de Scrapy está activado por defecto). La mayoría de los crawls de Scrapy son amplios y sin estado, así que el rotativo es el valor por defecto común; reserva el sticky para objetivos autenticados o multi-paso.
Errores Comunes de Proxy en Scrapy
- Orden de middleware. Un middleware de proxy personalizado o
scrapy-rotating-proxiesdebe correr antes delHttpProxyMiddlewareincorporado (número de prioridad menor) o tu proxy no se aplicará. - Esperar que SOCKS5 funcione. El soporte de proxy de Scrapy es solo HTTP/HTTPS — usa el endpoint HTTP, no una URL SOCKS.
- Hacer crawl demasiado agresivo. Habilita
AUTOTHROTTLE_ENABLEDy unCONCURRENT_REQUESTS/DOWNLOAD_DELAYsensato para que incluso las IPs rotativas no sean martilladas. - IPs de datacenter en objetivos defendidos — son bloqueadas rápido; usa residencial para sitios pesados en anti-bot.
- Sin manejo de baneos. Añade retry/detección de baneo (el BanDetectionMiddleware de
scrapy-rotating-proxiesoRETRY_HTTP_CODESpersonalizado) para que las respuestas bloqueadas se reintenten en una nueva IP, no se parseen como datos.
¿Qué Tipo de Proxy para Scrapy — Residencial, Datacenter o Móvil?
- Residencial ($1/GB) — el valor por defecto para objetivos defendidos (e-commerce, SERPs, social). Si eliges uno, elige este.
- Móvil ($2/GB) — IPs reales de operadora para los objetivos más duros y superficies de web móvil.
- Datacenter ($0,50/GB) — el más barato y rápido para crawling desprotegido, APIs y tu propia infraestructura; no lo apuntes a sitios pesados en anti-bot.
DataImpulse ofrece los tres en una sola cuenta pay-as-you-go, así que un solo proyecto Scrapy puede enrutar cada solicitud al nivel correcto vía el nombre de usuario y el endpoint.
Cómo Empezar con DataImpulse + Scrapy
Paso 1. Crea una cuenta DataImpulse y obtén las credenciales residenciales. El intro de $5 / 5GB nunca caduca — un presupuesto de prueba de verdad.
Paso 2. Define request.meta["proxy"] = "http://YOUR_LOGIN__cr.us:[email protected]:823" por solicitud, o añade el middleware de proxy de una línea para aplicarlo en todas partes. Añade un código de país al nombre de usuario para segmentación geo.
Paso 3. Habilita AUTOTHROTTLE, añade manejo de retry/baneo y deja que el gateway rotativo dé una IP nueva por solicitud. Consulta los tutoriales de DataImpulse y la página de proxies residenciales.
FAQ
¿Cómo uso un proxy en Scrapy?
Define request.meta['proxy'] = 'http://user:pass@host:port' en tus solicitudes — el HttpProxyMiddleware incorporado de Scrapy lo lee y maneja la autenticación desde la URL. Para un proyecto entero, añade un pequeño DownloaderMiddleware que defina request.meta['proxy'] en cada solicitud. Para DataImpulse: http://YOUR_LOGIN__cr.us:[email protected]:823.
¿Cuál es el mejor proxy para Scrapy?
Proxies residenciales para objetivos defendidos — DataImpulse a $1/GB es la opción de valor (90M+ IPs, gateway HTTP/HTTPS rotativo, tráfico que nunca caduca). Bright Data y Oxylabs son las opciones empresariales; Webshare es la más barata para empezar. Todas funcionan con el meta['proxy'] de Scrapy; la elección se reduce a precio, calidad del pool y si necesitas APIs gestionadas.
¿Cómo roto proxies en Scrapy?
Lo más fácil: apunta el meta['proxy'] a un gateway residencial rotativo (DataImpulse) — cada solicitud recibe una IP nueva automáticamente, ninguna lista que gestionar. Para una lista estática de proxies, instala scrapy-rotating-proxies, define ROTATING_PROXY_LIST y coloca su middleware antes del HttpProxyMiddleware incorporado. También detecta baneos y reintenta en una nueva IP.
¿Scrapy soporta proxies SOCKS5?
No nativamente — el HttpProxyMiddleware de Scrapy soporta solo proxies HTTP y HTTPS. Usa el endpoint HTTP (puerto 823 de DataImpulse) para proxies residenciales. SOCKS5 requeriría un download handler personalizado, que rara vez es necesario ya que el gateway HTTP cubre el crawling de Scrapy.
¿Por qué no funciona mi proxy de Scrapy?
La mayoría de las veces es el orden de middleware — un proxy personalizado o el middleware de scrapy-rotating-proxies debe correr antes del HttpProxyMiddleware incorporado (un número de prioridad menor). Otras causas: usar una URL SOCKS (usa HTTP), credenciales faltantes en la URL del proxy, o una IP de datacenter bloqueada en un sitio defendido (cambia a residencial). Comprueba la IP de salida contra https://httpbin.org/ip.
¿Cuánto cuestan los proxies para Scrapy?
El residencial en bruto se cobra por GB — DataImpulse $1/GB (piso de valor), NetNut desde $3,53, SOAX $3,60, Decodo $3,75, Oxylabs desde $6, IPRoyal $7,35; Webshare ofrece suscripciones económicas desde $3,50/mes. Una página crawleada es una pequeña fracción de un GB, así que el residencial por GB es mucho más barato que las APIs gestionadas por registro para crawling de alto volumen con Scrapy; las opciones gestionadas sirven para los objetivos más duros.
