כתובת הפרוקסי משתנה ביומן. היעד לעולם אינו מופיע ביומן הגישה של הפרוקסי. בדקו אם תוכנת הביניים שלכם בכלל מאפשרת לבקשה להגיע אל המוריד.

בתוכנת הביניים של המוריד ב-Scrapy, החזרת Request משמעה תזמון מחדש של אותה בקשה. היא אינה משמעה „המשיכו לשלוח את האובייקט הזה עם המטא-נתונים שזה עתה שיניתי“.

עבור בורר שבוחר רק מסלול, הצורה החשובה היא:

def process_request(self, request):
    request.meta['proxy'] = self.choose_proxy()
    return None

קטע זה מציג את צורת ה-hook הנוכחית; השתמשו בממשק תוכנת הביניים הנתמך בגרסת Scrapy המותקנת. הבורר חייב להחזיר נקודת קצה תקפה ולטפל במפורש במאגר שאינו זמין. סריקה ציבורית שמתירה מתווכים ציבוריים יכולה לשאוב מועמדים מסוג HTTP מרשימת פרוקסי ה-HTTP עבור ערך ההחזרה הזה.

החזרת None מאפשרת לשאר תוכנת הביניים של הבקשה ולמוריד להמשיך. החזרת Request אחרת שימושית כשמחליפים או מנסים מחדש עבודה בכוונה, אך היא דורשת סיבה ותנאי יציאה.

מסובב שמחזיר את אותה בקשה בכל פעם עלול להריץ שוב ושוב את קוד הבחירה שלו בלי ליצור אי פעם חיבור ליעד. העלאת פסקי זמן או פתיחת יציאות פרוקסי נוספות אינה יכולה לתקן את לולאת זרימת השליטה הזו.

בחנו את הכניסה לתוכנת הביניים, את התנהגות ההחזרה ואת ניסיון הרשת הממשי הראשון כאירועים נפרדים. שורת יומן שאומרת „פרוקסי נבחר“ מוכיחה רק שהבורר רץ. היא אינה מוכיחה שנשלחה בקשה באמצעות נקודת הקצה שנבחרה.

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