python-requests 2.0.0 - [Errno 8] _ssl.c:504:EOF违反协议

时间:2013-10-16 09:40:05

标签: python https python-requests

我正在使用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.

我在网站和网站上阅读了很多内容,但我读到的每一个内容都说明了2.0.0版中修复的那些问题。

有人可以在这里建议吗?

1 个答案:

答案 0 :(得分:11)

服务器要求您使用SNI,这在Python 2.x中通常不可用。

如果您在浏览器中打开该URL并使用Wireshark来追踪TLS握手,您可以看到Chrome建议使用服务器名称,远程服务器使用它来确定要使用的证书。

要在Requests中使用,您可以使用Python 3,其中包括SNI支持以及哪些请求将透明地使用,或者您可以在请求from this answer中的Python 2.x中为SNI安装所需的依赖项。 :

  • pyopenssl
  • NDG-httpsclient
  • pyasn1

这些解决方案中的任何一个都可以使您的代码正常运行。