Per esaminare il percorso selezionato usate la Request associata alla risposta completata. Tenete separate tre osservazioni:

CampoSignificato
response.request.meta.get('proxy')L'URL del proxy selezionato per questa richiesta, quando esiste
response.ip_addressIndirizzo fornito dal gestore di download, eventualmente None
Rapporto di origine di una destinazione attendibileL'origine pubblica osservata lì

Dentro una callback, omettete le parti dell'URL con credenziali dalla diagnostica ordinaria:

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

Nel gestore HTTP/1.1 di Scrapy 2.13.3 l'indirizzo proviene dal peer della connessione della risposta, non da un servizio di IP di uscita. Alcuni percorsi, comprese le risposte di lunghezza zero, possono lasciarlo None. Altri gestori possono popolarlo diversamente. None da solo non dimostra un routing diretto.

Per un controllo di uscita, interrogate un endpoint attendibile secondo la politica proxy prevista e conservate l'identità della richiesta insieme all'osservazione. Un middleware rotante può dare un altro endpoint a un controllo successivo.

Anche i reindirizzamenti creano un'altra richiesta. I metadati finali descrivono quella fase; esaminate la cronologia dei reindirizzamenti e ogni nuova selezione del middleware invece di considerarla prova del percorso del primo URL.

Articoli correlati