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.

Подобни статии