La dirección del proxy cambia en el registro. El destino nunca aparece en el registro de acceso del proxy. Compruebe si su middleware deja que la solicitud llegue al descargador.

En el middleware del descargador de Scrapy, devolver un Request significa reprogramar esa solicitud. No significa «siga enviando este objeto con los metadatos que acabo de cambiar».

Para un selector que solo elige una ruta, la forma importante es:

def process_request(self, request):
    request.meta['proxy'] = self.choose_proxy()
    return None

Este fragmento muestra la forma actual del gancho; utilice la interfaz de middleware que admita la versión de Scrapy instalada. El selector debe devolver un punto final válido y gestionar explícitamente un grupo no disponible. Un rastreo público que permite intermediarios públicos puede tomar candidatos HTTP de la lista de proxies HTTP para ese valor de retorno.

Devolver None permite que el resto del middleware de solicitudes y el descargador continúen. Devolver otro Request es útil cuando se reemplaza o reintenta trabajo de forma intencionada, pero necesita un motivo y una condición de salida.

Un rotador que devuelve la misma solicitud cada vez puede ejecutar repetidamente su propio código de selección sin llegar a establecer nunca una conexión con el destino. Aumentar los tiempos de espera o abrir más puertos de proxy no puede reparar ese bucle de flujo de control.

Examine la entrada del middleware, el comportamiento de retorno y el primer intento de red real como eventos separados. Una línea de registro que dice «proxy seleccionado» solo demuestra que el selector se ejecutó. No demuestra que se enviara una solicitud con el punto final seleccionado.

Artículos relacionados