Citirea punctului final al proxy-ului și a IP-ului conexiunii în Scrapy
Folosiți metadatele cererii pentru proxy-ul selectat, tratați response.ip_address ca informație despre peer furnizată de handler și verificați IP-ul de ieșire la destinație.
Pentru a examina ruta selectată, folosiți Request-ul atașat răspunsului finalizat. Țineți trei observații separate:
| Câmp | Semnificație |
|---|---|
response.request.meta.get('proxy') | URL-ul proxy-ului selectat pentru această cerere, când există |
response.ip_address | Adresă furnizată de handlerul de descărcare, posibil None |
| Raport de sursă de la o destinație de încredere | Sursa publică observată acolo |
În interiorul unui callback, omiteți părțile de URL cu credențiale din diagnosticele obișnuite:
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,
)În handlerul HTTP/1.1 din Scrapy 2.13.3 adresa provine de la peer-ul conexiunii răspunsului, nu de la un serviciu de IP de ieșire. Unele căi, inclusiv răspunsurile de lungime zero, o pot lăsa None. Alte handlere o pot completa diferit. None singur nu dovedește rutare directă.
Pentru o verificare a ieșirii, interogați un punct final de încredere conform politicii de proxy dorite și păstrați identitatea cererii împreună cu observația. Middleware-ul rotativ poate da unei verificări ulterioare alt punct final.
Redirecționările creează și o altă cerere. Metadatele finale descriu acea etapă; examinați istoricul redirecționărilor și orice reselecție a middleware-ului în loc să le considerați dovada rutei primului URL.