原创 彻底解决PythonRequestsCausedbySSLError的握手失败问题

发布时间:
更新时间:
浏览次数:200
评论数:0

处理 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

步骤详解

  1. 打开终端
    打开终端,可以在图形界面中搜索“Terminal”找到,或使用快捷键 Ctrl+Alt+T

  2. 执行降级命令
    在终端中输入以下命令并执行:

    pip install urllib3==1.26.5

    该命令会卸载当前版本的 urllib3 并安装指定的版本。

  3. 验证版本
    安装完成后,运行以下命令来确认 urllib3 的版本:

    pip show urllib3

    这将显示 urllib3 的详细信息,包括版本号。请确认输出中的版本号为 1.26.5

注意事项

降级库可能会引入依赖冲突或其他问题,特别是如果您的应用依赖于 urllib3 的较新特性。建议在进行这样的更改之前备份您的环境或使用虚拟环境。如果您正在使用虚拟环境,确保在执行上述命令之前已经激活了它。

虽然降级 urllib3 可能解决了 SSL 握手失败问题,但更好的做法是查明根本原因并寻求解决这个根本问题的方法,比如更新服务器的 SSL 配置或修复客户端的 SSL/TLS 配置问题。降级可能只是一种临时解决方案。