python - 如何找到 : urllib2. URLError : <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl. c :590)? 的根本原因

标签 python ssl certificate ssl-certificate urllib2

我正在尝试测试 breezometer.com 的 API。 当我将我的 API key 输入网页时 https://breezometer.com/api/ 它返回预期的 JSON 回复。

但是,输入完全相同的数据 - 在以下模拟网络请求的 python 脚本中(来自 Python 2 和 3):

$ cat test2.py
#!/usr/bin/env python

"""
Location from Google Maps: https://www.google.co.il/maps/place/Haifa+Port,+Haifa/@32.8267212,34.9852862,15z/data=!4m2!3m1!1s0x151dbbcd3a79ff47:0x8d20ff1e4833b549?hl=en

request: https://api.breezometer.com/baqi/?lat=32.8267212&lon=34.9852862&key=API_KEY
"""

from bs4 import BeautifulSoup
import urllib2

latitude = 32.8267212
longitude = 34.9852862
api_key = "XXXXXfb123e242839edeb10539dXXXXX"

url = "https://api.breezometer.com/baqi/?lat={0}&lon={1}&key={2}".format(latitude, longitude, api_key)

print(BeautifulSoup(urllib2.urlopen(url)))

我得到:

$ python test2.py
Traceback (most recent call last):
  File "test2.py", line 18, in <module>
    print(BeautifulSoup(urllib2.urlopen(url)))
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 431, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 449, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1240, in https_open
    context=self._context)
  File "/usr/lib/python2.7/urllib2.py", line 1197, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

我看过类似的 SO 线程(例如 Python 'requests' [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 等来自 https://stackoverflow.com/search?q=_ssl.c%3A590+CERTIFICATE_VERIFY_FAILED )

我已将 https://breezometer.com/api/https://breezometer.com/ 证书(以所有可用格式)导入到 Chrome -以下 https://stackoverflow.com/a/31627786/1656850建议:我仍然收到 CERTIFICATE_VERIFY_FAILED 错误。

对如何调试这个问题有什么建议吗?

最佳答案

使用 Python 2.7 添加 verify=False 即

requests.get(url, headers=user_agent, verify=False)

关于python - 如何找到 : urllib2. URLError : <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl. c :590)? 的根本原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450020/

相关文章:

amazon-web-services - signtool 无法使用来自 AWS CloudHSM 的 key 对二进制文件进行签名

python - 在 uwsgi chain-raload 期间预热 django 应用程序

python - 如何构建 JSON 架构以验证 DynamoDB 和 REST API?

ssl - 用于演示的 Identity Server 4 星 ssl 证书

PowerShell 使用自签名证书连接到 REST API。

c - libevent,之后启动 SSL

ssl - 与公共(public)服务器的 OPENSSL 连接给出 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY

python - 如何一步退出并运行Python IDLE shell

python - 尝试在 Python 中拆分 ":"和 ",",但因 ValueError 而失败

iphone - 在 iOS 上读取证书问题