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

Exécutez l'opération Blob prévue à la place de pass, en utilisant l'account_url et le credential de l'application. Les dépendances SOCKS optionnelles de Requests doivent déjà être présentes. socks5h délègue le DNS de destination au proxy. Pour un point de terminaison Blob accessible publiquement où les intermédiaires publics sont autorisés, la liste de proxys SOCKS5 fournit des candidats pour l'URL de proxy de la session.

Définissez trust_env sur cette session pour contrôler l'intégration de Requests à l'environnement. RequestsTransport applique son initialisation d'environnement lorsqu'il crée une session, pas lorsqu'on lui en fournit une existante. La valeur false explicite empêche les entrées d'environnement de proxy de remplacer cette route.

Ce choix désactive aussi la sélection d'autorité de certification basée sur l'environnement. Si nécessaire, fournissez connection_verify="/path/to/ca-bundle.pem" à RequestsTransport, avec les racines requises pour le service réel.

Le client Blob se ferme avant le contexte de session externe. session_owner=False laisse la propriété à ce bloc externe. Un justificatif de jeton créé séparément peut avoir un autre transport HTTP ; configurez-le aussi si son obtention nécessite SOCKS.

Articles similaires