Use la Request asociada a la respuesta completada cuando inspeccione su ruta seleccionada. Mantenga tres observaciones por separado:

CampoSignificado
response.request.meta.get('proxy')La URL del proxy seleccionado de esta solicitud, cuando existe
response.ip_addressDirección proporcionada por el controlador de descargas, posiblemente None
Informe de origen de un destino de confianzaEl origen público observado allí

Dentro de una callback, omita las partes de la URL con credenciales en el diagnóstico habitual:

from urllib.parse import urlsplit

proxy = response.request.meta.get('proxy')
proxy_host = urlsplit(proxy).hostname if proxy else None
self.logger.info(
    'target_host=%s proxy_host=%s peer_ip=%s',
    urlsplit(response.url).hostname, proxy_host, response.ip_address,
)

En el controlador HTTP/1.1 de Scrapy 2.13.3 la dirección proviene del par de la conexión de la respuesta, no de un servicio de IP de salida. Algunas rutas, incluidas las respuestas de longitud cero, pueden dejarla en None. Otros controladores pueden rellenarla de otra forma. None por sí solo no demuestra un enrutamiento directo.

Para comprobar la salida, consulte un endpoint de confianza según la política de proxy prevista y conserve la identidad de la solicitud junto con la observación. Un middleware rotativo puede dar otra dirección a una comprobación posterior.

Las redirecciones también crean otra solicitud. Los metadatos finales describen esa etapa; revise el historial de redirecciones y cualquier nueva selección del middleware en lugar de tomarlo como prueba de la ruta de la primera URL.

Artículos relacionados