我如何捕获SSL:CERTIFICATE_VERIFY_FAILED错误python?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何捕获SSL:CERTIFICATE_VERIFY_FAILED错误python?相关的知识,希望对你有一定的参考价值。

我正在使用urllib3.PoolManager来发出http请求。在我的代码的某些部分,我使用此代码发出请求

resp = h.request(self.method, self.url, body=body, headers=headers, timeout=TIMEOUT, retries=retries)

我收到错误SSL:CERTIFICATE_VERIFY_FAILED。下面是完整的堆栈跟踪。

  File "/lib/python2.7/site-packages/urllib3/request.py", line 69, in request
    **urlopen_kw)

  File "/lib/python2.7/site-packages/urllib3/request.py", line 90, in request_encode_url
    return self.urlopen(method, url, **extra_kw)

  File "/lib/python2.7/site-packages/urllib3/poolmanager.py", line 248, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)

  File "/lib/python2.7/site-packages/urllib3/connectionpool.py", line 621, in urlopen
    raise SSLError(e)

[SSL: CERTIFICATE_VERIFY_FAILED]

错误是预期的。但问题是我无法在try中捕获错误,除了块。

我试着用

 except ssl.SSLError:

但这并没有发现这个错误。我也尝试过ssl.CertificateError但没有结果。我可以通过使用Exception类来捕获它,但我需要捕获特定的错误并以不同的方式处理它们。有人可以找到我的解决方案吗?

答案

我找到了解决方案。正在引发的异常类是urllib3.exceptions.SSLError。

以上是关于我如何捕获SSL:CERTIFICATE_VERIFY_FAILED错误python?的主要内容,如果未能解决你的问题,请参考以下文章

VirtualHost:停用 SSL 的全部捕获 (443)

通过 Fiddler 捕获 Java https 并获取 javax.net.ssl.SSLHandshakeException

由于 SSL 证书使用 Selenium Webdriver 和 BrowserMob 代理来捕获 har 文件,因此无法加载资源

SSL 何时加密从浏览器到服务器的数据?

charles SSL代理设置

Facebook SDK:带有消息“DateTime::__construct()”的未捕获异常“异常”