När du undersöker den valda rutten använder du Request-objektet som är kopplat till det slutförda svaret. Håll tre observationer åtskilda:

FältBetydelse
response.request.meta.get('proxy')Den valda proxy-URL:en för denna begäran, när den finns
response.ip_addressAdress som nedladdningshanteraren anger, eventuellt None
Källrapport från ett betrott målDen offentliga källan som observerades där

Inuti en callback utelämnar du URL-delar med inloggningsuppgifter från den vanliga diagnostiken:

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,
)

I Scrapy 2.13.3:s HTTP/1.1-hanterare kommer adressen från svarets anslutnings-peer, inte från en utgående IP-tjänst. Vissa vägar, inklusive svar med noll längd, kan lämna den som None. Andra hanterare kan fylla i den annorlunda. None bevisar inte i sig direkt routning.

För en utgångskontroll, fråga en betrodd endpoint enligt den avsedda proxy-policyn och behåll begärans identitet tillsammans med observationen. Roterande middleware kan ge en senare kontroll en annan endpoint.

Omdirigeringar skapar också en ny begäran. Slutliga metadata beskriver det steget; granska omdirigeringshistoriken och eventuellt nyval från middleware i stället för att behandla det som bevis för den första URL:ens rutt.

Relaterade artiklar