Free Proxy Health List

Instantánea en vivo · 3,287 proxies

Middleware de proxy para Scrapy

Middleware de descarga listo para usar que rota en cada petición y reintenta al fallar.

Middleware de proxy para Scrapy

1. middlewares.py

import itertools, random

class RotatingProxyMiddleware:
    def __init__(self):
        with open("proxies.txt") as handle:
            self.proxies = [line.strip() for line in handle if line.strip()]
        random.shuffle(self.proxies)
        self.pool = itertools.cycle(self.proxies)

    def process_request(self, request, spider):
        request.meta["proxy"] = f"http://{next(self.pool)}"

2. settings.py

DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.RotatingProxyMiddleware": 350,
    "scrapy.downloadermiddlewares.retry.RetryMiddleware": 550,
}
RETRY_TIMES = 5
DOWNLOAD_TIMEOUT = 10

Notas que ahorran tiempo

El orden importa: el middleware de proxy debe ejecutarse antes que el de reintentos, así cada reintento elige un proxy nuevo en lugar de repetir el que falló. Mantén DOWNLOAD_TIMEOUT bajo —los proxies gratuitos son la parte más lenta del pipeline— y sube RETRY_TIMES para absorber la tasa de fallo.

Guías relacionadas

Límites de la instantánea pública
Los proxies públicos gratuitos son compartidos y los operan terceros desconocidos. Nunca envíes contraseñas, tokens ni datos personales a través de ellos. Cumple las políticas de uso aceptable de GitHub: nada de spam, ataques, elusión de controles de acceso ni scraping contrario a las políticas del sitio.