2013-10-20 67 views
5

我正嘗試從SNI上的Google App Engine上託管的我的網站上下載HTTPS頁面。 不管我用什麼庫,我得到以下錯誤:python上的urllib3 2.7 Google App Engine上的SNI錯誤

[Errno 8] _ssl.c:504: EOF occurred in violation of protocol 

我試圖解決錯誤的方法很多,包括使用urllib3 OpenSSL的猴補丁:

from urllib3.contrib import pyopenssl 
pyopenssl.inject_into_urllib3 

但我總是得到上面提到的同樣的錯誤。

任何想法?

+1

不知道這是否是你的問題的拼寫錯誤,但行應該是'pyopenssl.inject_into_urllib3()' - 這是一個函數調用,而不是一個屬性訪問。 – shazow

+0

你是完全正確的!我的愚蠢的錯誤..測試和工作,謝謝:) – Tzach

回答

9

不幸的是,對於urllib3,Python標準庫在Python 3.2之前沒有添加SNI支持。 (請參閱Issue #118 @ urllib3

要使用Python 2.7中的SNI與urllib3,您需要使用PyOpenSSL注入monkeypatch。 (見Issue #156 @ urllib3

from urllib3.contrib import pyopenssl 
pyopenssl.inject_into_urllib3() 

你的問題基本上有相同的代碼,但它缺少括號呼籲pyopenssl.inject_into_urllib3()通話。解決這個問題應該可以做到。

你還需要確保有可用的以下相關:

  • pyOpenSSL(0.13測試)
  • NDG-httpsclient(與0.3.2測試)
  • pyasn1(測試與0.1.6)
相關問題