5

Requests 2.0.0 を使用していますが、次を使用して https GET 要求を完了できませんでした:

requests.get('https://backend.iddiction.com/rest/v1/s2s/confirm_install?apphandle=slotsjourneyofmagic&appsecret=5100d103e146e2c3f22af2c24ff4e2ec&mac=50:EA:D6:E7:9B:C2&idfa=134DA32A-A99F-4864-B69E-4A7A2EFC6C25')

このエラーが発生します:

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

Web やこのサイトで多くのコンテンツを読みましたが、どこを読んでも、これらの問題はバージョン 2.0.0 で修正されたと書かれています。

誰でもここでアドバイスできますか?

4

1 に答える 1

11

サーバーでは、Python 2.x では通常使用できない SNI を使用する必要があります。

その URL をブラウザーで開き、Wireshark を使用して TLS ハンドシェイクをトレースすると、Chrome がサーバー名を提案し、リモート サーバーがそれを使用して使用する証明書を決定することがわかります。

Requests でこれを機能させるには、SNI サポートを含み、Requests が透過的に利用する Python 3 を使用するか、SNI に必要な依存関係を Python 2.x の Requests from this answerにインストールできます。

  • pyopenssl
  • ndg-https クライアント
  • pyasn1

これらのソリューションのいずれかにより、コードが正しく機能します。

于 2013-10-16T12:38:36.960 に答える