解决PythonRequests中SSLError问题
处理Python requests库的SSLError问题
在使用Python的requests库时,可能会遇到类似以下的错误信息:
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版本,可以解决上述SSL握手失败的问题。具体操作步骤如下:
步骤一:打开终端
可以通过搜索“Terminal”找到终端,或者使用快捷键Ctrl+Alt+T。
步骤二:执行降级命令
在终端中输入以下命令并执行:
pip install urllib3==1.26.5
这个命令会卸载当前版本的urllib3并安装指定版本。
步骤三:验证版本
安装完成后,运行以下命令来确认urllib3的版本:
pip show urllib3
确保输出中的版本号为1.26.5。
注意事项
降级库可能会引入依赖冲突或其他问题,特别是如果您的应用依赖于urllib3的新特性。建议在进行这样的更改之前备份环境或使用虚拟环境。如果您正在使用虚拟环境,确保在执行上述命令之前已经激活了它。
虽然降级urllib3可能解决了SSL握手失败问题,但通常更好的做法是查明根本原因并寻求解决这个根本问题的方法,比如更新服务器的SSL配置或修复客户端的SSL/TLS配置问题。降级可能只是一种临时解决方案。