Python Requests: כניסות Basic נפרדות לפרוקסי ולאתר
העבר את כניסת ה-Basic של הפרוקסי דרך כתובת ה-URL שלו ואת זו של אתר היעד דרך ארגומנט auth של Requests.
הפרוקסי של המשרד דורש חשבון אחד. האתר שמאחוריו דורש חשבון אחר. ל-Requests יש קלטים נפרדים לשתי כניסות Basic אלה: פרטי הזדהות בכתובת ה-URL של הפרוקסי וארגומנט auth של הבקשה.
from urllib.parse import quote
import requests
proxy_url = (
f"http://{quote(proxy_user, safe='')}:"
f"{quote(proxy_password, safe='')}@proxy.example:8080"
)
response = requests.get(
"https://reports.example/private/",
proxies={"https": proxy_url},
auth=(site_user, site_password),
timeout=(5, 20),
)
response.raise_for_status()
ארבעת משתני החשבון מגיעים מתצורת פרטי ההזדהות של היישום. קידוד שם המשתמש והסיסמה של הפרוקסי בנפרד משמר תווים כמו סימן ה-at בלי להפוך אותם למפרידי URL.
המפתח https במילון בוחר במסלול הזה ליעד HTTPS. הערך שלו עדיין מתחיל ב-http:// מפני שזה הפרוטוקול שבו משתמשים כדי להגיע לפרוקסי לדוגמה הזה.
בבקשת HTTPS הזו, כניסת הפרוקסי שייכת לחילופי CONNECT. כניסת האתר שייכת לבקשה המאוחרת דרך המנהרה שהוקמה. כשהמתאם גוזר את הרשאת הפרוקסי מכתובת ה-URL שלו עצמו, היא נשארת בקפיצה הרלוונטית; אין צורך במחלקת אימות משולבת במקרה Basic הזה.
קוד 407 מציין את האתגר של המתווך. קוד 401 מהאתר מציין את האתגר של היעד. השתמש בתגובה הזו כדי להחליט איזה משני החשבונות המוגדרים זקוק לטיפול.