Configurar um proxy SOCKS5 para o cliente Python do Azure Blob
Configure a própria sessão Requests fornecida e depois mantenha o tempo de vida dela fora do cliente Blob síncrono com 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:
passExecute a operação Blob pretendida em vez de pass, usando o account_url e a credential da aplicação. As dependências SOCKS opcionais do Requests já devem estar presentes. socks5h delega o DNS de destino ao proxy. Para um ponto final Blob acessível publicamente onde intermediários públicos são permitidos, a lista de proxies SOCKS5 fornece candidatos para o URL de proxy da sessão.
Defina trust_env nesta sessão para controlar a integração do Requests com o ambiente. O RequestsTransport aplica a inicialização de ambiente quando cria uma sessão, não quando recebe uma existente. O valor false explícito impede que entradas do ambiente de proxy substituam esta rota.
Essa escolha também desativa a seleção de CA baseada no ambiente. Se necessário, forneça connection_verify="/path/to/ca-bundle.pem" ao RequestsTransport, com as raízes exigidas para o serviço real.
O cliente Blob é fechado antes do contexto de sessão externo. session_owner=False deixa a propriedade nesse bloco externo. Uma credencial de token criada separadamente pode ter outro transporte HTTP; configure-a também se a obtenção dela exigir SOCKS.