使用Python Requests下载BCB Excel文件时无法建立新连接的问题求助
解决requests无法连接巴西央行服务器的问题
以下是几个可能的原因和对应的解决方法:
检查网络代理与防火墙
"Failed to establish a new connection" 本质是本地网络无法和目标服务器建立TCP连接,常见原因包括:- 公司/学校网络的代理拦截:Chrome可能自动使用系统代理,但requests默认不会,需要手动配置代理参数:
proxies = { 'http': 'http://你的代理地址:端口', 'https': 'https://你的代理地址:端口' } response = requests.get(url, headers=headers, proxies=proxies) - 本地防火墙/杀毒软件拦截:临时关闭相关软件测试,确认是否是拦截导致的问题。
- 公司/学校网络的代理拦截:Chrome可能自动使用系统代理,但requests默认不会,需要手动配置代理参数:
简化请求头
你复制的Chrome请求头包含多个浏览器专属的Sec-*字段,这些字段是Chrome的安全协议字段,requests模拟时可能引发服务器异常,同时你代码里的"是HTML转义字符,应该替换为普通双引号。建议只保留关键请求头:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Accept': '*/*', 'Accept-Language': 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7' }验证域名解析
尝试在命令行执行ping www.bcb.gov.br,如果无法返回IP地址,说明本地DNS解析失败。可以尝试切换DNS服务器(比如谷歌的8.8.8.8),或者在代码中直接使用服务器IP(不推荐,因为IP可能变动)。添加超时与会话保持
- 添加超时参数避免无限等待:
response = requests.get(url, headers=headers, timeout=10) - 使用Session保持连接状态,有些服务器会拒绝单次请求:
session = requests.Session() session.headers.update(headers) response = session.get(url)
- 添加超时参数避免无限等待:
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

