Čítanie proxy koncového bodu a IP adresy spojenia v Scrapy
Použite metadáta požiadavky pre vybraný proxy, berte response.ip_address ako informáciu o protistrane od handlera a overte výstupnú IP na cieli.
Pri skúmaní vybranej trasy použite Request priradený k dokončenej odpovedi. Tri pozorovania držte oddelene:
| Pole | Význam |
|---|---|
response.request.meta.get('proxy') | Vybraná proxy URL tejto požiadavky, ak existuje |
response.ip_address | Adresa poskytnutá handlerom sťahovania, prípadne None |
| Správa o zdroji od dôveryhodného cieľa | Verejný zdroj tam pozorovaný |
Vnútri callbacku vynechajte z rutinnej diagnostiky časti URL nesúce prihlasovacie údaje:
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 handleri HTTP/1.1 v Scrapy 2.13.3 pochádza adresa od protistrany spojenia odpovede, nie zo služby výstupnej IP. Niektoré cesty, vrátane odpovedí s nulovou dĺžkou, ju môžu nechať None. Iné handlery ju môžu vyplniť inak. None samo o sebe nepreukazuje priame smerovanie.
Pre kontrolu výstupu sa opýtajte dôveryhodného koncového bodu podľa zamýšľanej proxy politiky a uchovajte identitu požiadavky spolu s pozorovaním. Rotujúci middleware môže neskoršej kontrole dať iný koncový bod.
Presmerovania vytvárajú tiež ďalšiu požiadavku. Záverečné metadáta opisujú túto fázu; preverte históriu presmerovaní a akýkoľvek nový výber middleware, namiesto toho, aby ste to brali ako dôkaz trasy prvého URL.