import requests
from azure.core.pipeline.transport import RequestsTransport
from azure.storage.blob import BlobServiceClient

with requests.Session() as session:
    session.trust_env = False
    session.proxies["https"] = "socks5h://proxy.example:1080"
    transport = RequestsTransport(session=session, session_owner=False)
    with BlobServiceClient(
        account_url=account_url,
        credential=credential,
        transport=transport,
    ) as client:
        pass

בצעו את פעולת ה-Blob המיועדת במקום pass, באמצעות account_url ו-credential של היישום. תלויות ה-SOCKS האופציונליות של Requests חייבות כבר להיות מותקנות. socks5h מאציל את ה-DNS של היעד לפרוקסי. עבור נקודת קצה של Blob הנגישה לציבור שבה מתווכים ציבוריים מותרים, רשימת פרוקסי SOCKS5 מספקת מועמדים לכתובת ה-URL של הפרוקסי בסשן.

הגדירו trust_env בסשן זה כדי לשלוט בשילוב הסביבה של Requests. RequestsTransport מחיל את אתחול הסביבה כשהוא יוצר סשן, לא כשמספקים לו סשן קיים. הערך false המפורש מונע מכניסות סביבת פרוקסי להחליף את המסלול הזה.

בחירה זו גם מנטרלת בחירת CA מבוססת סביבה. אם יש צורך, ספקו connection_verify="/path/to/ca-bundle.pem" ל-RequestsTransport, עם השורשים הנדרשים לשירות בפועל.

לקוח ה-Blob נסגר לפני הקשר הסשן החיצוני. session_owner=False משאיר את הבעלות בבלוק החיצוני הזה. אישור אסימון שנוצר בנפרד יכול להשתמש בתעבורת HTTP אחרת; הגדירו גם אותו אם השגתו דורשת SOCKS.

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