Guía de Configuración y Rotación del Middleware Proxy de Scrapy
TL;DR
El HttpProxyMiddleware integrado de Scrapy lee Request.meta["proxy"] o las variables de entorno del proxy estándar; solo se necesita un middleware personalizado para la política de selección o la telemetría.
Establezca la URL del proxy en la solicitud antes de que el middleware integrado la maneje. Un meta["proxy"] por solicitud anula los proxies de entorno e ignora no_proxy.
Gire solo entre rutas de proxy configuradas y autorizadas y mantenga una ruta estable para cadenas de solicitudes con estado.
El RetryMiddleware de Scrapy maneja los errores temporales por separado de la selección del proxy. No reintente fallos de autenticación 407 sin criterio.
Nstdata proporciona el Host proxy generado, Port, Username, Password y parámetros de sesión; Scrapy no genera esos valores.
¿Qué Necesita Antes de Configurar el Middleware de Proxy de Scrapy?
Necesita un proyecto de Scrapy, un objetivo permitido y una URL de proxy funcional de su proveedor. Para Nstdata, cree un Canal, habilite la Generación de Proxy, seleccione parámetros de producto y enrutamiento, y copie la URL generada desde Detalles del Canal. Mantenga la URL en un almacén secreto. La guía de Proxy de Nstdata enumera el Host de puerta de enlace, Port, ID de Canal, contraseña, país, duración de la sesión y ID de sesión. No sustituya una puerta de enlace adivinada o codifique en duro una contraseña de Canal real en settings.py.
Instale Scrapy en un entorno virtual con python -m pip install scrapy, luego cree un proyecto con scrapy startproject proxy_demo. Coloque los ejemplos a continuación en los archivos de configuración y araña existentes del proyecto. Estos fragmentos están respaldados por documentación pero no son un apretón de manos en vivo de Nstdata: no hay credenciales de Canal disponibles en este artículo.
Descubre Nstproxy Proxy - Empieza Tu Prueba Gratuita Hoy
¿Cómo Elige Scrapy un Proxy para una Solicitud?
Scrapy elige un proxy a través de la clave meta proxy de la solicitud o a través de las variables de entorno del proxy manejadas por su HttpProxyMiddleware integrado. La referencia de middleware de descargador de Scrapy dice que un valor por solicitud tiene prioridad sobre http_proxy y https_proxy, y también ignora no_proxy. Esa prioridad puede sorprender a los equipos cuyo tiempo de ejecución tiene un proxy corporativo configurado.
Una URL de proxy generalmente comienza con http:// incluso para un destino HTTPS. El esquema identifica la conexión del proxy, no el objetivo. No todos los manejadores de descarga integrados de Scrapy admiten SOCKS; la documentación actual menciona a HttpxDownloadHandler como el que admite SOCKS y señala una limitación para H2DownloadHandler. Use la combinación de protocolo y controlador admitida por su implementación.
Método 1: ¿Cómo Configura un Proxy en una Solicitud?
Establezca un proxy en la araña cuando el trabajo tenga una ruta fija y no haya lógica de selección.
Paso 1: Cargar la URL desde el tiempo de ejecución
Inyecte PROXY_URL a través de un gestor de secretos. Debe contener el protocolo generado, Host, Port, Username y Password. No lo imprima.
Paso 2: Adjuntarlo a la solicitud
import os
import scrapy
classIpCheckSpider(scrapy.Spider): name ="ip_check"defstart_requests(self):yield scrapy.Request("https://api.ipapi.is/", meta={"proxy": os.environ["PROXY_URL"]}, callback=self.parse, dont_filter=True,)defparse(self, response): self.logger.info("status=%s url=%s", response.status, response.url)yield{"status": response.status,"body_sample": response.text[:200]}
La documentación de Nstdata utiliza el punto final de verificación de IP para inspeccionar la salida. El cuerpo de muestra puede revelar ubicación, así que manéjelo como datos de diagnóstico y elimínelo de los registros de producción si no es necesario.
Paso 3: Verifique la ruta
Ejecute scrapy crawl ip_check -O ip-check.json en su entorno autorizado. Inspeccione la IP de salida y la región observadas. Confirme que la solicitud utilizó el Canal previsto sin exponer la credencial.
Método 2: ¿Cómo Configura un Proxy a Nivel de Proyecto?
Un proxy de entorno a nivel de proyecto funciona cuando cada solicitud debe usar la misma ruta y no hay excepciones por solicitud.
Paso 1: Proporcione la variable de entorno
Establezca https_proxy y, si es necesario, http_proxy en la URL de proxy generada a través de la inyección secreta del trabajo. Evite un archivo .env comprometido que contenga credenciales.
Paso 2: Deje habilitado el middleware integrado
Scrapy habilita HttpProxyMiddleware por defecto bajo su configuración estándar. No reemplace DOWNLOADER_MIDDLEWARES_BASE; las entradas personalizadas pertenecen a DOWNLOADER_MIDDLEWARES. La referencia oficial de middleware documenta el modelo de activación y orden.
Paso 3: Verifique los anulación por solicitud
Una solicitud de araña con meta["proxy"] anula la ruta del entorno. Registre qué política está activa en la configuración de su trabajo. Si un trabajo mezcla solicitudes proxy y directas, la configuración explícita por solicitud es más fácil de auditar.
Método 3: ¿Cómo Gira Proxies en Middleware Personalizado?
Un middleware de descarga personalizado puede seleccionar de una lista limitada de URLs de proxy ya generadas y aprobadas. No debe inventar nombres de usuario de proveedores ni crear sesiones ilimitadas.
Paso 1: Almacenar rutas aprobadas como secretos
Inyecte un array JSON en PROXY_URLS_JSON. Cada elemento debe ser una URL generada completa para una ruta permitida. En producción, prefiera un almacén de secretos sobre un volcado de entorno en plano.
El middleware selecciona una ruta, mientras que el controlador incorporado de Scrapy realiza la conexión del proxy. Este código es ilustrativo y requiere un proyecto real, rutas y un destino autorizado para ejecutar.
Paso 3: Preservar sesiones con estado e inspeccionar reintentos
Para una cadena de solicitudes que debe retener la misma salida, pase meta={"proxy": existing_url, "keep_proxy": True} a las solicitudes de seguimiento. Confirme la política de sesión pegajosa del proveedor por separado. La documentación de RetryMiddleware de Scrapy enumera los códigos de respuesta temporales y un presupuesto de reintento predeterminado finito; un reintento puede reingresar a su middleware de selección. Decida si un reintento debe mantener o cambiar la ruta, luego pruebe ese comportamiento con un accesorio controlado. Nunca use la rotación para ignorar la política de acceso de un destino.
¿Por qué falla o rota un proxy de Scrapy de manera inesperada?
Un proxy de Scrapy puede fallar debido a credenciales de puerta de enlace incorrectas, precedencia del middleware, protocolos no soportados o respuestas del destino. Un proxy 407 apunta a autenticación o estado del canal. Un error de conexión sugiere error de host, puerto, firewall de salida o desajuste de protocolo. Un destino 403 o 429 requiere revisión de política de origen y tasa. Un 200 con una página de desafío es un fallo de contenido, no una extracción exitosa. La guía de resolución de problemas de Nstdata cubre 407 y conectividad.
Si la rotación parece inesperada, registre un ID de ruta redactado y un ID de sesión para cada solicitud. Verifique si process_request se ejecuta nuevamente en reintentos, si una solicitud de seguimiento perdió keep_proxy y si la duración pegajosa del proveedor expirió. Las estadísticas de Scrapy deben distinguir entre solicitudes intentadas, fallos de proxy, errores de destino y elementos aceptados. Almacene los elementos aceptados con la URL de origen y el tiempo de obtención para que un cambio de IP no oculte la colección duplicada.
¿Qué configuración debería usar?
Use meta["proxy"] por solicitud para enrutamiento explícito, variables de entorno para un trabajo uniforme y un middleware personalizado cuando necesite una política de selección probada. Comience con una solicitud de verificación de IP, luego con una araña autorizada pequeña. Mantenga la verificación de reintento y validación de contenido separadas de la asignación de rutas.
Nstdata Proxy proporciona la ruta de red; Nstdata Proxy Manager puede centralizar grupos y diagnósticos para múltiples trabajos. Si necesita descubrimiento de sitio gestionado y conversión de página en lugar de un pipeline de Scrapy autogestionado, Nstdata Crawl es una API de Crawling Web separada para datos listos para LLM.
P: ¿Necesito un middleware personalizado para un proxy?
No. Establezca Request.meta["proxy"] o una variable de entorno de proxy estándar; el middleware incorporado de Scrapy maneja la ruta.
P: ¿meta["proxy"] anula proxies de entorno?
Sí. Scrapy documenta que el proxy por solicitud tiene prioridad e ignora no_proxy.
P: ¿Debería reintentar HTTP 407?
No. Trata el 407 como un error de autenticación o configuración de canal hasta que se corrija la causa.
P: ¿Todos los controladores de descarga de Scrapy son compatibles con SOCKS5?
No. Consulta la documentación del controlador actual; el soporte de la intermediación de proxy incorporada depende del controlador de descarga.
P: ¿Puede el código ejecutarse sin credenciales de Nstdata?
La sintaxis de Scrapy se puede revisar localmente, pero una prueba de ruta en vivo de Nstdata requiere un canal y una credencial de proxy generada.
Comparar la autenticación por usuario y contraseña de proxy y la autenticación por lista blanca de IP, configurar cada método, diagnosticar errores 407 y elegir un flujo de trabajo Nstdata seguro.
Kai Watanabe
Nov. 5th 2026
Más de 110 millones de IP reales con un 99,9% de éxito de acceso
Respuesta media de ~0,5 s para tareas de alta concurrencia
Desde solo $0.1/GB
Accede al instante a pools premium de proxies residenciales, de centros de datos, IPv6 e ISP.