【问题标题】:SSLError Certificate Verify Failed Python APISSLError 证书验证失败的 Python API
【发布时间】:2016-05-19 20:33:57
【问题描述】:
Traceback (most recent call last):
  File "C:\Python27\Scripts\Vehicle Model.py", line 12, in <module>
    response = requests.get(URL_PATTERN1)
  File "C:\Python27\lib\site-packages\requests-2.7.0-py2.7.egg\requests\api.py", line 69, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Python27\lib\site-packages\requests-2.7.0-py2.7.egg\requests\api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "C:\Python27\lib\site-packages\requests-2.7.0-py2.7.egg\requests\sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\lib\site-packages\requests-2.7.0-py2.7.egg\requests\sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\lib\site-packages\requests-2.7.0-py2.7.egg\requests\adapters.py", line 431, in send
    raise SSLError(e, request=request)
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

编译代码后出现上述错误。我目前正在使用 Edmunds API 从他们的 API 中提取特定项目。不知道为什么我在其他电脑上编译没有这个错误信息。

然后当我添加:

context = ssl._create_unverified_context()
urllib2.urlopen("https://no-valid-cert", context=context)

我收到以下错误:

Traceback (most recent call last):
  File "C:\Python27\Scripts\Vehicle Model.py", line 10, in <module>
    urllib2.urlopen("https://no-valid-cert", context=context)
  File "C:\Python27\lib\urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python27\lib\urllib2.py", line 431, in open
    response = self._open(req, data)
  File "C:\Python27\lib\urllib2.py", line 449, in _open
    '_open', req)
  File "C:\Python27\lib\urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 1240, in https_open
    context=self._context)
  File "C:\Python27\lib\urllib2.py", line 1197, in do_open
    raise URLError(err)
URLError: <urlopen error [Errno 11004] getaddrinfo failed>

【问题讨论】:

标签: python api python-requests response


【解决方案1】:

您应该首先使用curl 验证所有设置是否正确。以下是我将使用的步骤:

curl --version
curl -v https://api.edmunds.com/
# this latter should verify that SSL and libcurl are working properly on the computer 

如果这两个都有效,那么请求也应该有效。如果你想在不验证 SSL 的情况下使用请求,可以使用 verify 参数到 get

session.get('https://api.edmunds.com/', verify=False)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多