Lire le point de terminaison du proxy et l'IP de connexion de Scrapy
Utilisez les métadonnées de la requête pour le proxy sélectionné, traitez response.ip_address comme une information de pair fournie par le gestionnaire, et vérifiez l'IP de sortie à la destination.
Utilisez la Request attachée à la réponse terminée lorsque vous inspectez sa route sélectionnée. Gardez trois observations distinctes :
| Champ | Signification |
|---|---|
response.request.meta.get('proxy') | L'URL du proxy sélectionné pour cette requête, lorsqu'elle existe |
response.ip_address | Adresse fournie par le gestionnaire de téléchargement, éventuellement None |
| Rapport de source d'une destination de confiance | La 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.