Branje končne točke proxyja in IP-ja povezave v Scrapy
Uporabite metapodatke zahteve za izbrani proxy, obravnavajte response.ip_address kot informacijo o partnerju, ki jo poda handler, in preverite izhodni IP na cilju.
Za pregled izbrane poti uporabite Request, povezan z zaključenim odgovorom. Tri opažanja držite ločeno:
| Polje | Pomen |
|---|---|
response.request.meta.get('proxy') | Izbrani URL proxyja te zahteve, kadar obstaja |
response.ip_address | Naslov, ki ga poda handler za prenos, morda None |
| Poročilo o viru z zaupanja vrednega cilja | Javni vir, opažen tam |
Znotraj callbacka izpustite dele URL-ja s poverilnicami iz rutinske diagnostike:
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,
)V handlerju HTTP/1.1 v Scrapy 2.13.3 naslov prihaja od partnerja povezave odgovora, ne od storitve izhodnega IP-ja. Nekatere poti, vključno z odgovori ničelne dolžine, ga lahko pustijo None. Drugi handlerji ga lahko izpolnijo drugače. None samo po sebi ne dokazuje neposrednega usmerjanja.
Za preverjanje izhoda vprašajte zaupanja vredno končno točko v skladu s predvideno politiko proxyja in ohranite identiteto zahteve skupaj z opažanjem. Vrtljiva vmesna programska oprema lahko poznejšemu preverjanju da drugo končno točko.
Preusmeritve ustvarijo še eno zahtevo. Končni metapodatki opisujejo to stopnjo; pregledajte zgodovino preusmeritev in vsako ponovno izbiro vmesne programske opreme, namesto da bi to šteli za dokaz poti prvega URL-ja.