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가 필요하면 그것도 구성하십시오.

관련 글