Pri skúmaní vybranej trasy použite Request priradený k dokončenej odpovedi. Tri pozorovania držte oddelene:

PoleVýznam
response.request.meta.get('proxy')Vybraná proxy URL tejto požiadavky, ak existuje
response.ip_addressAdresa poskytnutá handlerom sťahovania, prípadne None
Správa o zdroji od dôveryhodného cieľaVerejný 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.

Súvisiace články