อ่านปลายทางพร็อกซีและ IP ของการเชื่อมต่อใน Scrapy
ใช้เมทาดาทาของคำขอสำหรับพร็อกซีที่เลือก ปฏิบัติต่อ response.ip_address เป็นข้อมูลเพียร์ที่แฮนด์เลอร์ให้ และตรวจสอบ IP ขาออกที่ปลายทาง
เมื่อตรวจสอบเส้นทางที่เลือก ให้ใช้ Request ที่ผูกกับการตอบกลับที่เสร็จสมบูรณ์ แยกข้อสังเกตสามอย่างออกจากกัน:
| ฟิลด์ | ความหมาย |
|---|---|
response.request.meta.get('proxy') | URL พร็อกซีที่เลือกของคำขอนี้ เมื่อมีอยู่ |
response.ip_address | ที่อยู่ที่แฮนด์เลอร์ดาวน์โหลดให้ อาจเป็น None |
| รายงานแหล่งที่มาจากปลายทางที่เชื่อถือได้ | แหล่งสาธารณะที่สังเกตได้ที่นั่น |
ภายใน callback ให้ละเว้นส่วนของ 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,
)ในแฮนด์เลอร์ HTTP/1.1 ของ Scrapy 2.13.3 ที่อยู่มาจากเพียร์ของการเชื่อมต่อของการตอบกลับ ไม่ใช่จากบริการ IP ขาออก บางเส้นทาง รวมถึงการตอบกลับความยาวศูนย์ อาจทำให้เป็น None แฮนด์เลอร์อื่นอาจเติมต่างกัน None เองไม่ได้พิสูจน์การกำหนดเส้นทางโดยตรง
สำหรับการตรวจสอบขาออก สอบถามปลายทางที่เชื่อถือได้ภายใต้นโยบายพร็อกซีที่ตั้งใจ และเก็บอัตลักษณ์ของคำขอไว้กับข้อสังเกต มิดเดิลแวร์ที่หมุนเวียนอาจให้ปลายทางอื่นแก่การตรวจครั้งหลัง
การเปลี่ยนเส้นทางก็สร้างคำขออีกฉบับ เมทาดาทาสุดท้ายอธิบายขั้นนั้น ตรวจสอบประวัติการเปลี่ยนเส้นทางและการเลือกใหม่ใด ๆ ของมิดเดิลแวร์ แทนที่จะถือเป็นหลักฐานของเส้นทางของ URL แรก