You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用代理从Python下载Azure Blob失败的问题求助

解决代理服务器上Azure Blob下载的认证失败问题

问题根源

报错ClientAuthenticationError的核心原因是:你仅给BlobServiceClient配置了代理,但用于身份认证的ClientSecretCredential对象未走代理。认证阶段需要向Azure AD域名(如login.microsoftonline.com)请求令牌,该请求未通过代理发送,导致服务器无法解析域名,最终出现"Name or service not known"错误。

解决方案

1. 给ClientSecretCredential配置代理

修改代码,在创建ClientSecretCredential时通过request_options参数传入代理配置,确保认证请求也走服务器代理:

from azure.identity import ClientSecretCredential
from azure.storage.blob import BlobServiceClient 

# 统一代理配置
proxy = {"http": proxy_value, "https": proxy_value}

# 为认证凭据添加代理
credential = ClientSecretCredential(
    self.tenant_id, 
    self.client_id, 
    self.client_secret,
    request_options={"proxies": proxy}
)

# Blob服务客户端保持原配置
blob_service_client_instance = BlobServiceClient(
    account_url=storage_account_url, 
    credential=credential, 
    proxies=proxy, 
    connection_verify=False
)

blob_client_instance = blob_service_client_instance.get_blob_client(
    container_name, blob_name, snapshot=None
)
blob_data = blob_client_instance.download_blob()

2. 额外检查项

  • 确认代理地址格式正确:必须包含协议(http/https)和端口,例如http://proxy.example.com:8080
  • 检查代理是否允许访问Azure AD相关域名:确保服务器代理未拦截login.microsoftonline.com等Azure认证域名的请求
  • 若代理需要身份验证,需在代理地址中嵌入用户名和密码,格式为http://username:password@proxy.example.com:8080

内容的提问来源于stack exchange,提问作者Miguel Angulo Jiménez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:10:25