urllib3 on python 2.7 Google App Engine上的SNI错误

Tza*_*ach 5 python google-app-engine urllib3 sni

我正在尝试使用SNI从我在Google App Engine上托管的网站下载HTTPS页面.无论我使用什么库,我都会收到以下错误:

[Errno 8] _ssl.c:504: EOF occurred in violation of protocol
Run Code Online (Sandbox Code Playgroud)

我尝试过多种方式解决错误,包括使用urllib3 openssl monkeypatch:

from urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3
Run Code Online (Sandbox Code Playgroud)

但我总是得到上面提到的同样的错误.

有任何想法吗?

sha*_*zow 9

不幸的是,对于urllib3,Python标准库在Python 3.2之前没有添加SNI支持.(参见问题#118 @ urllib3)

要在Python 2.7中使用urllib3中的SNI,您需要使用PyOpenSSL注入monkeypatch.(参见问题#156 @ urllib3)

from urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3()
Run Code Online (Sandbox Code Playgroud)

您的问题基本上具有相同的代码,除了它在调用时缺少括号pyopenssl.inject_into_urllib3()调用.修复应该做的伎俩.

您还需要确保具有以下可用依赖项:

  • pyOpenSSL(用0.13测试)
  • ndg-httpsclient(用0.3.2测试)
  • pyasn1(用0.1.6测试)