Utilisez la Request attachée à la réponse terminée lorsque vous inspectez sa route sélectionnée. Gardez trois observations distinctes :

ChampSignification
response.request.meta.get('proxy')L'URL du proxy sélectionné pour cette requête, lorsqu'elle existe
response.ip_addressAdresse fournie par le gestionnaire de téléchargement, éventuellement None
Rapport de source d'une destination de confianceLa source publique observée à cet endroit

Dans un callback, omettez les parties d'URL porteuses d'identifiants des diagnostics courants :

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,
)

Dans le gestionnaire HTTP/1.1 de Scrapy 2.13.3, l'adresse vient du pair de la connexion de la réponse, et non d'un service d'IP de sortie. Certains chemins, dont les réponses de longueur nulle, peuvent la laisser à None. D'autres gestionnaires peuvent la remplir différemment. None ne prouve pas à lui seul un routage direct.

Pour un contrôle de sortie, interrogez un point de terminaison de confiance selon la politique de proxy prévue et conservez l'identité de la requête avec l'observation. Un middleware rotatif peut donner un autre point de terminaison à un contrôle ultérieur.

Les redirections créent aussi une autre requête. Les métadonnées finales décrivent cette étape ; examinez l'historique des redirections et toute nouvelle sélection du middleware au lieu d'y voir la preuve de la route de la première URL.

Articles similaires