Configurer un proxy SOCKS5 pour le client Python d'Azure Blob
Configurez la session Requests fournie elle-même, puis gardez sa durée de vie en dehors du client Blob synchrone avec 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:
passExé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.