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

pass の代わりに目的の Blob 操作を実行し、アプリケーションの account_url と credential を使用します。Requests のオプションの SOCKS 依存関係がすでに存在している必要があります。socks5h は宛先 DNS をプロキシに委任します。パブリックな中継者が許可される公開 Blob エンドポイントでは、SOCKS5 プロキシ一覧がセッションのプロキシ URL の候補を提供します。

Requests の環境統合を制御するには、このセッションで trust_env を設定します。RequestsTransport は、セッションを作成するときに環境初期化を適用し、既存のセッションが渡されたときには適用しません。明示的な false 値により、プロキシ環境の入力がこのルートを置き換えるのを防ぎます。

この選択は、環境ベースの CA 選択も無効にします。必要に応じて、実際のサービスに必要なルートとともに connection_verify="/path/to/ca-bundle.pem" を RequestsTransport に渡します。

Blob クライアントは外側のセッション コンテキストより前に閉じられます。session_owner=False は所有権をその外側のブロックに残します。別途作成されたトークン資格情報は別の HTTP トランスポートを持つ場合があります。その取得に SOCKS が必要な場合は、それも構成してください。

関連記事