Azure Blob の Python クライアントに SOCKS5 プロキシを構成する
提供された Requests セッション自体を構成し、その寿命を同期 Blob クライアントの外に保つには 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:
passpass の代わりに目的の 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 が必要な場合は、それも構成してください。