Kada pregledavate odabranu rutu, koristite Request povezan s dovršenim odgovorom. Držite tri zapažanja odvojeno:

PoljeZnačenje
response.request.meta.get('proxy')Odabrani proxy URL ovog zahtjeva, ako postoji
response.ip_addressAdresa koju daje rukovatelj preuzimanja, moguće None
Izvještaj izvora s pouzdanog odredištaJavni izvor zapažen ondje

Unutar callbacka izostavite dijelove URL-a s akreditivima iz rutinske dijagnostike:

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

U HTTP/1.1 rukovatelju Scrapyja 2.13.3 adresa dolazi od druge strane veze odgovora, a ne od usluge izlaznog IP-a. Neke staze, uključujući odgovore nulte duljine, mogu je ostaviti None. Drugi rukovatelji mogu je popuniti drukčije. None sam po sebi ne dokazuje izravno usmjeravanje.

Za provjeru izlaza upitajte pouzdanu završnu točku prema predviđenoj proxy politici i sačuvajte identitet zahtjeva uz zapažanje. Rotirajući middleware može kasnijoj provjeri dati drugu završnu točku.

Preusmjeravanja stvaraju još jedan zahtjev. Završni metapodaci opisuju tu fazu; pregledajte povijest preusmjeravanja i svaki ponovni odabir middlewarea umjesto da to smatrate dokazom rute prvog URL-a.

Povezani članci