כדי לבדוק את המסלול שנבחר, השתמשו ב-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 הראשונה.

מאמרים קשורים