Leggere l'endpoint del proxy e l'IP di connessione di Scrapy
Usate i metadati della richiesta per il proxy selezionato, trattate response.ip_address come informazione del peer fornita dal gestore e verificate l'IP di uscita alla destinazione.
Per esaminare il percorso selezionato usate la Request associata alla risposta completata. Tenete separate tre osservazioni:
| Campo | Significato |
|---|---|
response.request.meta.get('proxy') | L'URL del proxy selezionato per questa richiesta, quando esiste |
response.ip_address | Indirizzo fornito dal gestore di download, eventualmente None |
| Rapporto di origine di una destinazione attendibile | L'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.