Scrapy ప్రాక్సీ ఎండ్పాయింట్ మరియు కనెక్షన్ IP చదవడం
ఎంచుకున్న ప్రాక్సీ కోసం అభ్యర్థన మెటాడేటాను ఉపయోగించండి, response.ip_address ను హ్యాండ్లర్ అందించిన పీర్ సమాచారంగా పరిగణించండి, మరియు గమ్యస్థానంలో ఎగ్జిట్ IP ను ధృవీకరించండి.
ఎంచుకున్న మార్గాన్ని పరిశీలించడానికి, పూర్తయిన ప్రతిస్పందనతో అనుసంధానించిన Request ను ఉపయోగించండి. మూడు పరిశీలనలను వేరుగా ఉంచండి:
| క్షేత్రం | అర్థం |
|---|---|
response.request.meta.get('proxy') | ఈ అభ్యర్థన యొక్క ఎంచుకున్న ప్రాక్సీ URL, ఉన్నప్పుడు |
response.ip_address | డౌన్లోడ్ హ్యాండ్లర్ అందించే చిరునామా, None కావచ్చు |
| నమ్మదగిన గమ్యస్థానం నుండి మూల నివేదిక | అక్కడ గమనించిన ప్రజా మూలం |
కాల్బ్యాక్ లోపల, ఆధారాలతో కూడిన URL భాగాలను సాధారణ నిర్ధారణ నుండి తొలగించండి:
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,
)Scrapy 2.13.3 యొక్క HTTP/1.1 హ్యాండ్లర్లో చిరునామా ప్రతిస్పందన కనెక్షన్ పీర్ నుండి వస్తుంది, ఎగ్జిట్-IP సేవ నుండి కాదు. కొన్ని మార్గాలు, సున్నా-పొడవు ప్రతిస్పందనలతో సహా, దాన్ని None గా వదిలేయవచ్చు. ఇతర హ్యాండ్లర్లు దాన్ని వేరే విధంగా నింపవచ్చు. None తనంతట తాను నేరుగా రూటింగ్ను నిరూపించదు.
ఎగ్జిట్ తనిఖీ కోసం, ఉద్దేశించిన ప్రాక్సీ విధానం కింద నమ్మదగిన ఎండ్పాయింట్ను అడగండి మరియు అభ్యర్థన గుర్తింపును పరిశీలనతో పాటు ఉంచండి. తిరిగే మిడిల్వేర్ తర్వాతి తనిఖీకి మరో ఎండ్పాయింట్ ఇవ్వవచ్చు.
మళ్లింపులు మరో అభ్యర్థనను కూడా సృష్టిస్తాయి. తుది మెటాడేటా ఆ దశను వివరిస్తుంది; మొదటి URL మార్గానికి రుజువుగా పరిగణించే బదులు మళ్లింపు చరిత్రను మరియు మిడిల్వేర్ ఏదైనా పునఃఎంపికను పరిశీలించండి.