这是我的代码
import requests;
url='that website';
headers={
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
};
r = requests.get(url,headers=headers);
print(r);
print(r.status_code);
然后它遇到了这个:
请求.exceptions.SSLError:
HTTPSConnectionPool(主机=‘www.xxxxxx.com’,端口=44 3):
最大重试次数超过 url:xxxxxxxx(由 SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED]
证书验证失败:无法获取本地颁发者证书 (_ssl.c:1045)’)))
我应该怎么办?
原文由 yuan 发布,翻译遵循 CC BY-SA 4.0 许可协议
不建议 在您的组织环境中使用
verify = False
。这实质上是禁用 SSL 验证。有时,当您在公司代理后面时,它会用 Proxy 的证书链替换证书链。在 certifi 使用的 cacert.pem 中添加证书应该可以解决问题。我有类似的问题。这是我所做的,以解决问题 -
在浏览器上打开 URL。从 URL 下载证书链并保存为 Base64 编码的 .cer 文件。
现在在记事本中打开 cacert.pem 并在末尾添加每个下载的证书内容 (
---Begin Certificate--- *** ---End Certificate---
)。