Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何捕获SSL:CERTIFICATE\u VERIFY\u FAILED error python?_Python_Ssl_Exception_Ssl Certificate_Urllib3 - Fatal编程技术网

如何捕获SSL:CERTIFICATE\u VERIFY\u FAILED error python?

如何捕获SSL:CERTIFICATE\u VERIFY\u FAILED error python?,python,ssl,exception,ssl-certificate,urllib3,Python,Ssl,Exception,Ssl Certificate,Urllib3,我正在使用urllib3.PoolManager发出http请求。在我的代码的某些部分,我使用这个代码来发出请求 resp = h.request(self.method, self.url, body=body, headers=headers, timeout=TIMEOUT, retries=retries) 我得到错误SSL:CERTIFICATE\u VERIFY\u失败。下面是完整的堆栈跟踪 File "/lib/python2.7/site-packages/urllib3/

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

resp = h.request(self.method, self.url, body=body, headers=headers, timeout=TIMEOUT, retries=retries)
我得到错误SSL:CERTIFICATE\u VERIFY\u失败。下面是完整的堆栈跟踪

  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块中捕获错误

我试着用

 except ssl.SSLError:
但这并没有抓住这个错误。 我还尝试了ssl.CertificateError,但没有结果。
我可以通过使用Exception类来捕获它,但是我需要捕获特定的错误并以不同的方式处理它们。有人能帮我找到解决办法吗?

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

延迟应答,但您可以使用
请求.exceptions.SSLError
捕获SSL错误

import requests, traceback

try:
    r = requests.get('https://domain.tld')
except (requests.exceptions.SSLError):
    print(traceback.format_exc())