处理 Python requests 报错:SSL 握手失败
在使用 Python 的 requests 库时,可能会遇到 SSL 握手失败的错误。具体错误信息如下:
File "/usr/local/lib/python3.11/site-packages/requests/api.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.11/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.11/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.11/site-packages/requests/adapters.py", line 517, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='xxxxx.com', port=443): Max retries exceeded with url: /gmp/auth/client/getToken?clientId=xxxx&sign=xxxx (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1006)'))
解决方法:降级 urllib3 版本
可以通过降低 urllib3
的版本来解决这个问题。使用以下命令来降级 urllib3
:
pip install urllib3==1.26.5
步骤详解
-
打开终端
打开终端,可以在图形界面中搜索“Terminal”找到,或使用快捷键Ctrl+Alt+T
。 -
执行降级命令
在终端中输入以下命令并执行:pip install urllib3==1.26.5
该命令会卸载当前版本的
urllib3
并安装指定的版本。 -
验证版本
安装完成后,运行以下命令来确认urllib3
的版本:pip show urllib3
这将显示
urllib3
的详细信息,包括版本号。请确认输出中的版本号为1.26.5
。
注意事项
降级库可能会引入依赖冲突或其他问题,特别是如果您的应用依赖于 urllib3
的较新特性。建议在进行这样的更改之前备份您的环境或使用虚拟环境。如果您正在使用虚拟环境,确保在执行上述命令之前已经激活了它。
虽然降级 urllib3
可能解决了 SSL 握手失败问题,但更好的做法是查明根本原因并寻求解决这个根本问题的方法,比如更新服务器的 SSL 配置或修复客户端的 SSL/TLS 配置问题。降级可能只是一种临时解决方案。