Configurare un proxy SOCKS5 per il client Python di Azure Blob
Configurate la sessione Requests fornita stessa, poi mantenete la sua durata fuori dal client Blob sincrono con 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:
passEseguite l'operazione Blob prevista al posto di pass, usando l'account_url e la credential dell'applicazione. Le dipendenze SOCKS opzionali di Requests devono essere già presenti. socks5h delega il DNS di destinazione al proxy. Per un endpoint Blob raggiungibile pubblicamente dove sono ammessi intermediari pubblici, la lista di proxy SOCKS5 fornisce candidati per l'URL del proxy della sessione.
Impostate trust_env su questa sessione per controllare l'integrazione ambientale di Requests. RequestsTransport applica l'inizializzazione ambientale quando crea una sessione, non quando gliene viene fornita una esistente. Il valore false esplicito impedisce agli input ambientali del proxy di sostituire questa rotta.
Tale scelta disattiva anche la selezione della CA basata sull'ambiente. Se necessario, fornite connection_verify="/path/to/ca-bundle.pem" a RequestsTransport, con le radici richieste per il servizio effettivo.
Il client Blob viene chiuso prima del contesto esterno della sessione. session_owner=False lascia la proprietà a quel blocco esterno. Una credenziale token creata separatamente può avere un altro trasporto HTTP; configuratela anche se il suo ottenimento richiede SOCKS.