Når du undersøker den valgte ruten, bruk Request-objektet som er knyttet til det fullførte svaret. Hold tre observasjoner atskilt:

FeltBetydning
response.request.meta.get('proxy')Denne forespørselens valgte proxy-URL, når den finnes
response.ip_addressAdresse levert av nedlastingsbehandleren, muligens None
Kilderapport fra et klarert målDen offentlige kilden som ble observert der

Inne i en callback, utelat URL-deler med påloggingsinformasjon fra rutinediagnostikken:

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

I Scrapy 2.13.3s HTTP/1.1-behandler kommer adressen fra svarets tilkoblings-peer, ikke fra en utgangs-IP-tjeneste. Noen ruter, inkludert svar med null lengde, kan la den stå som None. Andre behandlere kan fylle den ut annerledes. None beviser ikke i seg selv direkte ruting.

For en utgangssjekk, spør et klarert endepunkt under den tiltenkte proxy-policyen og ta vare på forespørselens identitet sammen med observasjonen. Roterende middleware kan gi en senere sjekk et annet endepunkt.

Omdirigeringer lager også en ny forespørsel. Endelige metadata beskriver det trinnet; undersøk omdirigeringshistorikken og enhver nyvalg fra middleware i stedet for å behandle det som bevis for den første URL-ens rute.

Relaterte artikler