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