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.

Похожие статьи