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.

Схожі статті