Čitanje Scrapy proxy završne točke i IP adrese veze
Koristite metapodatke zahtjeva za odabrani proxy, tretirajte response.ip_address kao podatak o drugoj strani koji daje rukovatelj i provjerite izlazni IP na odredištu.
Kada pregledavate odabranu rutu, koristite Request povezan s dovršenim odgovorom. 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 rukovatelj preuzimanja, moguće None |
| Izvještaj izvora s pouzdanog odredišta | Javni 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.