2013-10-20 21 views
5

SNI ile Google App Engine'de barındırılan sitemden bir HTTPS sayfası indirmeye çalışıyorum.python 2.7 urllib3 Google App Engine'de SNI hatası

from urllib3.contrib import pyopenssl 
pyopenssl.inject_into_urllib3 

Ama her zaman alıyorum: Ben urllib3 openssl monkeypatch kullanarak dahil olmak üzere birçok yönden, hatayı çözme denedim

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

: olursa olsun kullandığınız kütüphane, aşağıdaki hatayı alıyorum yukarıda belirtilen aynı hata.

Herhangi bir fikrin var mı?

+1

Sorunuzdaki bir yazım hatası olup olmadığından emin değilsiniz, ancak satır "pyopenssl.inject_into_urllib3()' olmalıdır - yani, bir işlev çağrısı, bir özellik erişimi değil. – shazow

+0

Tamamen haklısınız! aptal hatam ... test edildi ve çalıştı, teşekkürler :) – Tzach

cevap

9

Ne yazık ki, urllib3 için, Python standart kütüphanesi, Python 3.2'ye kadar SNI desteği eklemedi. (Bkz. Issue #118 @ urllib3)

Python 2.7'de, URL'yi urllib3 ile kullanmak için, PyOpenSSL injection monkeypatch'i kullanmanız gerekir. o parantez pyopenssl.inject_into_urllib3() çağrı üzerine çağrı eksikti hariç (Issue #156 @ urllib3 Bkz)

from urllib3.contrib import pyopenssl 
pyopenssl.inject_into_urllib3() 

Sorunuz temelde aynı kodu vardı. Düzeltme, hile yapmalı. Test edilen ((0.13 ile test)

  • pyOpenSSL
  • ndg-httpsclient (0.3.2 ile test)
  • pyasn1:

    Ayrıca aşağıdaki mevcut bağımlılıkları için emin olmak gerekir ile 0.1.6)