Čitanje Scrapy proxy krajnje točke i IP adrese veze
Koristite metapodatke zahtjeva za odabrani proxy, tretirajte response.ip_address kao informaciju o peeru koju daje handler i provjerite izlazni IP na odredištu.
Koristite Request vezan za završeni odgovor kada pregledate njegovu odabranu rutu. Držite tri zapažanja odvojeno:
| Polje | Značenje |
|---|---|
response.request.meta.get('proxy') | Odabrani proxy URL ovog zahtjeva, ako postoji |
response.ip_address | Adresa koju daje handler za preuzimanje, moguće None |
| Izvještaj izvora s pouzdanog odredišta | Javni izvor zapažen tamo |
Unutar callbacka izostavite dijelove URL-a s akreditive 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 handleru Scrapy 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 handleri je mogu popuniti drugačije. None sam po sebi ne dokazuje direktno rutiranje.
Za provjeru izlaza upitajte pouzdanu krajnju točku prema predviđenoj proxy politici i sačuvajte identitet zahtjeva uz zapažanje. Rotirajući middleware može dati kasnijoj provjeri drugu krajnju točku.
Preusmjeravanja stvaraju još jedan zahtjev. Završni metapodaci opisuju tu fazu; pregledajte historiju preusmjeravanja i svaki ponovni odabir middlewarea umjesto da to smatrate dokazom rute prvog URL-a.