ל-ProxyManager יש ארגומנט נפרד proxy_headers עבור כותרות הנשלחות למתווך. עבור פרוקסי שמקבל אימות Basic:

import urllib3

proxy_headers = urllib3.make_headers(
    proxy_basic_auth=f'{proxy_user}:{proxy_password}'
)
with urllib3.ProxyManager(
    'http://proxy.example:8080',
    proxy_headers=proxy_headers,
    timeout=urllib3.Timeout(connect=5, read=10),
) as http:
    response = http.request('GET', 'https://service.example/data')
    print(response.status)

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

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

‏make_headers בונה את ערך כותרת ה-Basic. הוא אינו מנהל משא ומתן על NTLM, אינו בוחר סכימה נתמכת אוטומטית ואינו מוכיח שהפרוקסי מקבל את החשבון הזה.

פרוקסי עם מאזין TLS מוסיף הקשר TLS נפרד לפרוקסי. נקודת הקצה http:// לעיל מתארת במכוון מאזין HTTP רגיל שמעביר יעד HTTPS דרך מנהור.

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