Při zkoumání vybrané trasy použijte Request přidružený k dokončené odpovědi. Tři pozorování držte odděleně:

PoleVýznam
response.request.meta.get('proxy')Vybraná proxy URL tohoto požadavku, pokud existuje
response.ip_addressAdresa poskytnutá handlerem stahování, případně None
Zpráva o zdroji od důvěryhodného cíleVeřejný zdroj tam pozorovaný

Uvnitř callbacku vynechte z rutinní diagnostiky části URL nesoucí přihlašovací ú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 handleru HTTP/1.1 Scrapy 2.13.3 pochází adresa od protistrany spojení odpovědi, nikoli ze služby výstupní IP. Některé cesty, včetně odpovědí nulové délky, ji mohou nechat None. Jiné handlery ji mohou vyplnit odlišně. None samo o sobě neprokazuje přímé směrování.

Pro kontrolu výstupu se dotážete důvěryhodného koncového bodu v rámci zamýšlené proxy politiky a uchovejte identitu požadavku spolu s pozorováním. Rotující middleware může pozdější kontrole dát jiný koncový bod.

Přesměrování vytvářejí také další požadavek. Konečná metadata popisují tuto fázi; prohlédněte historii přesměrování a případný nový výběr middlewarem, místo abyste je brali jako důkaz trasy prvního URL.

Související články