Den Proxy-Endpunkt und die Verbindungs-IP von Scrapy auslesen
Nutzen Sie die Request-Metadaten für den gewählten Proxy, behandeln Sie response.ip_address als vom Handler gelieferte Peer-Information und prüfen Sie die Exit-IP am Ziel.
Verwenden Sie die Request, die an der abgeschlossenen Response hängt, wenn Sie deren gewählte Route untersuchen. Halten Sie drei Beobachtungen getrennt:
| Feld | Bedeutung |
|---|---|
response.request.meta.get('proxy') | Die gewählte Proxy-URL dieser Anfrage, sofern vorhanden |
response.ip_address | Vom Download-Handler gelieferte Adresse, möglicherweise None |
| Quellbericht eines vertrauenswürdigen Ziels | Die dort beobachtete öffentliche Quelle |
Lassen Sie innerhalb eines Callbacks URL-Teile mit Zugangsdaten aus der Routine-Diagnose weg:
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,
)Im HTTP/1.1-Handler von Scrapy 2.13.3 stammt die Adresse vom Verbindungs-Peer der Response, nicht von einem Exit-IP-Dienst. Manche Pfade, etwa Antworten mit Länge null, können sie auf None lassen. Andere Handler können sie anders befüllen. None beweist für sich genommen kein direktes Routing.
Für eine Exit-Prüfung fragen Sie einen vertrauenswürdigen Endpunkt unter der beabsichtigten Proxy-Richtlinie ab und bewahren Sie die Request-Identität zusammen mit der Beobachtung auf. Rotierende Middleware kann einer späteren Prüfung einen anderen Endpunkt geben.
Auch Weiterleitungen erzeugen eine weitere Anfrage. Die finalen Metadaten beschreiben diese Stufe; prüfen Sie die Weiterleitungshistorie und jede erneute Auswahl durch Middleware, statt sie als Beweis für die Route der ersten URL zu nehmen.