使用requests时出现SSLError

3 投票
1 回答
1632 浏览
提问于 2025-04-17 22:24

我尝试在requests的快速入门中执行第一个命令:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')

但是我收到了以下错误信息:

Traceback (most recent call last):
  File "./main.py", line 16, in <module>
    requests.get('https://github.com/timeline.json')
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 55, in get
    return request('get', url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
    resp = self.send(prep, **send_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
    r = adapter.send(request, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

我对SSL证书完全不懂,但我觉得这可能跟Python在错误的地方查找有关。我下载了Python 2.7,并把它设为默认的Python(我用的是Mac OSX 10.6(雪豹),它自带Python 2.6)。在我修复路径并创建符号链接之前,我的Mac在查找Python相关的东西时遇到了很多麻烦,但我在想,是否还有其他跟升级有关的事情导致了这个SSL错误?或者这可能根本跟那个没关系。

我尝试搜索类似的问题,并阅读了一些人的建议,建议在requests.get()中添加参数verify=False,但我不想这么做,因为我觉得这只是绕过了真正的问题。谢谢你们帮助一个完全的新手。

1 个回答

0

你可以试试这个方法。

确认一下证书的路径:

>>> requests.get('https://whatever.com', verify='/path/to/certfile')

或者

>>> requests.get('https://whatever.com', cert=('/path/server.crt', '/path/key'))

http://docs.python-requests.org/en/latest/user/advanced/

撰写回答