בחירת נתיבי פרוקסי ב־HTTPX עם proxy ו־mounts
השתמשו ב־proxy ובחיבורי transport של HTTPX עם הסכמה הנכונה, התנהגות סביבה מפורשת ומגבלות חיבור וקריאה נפרדות.
השתמשו ב־proxy= כשנקודת קצה אחת צריכה לטפל בבקשות הלקוח. השתמשו ב־mounts= כשסכמות היעד דורשות נתיבים שונים. הדוגמאות משתמשות בממשקים האלה של HTTPX; פרויקט עם ה־API הישן proxies= צריך הגדרות שמתאימות לגרסה שלו.
נקודת קצה אחת
import httpx
timeout = httpx.Timeout(15.0, connect=5.0)
with httpx.Client(
proxy="http://127.0.0.1:8080",
trust_env=False,
timeout=timeout,
) as client:
response = client.get("https://example.com/")
response.raise_for_status()
print(response.status_code)
החליפו את נקודת ההאזנה המקומית בפרוקסי HTTP פעיל. גם מועמד מרשימת שרתי פרוקסי HTTP צריך בדיקה מול היעד שלכם. יעד HTTPS יכול להשתמש בנקודה הזאת מסוג http:// דרך CONNECT. שינוי הסכמה ל־https:// מבקש TLS לפרוקסי עצמו, מה שדורש תמיכה גם בנקודת ההאזנה וגם בלקוח.
נתיבים נפרדים לפי סכמת היעד
import httpx
mounts = {
"http://": httpx.HTTPTransport(
proxy="http://127.0.0.1:8080",
trust_env=False,
),
"https://": httpx.HTTPTransport(
proxy="http://127.0.0.1:8081",
trust_env=False,
),
}
with httpx.Client(
mounts=mounts,
trust_env=False,
timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
response = client.get("https://example.com/")
response.raise_for_status()
print(response.status_code)
מפתחות החיבור מתאימים לכתובות URL של היעד. יעדי HTTP בוחרים כאן בפורט 8080, ויעדי HTTPS בפורט 8081. ערך הפרוקסי מתאר את הפרוטוקול של נקודת ההאזנה עצמה, ולכן חיבור HTTPS יכול להכיל כראוי פרוקסי http://. הכניסו את נקודות הקצה שלכם ובדקו את שתי סכמות היעד.
שתי הדרכים מגדירות trust_env=False בלקוח וב־transports כשהם נמסרים. אחרת HTTPX קורא כברירת מחדל משתני סביבה של פרוקסי ותעודות. אם הפריסה תלויה בהם, השאירו גילוי פעיל או הגדירו במפורש את הנתיבים והאמון הדרושים. לאמון פרטי השתמשו בהקשר TLS ובהגדרות CA שגרסת HTTPX שלכם תומכת בהם; השאירו את אימות היעד פעיל. האמון בפרוקסי HTTPS יכול להיות נפרד מהאמון ביעד.
httpx.Timeout(15.0, connect=5.0) דורס את זמן ההמתנה לחיבור ומספק ערך ברירת מחדל לרכיבי ההמתנה המוגדרים האחרים. לקריאה, כתיבה והמתנה למאגר יש מגבלות נפרדות; חמש עשרה שניות אינן מגבלת זמן כוללת. חריגה בהמתנה למאגר עשויה לומר שעבודה אחרת מחזיקה בחיבורים הזמינים. סגרו לקוחות ותגובות זורמות כראוי לפני שתראו בכך הוכחה שהפרוקסי אינו נגיש.