Настройка прокси SOCKS5 для клиента Python Azure Blob
Настройте саму предоставленную сессию Requests, а затем держите её время жизни вне синхронного клиента Blob с помощью session_owner=False.
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.