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

Führen Sie den vorgesehenen Blob-Vorgang anstelle von pass aus und verwenden Sie dabei account_url und credential der Anwendung. Die optionalen SOCKS-Abhängigkeiten von Requests müssen bereits vorhanden sein. socks5h überlässt das Ziel-DNS dem Proxy. Für einen öffentlich erreichbaren Blob-Endpunkt, an dem öffentliche Vermittler zulässig sind, liefert die SOCKS5-Proxy-Liste Kandidaten für die Proxy-URL der Session.

Setzen Sie trust_env in dieser Session, um die Umgebungsintegration von Requests zu steuern. RequestsTransport wendet seine Umgebungsinitialisierung an, wenn er eine Session erstellt, nicht wenn ihm eine bestehende übergeben wird. Der ausdrückliche Wert false verhindert, dass Proxy-Umgebungseingaben diese Route ersetzen.

Diese Wahl deaktiviert auch die umgebungsbasierte CA-Auswahl. Geben Sie bei Bedarf connection_verify="/path/to/ca-bundle.pem" an RequestsTransport weiter, mit den für den tatsächlichen Dienst erforderlichen Roots.

Der Blob-Client wird vor dem äußeren Session-Kontext geschlossen. session_owner=False belässt den Besitz bei diesem äußeren Block. Ein separat erzeugtes Token-Credential kann einen anderen HTTP-Transport haben; konfigurieren Sie es ebenfalls, wenn dessen Beschaffung SOCKS benötigt.

Ähnliche Artikel