当我尝试执行某些数据获取任务时,Python会抛出错误。 这只有在我设置fiddler解密https流量时才会发生。 我尝试通过127.0.0.1:8888路由python流量,并与mozilla一样,以便捕获其流量。 我也安装了证书,并通过提琴手信任它,我不知道我哪里出错了。
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='google.com', port=443):
Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: CERTIFIC
ATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)'),))
以上是我每次尝试使用请求获取页面时出现的错误。
答案 0 :(得分:2)
TL; DR请求库不使用Windows证书存储区,它有自己的一个(根据https://bugs.python.org/issue28547)。这意味着默认情况下,您的fiddler MITM证书不可用于python请求。
您的选择
可在http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification
找到更多详情另一方面,对于使用它自己的证书包而不是平台提供的请求,它确实感觉有点奇怪 - 特别是考虑到所有浏览器都乐于使用平台。
答案 1 :(得分:0)
正如 polhemic 和 Eric Aronesty 所指出的,出于测试目的,您可以暂时将“CURL_CA_BUNDLE”设置为空字符串。
import os
os.environ['CURL_CA_BUNDLE'] = ''