כאשר Requests זמינה בפרויקט, העבירו מיפוי פרוקסי לקריאה:

import requests

proxies = {
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}

response = requests.get(
    "https://example.com/",
    proxies=proxies,
    timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)

החליפו את נקודת הקצה של הלולאה החוזרת בפרוקסי הפעיל שלכם או במועמד מתוך רשימת שרתי פרוקסי HTTP שתבדקו בבקשה הזאת. המפתחות מתארים סכמות יעד: http לכתובות HTTP ו־https לכתובות HTTPS. הערכים מתארים את נקודת ההאזנה של הפרוקסי. אפשר להשתמש בנקודות שונות אם הרשת דורשת מסלולים נפרדים.

ערך פרוקסי של http:// תחת המפתח https הוא מכוון. Requests מבקשת מנהרת CONNECT מנקודת ההאזנה של HTTP ואז מקימה דרכה TLS ליעד, בכפוף למדיניות היעדים והיציאות של הפרוקסי. שינוי הערך ל־https:// מבקש TLS אל הפרוקסי עצמו; הדבר עלול להיכשל אם נקודת ההאזנה מצפה ל־HTTP לא מוצפן.

מה משמעות שני המספרים של פסק הזמן

timeout=(5, 15) מגדיר פסקי זמן לחיבור ולקריאה. הוא אינו קובע מועד סיום כולל של חמש־עשרה שניות. נתונים המגיעים מדי פעם, כתובות מרובות וניסיונות חיבור יכולים להאריך את הזמן שחלף. Requests אינה מספקת פסק זמן כללי כשההגדרה מושמטת, ולכן יש לבחור גבולות מתאימים לתגובה ולהוסיף מועד סיום ברמת היישום אם נדרש תקציב זמן כולל קשיח.

טפלו בכשל בשלב שבו הוא מתרחש

try:
    response = requests.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()
except requests.exceptions.ProxyError as error:
    print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
    print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
    print("HTTP status:", error.response.status_code)

CONNECT שנדחה עשוי לגרום ל־ProxyError לפני שקיימת תגובה מהיעד. הענף HTTPError מופיע בעקבות תגובה שהתקבלה עם מצב שגיאה; Timeout פירושו שגבול מוגדר פג. בדקו מקומית את שרשראות החריגות בהקמת החיבור, והסירו נקודות קצה המכילות פרטי הזדהות וכתובות URL פרטיות לפני שיתוף.

השאירו אימות תעודות פעיל. אם הרשת המורשית משתמשת ב־CA פרטי או ביירוט מנוהל, ספקו את חומר האמון הצפוי במקום להשבית אימות.

הרשומות המפורשות לכל בקשה שולטות במסלולים שסופקו כאן, אך סכמות שהושמטו עדיין עשויות להיות מושפעות מגילוי פרוקסי בסביבה. כשמעבירים את הקריאה ל־Session לשימוש חוזר, החליטו כיצד משתני סביבה, ברירות מחדל של Session ודריסות לכל בקשה צריכים לפעול יחד; שימוש חוזר בחיבור ומדיניות ניתוב הם בחירות נפרדות.

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