我尝试使用SNI从我在Google App Engine上托管的网站下载HTTPS页面。 无论我使用什么库,我都会收到以下错误:
[Errno 8] _ssl.c:504: EOF occurred in violation of protocol
我尝试过多种方式解决错误,包括使用urllib3 openssl monkeypatch:
from urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3
但我总是得到上面提到的相同错误。
有什么想法吗?
答案 0 :(得分:9)
不幸的是,对于urllib3,Python标准库在Python 3.2之前没有添加SNI支持。 (见Issue #118 @ urllib3)
要在Python 2.7中使用urllib3中的SNI,您需要使用PyOpenSSL注入monkeypatch。 (见Issue #156 @ urllib3)
from urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3()
您的问题基本上具有相同的代码,但在pyopenssl.inject_into_urllib3()
调用中缺少括号调用。修复应该做的伎俩。
您还需要确保具有以下依赖项: