5

SNI を使用して Google App Engine でホストされているサイトから HTTPS ページをダウンロードしようとしています。どのライブラリを使用しても、次のエラーが発生します。

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

urllib3 openssl モンキーパッチを使用するなど、さまざまな方法でエラーを解決しようとしました。

from urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3

しかし、上記と同じエラーが常に発生します。

何か案は?

4

1 に答える 1

9

urllib3 に関しては残念なことに、Python 標準ライブラリは Python 3.2 まで SNI サポートを追加しませんでした。( Issue #118 @ urllib3を参照)

urllib3 を使用して Python 2.7 で SNI を使用するには、PyOpenSSL インジェクション モンキーパッチを使用する必要があります。(問題 #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でテスト済み)
于 2013-10-20T12:34:27.270 に答える