EOF occurred in violation of protocol
我在使用 requests 的时候频繁遇到下面的错误:
EOF occurred in violation of protocol (_ssl.c:600)
这个错误在 Python2 和 Python3,macOS 和 Ubuntu 下都有出现。从报错信息中可以看出该错误与 HTTPS 握手相关。
这个错误在 这个 issue 中讨论得最为充分。
通过分析,我找到了这个问题产生的原因:在安装 requests 库的时候,没有正确安装 security 包。
下面是解决方案(针对 Ubuntu):
1. 安装支持的 dev 包:
1sudo apt-get install libffi-dev libssl-dev python-dev
若不安装上面的包,在安装 requests 的相关支持包的时候,可能会出现下面的错误:
1distutils.errors.DistutilsError: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
2Failed cleaning build dir for cryptography
2. 安装 requests 及其安全支持包
1pip install 'requests[security]'
requests[security]
是一个扩展,它会安装下面三个附加的包用来支持安全连接:
- pyOpenSSL
- ndg-httpsclient
- pyasn1
详见 extras_require 。
参考:
- SSL InsecurePlatform error when using Requests package
- pip install requests[security] vs pip install requests: Difference
- Issue #3006
(全文完)
- 文章ID:2616
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/eof-occurred-in-violation-of-protocol/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。