Čitanje Scrapy proxy završne točke i IP adrese veze
Koristite metapodatke zahteva za izabrani proxy, tretirajte response.ip_address kao informaciju o peeru koju daje handler i proverite izlazni IP na odredištu.
Kada pregledate izabranu rutu, koristite Request povezan sa završenim odgovorom. Držite tri zapažanja odvojeno:
| Polje | Značenje |
|---|---|
response.request.meta.get('proxy') | Izabrani proxy URL ovog zahteva, ako postoji |
response.ip_address | Adresa koju daje handler za preuzimanje, moguće None |
| Izveštaj izvora sa pouzdanog odredišta | Javni izvor zapažen tamo |
Unutar callback-a izostavite delove URL-a sa 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 handler-u Scrapy-ja 2.13.3 adresa dolazi od peera veze odgovora, a ne od servisa za izlazni IP. Neke putanje, uključujući odgovore nulte dužine, mogu je ostaviti None. Drugi handler-i mogu je popuniti drugačije. None sam po sebi ne dokazuje direktno rutiranje.
Za proveru izlaza pitajte pouzdanu završnu točku prema predviđenoj proxy politici i sačuvajte identitet zahteva uz zapažanje. Rotirajući middleware može dati kasnijoj proveri drugu završnu točku.
Preusmeravanja stvaraju još jedan zahtev. Završni metapodaci opisuju tu fazu; pregledajte istoriju preusmeravanja i svaki ponovni izbor middleware-a umesto da to smatrate dokazom rute prvog URL-a.