Tirdami pasirinktą maršrutą, naudokite Request, susietą su užbaigtu atsakymu. Laikykite tris stebėjimus atskirai:

LaukasReikšmė
response.request.meta.get('proxy')Šios užklausos pasirinktas proxy URL, jei jis yra
response.ip_addressAtsisiuntimo apdorojimo programos pateiktas adresas, galbūt None
Patikimos paskirties šaltinio ataskaitaTen pastebėtas viešasis šaltinis

Callback viduje praleiskite URL dalis su prisijungimo duomenimis iš įprastos diagnostikos:

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

Scrapy 2.13.3 HTTP/1.1 apdorojimo programoje adresas gaunamas iš atsakymo ryšio partnerio, o ne iš išėjimo IP tarnybos. Kai kurie keliai, įskaitant nulinio ilgio atsakymus, gali palikti jį None. Kitos programos gali jį užpildyti kitaip. None savaime neįrodo tiesioginio maršrutizavimo.

Norėdami patikrinti išėjimą, paklauskite patikimo galinio taško pagal numatytą proxy politiką ir išsaugokite užklausos tapatybę kartu su stebėjimu. Besisukantis middleware vėlesniam tikrinimui gali duoti kitą galinį tašką.

Peradresavimai taip pat sukuria dar vieną užklausą. Galutiniai metaduomenys apibūdina tą etapą; peržiūrėkite peradresavimų istoriją ir bet kokį iš naujo middleware pasirinkimą, o ne laikykite to pirmojo URL maršruto įrodymu.

Susiję straipsniai