我正在使用请求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版中解决。

有人可以在这里建议吗?

最佳答案

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

如果在浏览器中打开该URL并使用Wireshark来跟踪TLS握手,则可以看到Chrome提出了服务器名,而远程服务器使用它来确定要使用的证书。

要在Requests中实现此功能,您可以使用Python 3(其中包括SNI支持并且可以透明地使用Requests),也可以在Requests from this answer中的Python 2.x中安装SNI所需的依赖项:

  • pyopenssl
  • ndg-httpsclient
  • pyasn1

  • 这些解决方案中的任何一个都将使您的代码正常工作。

    关于python-requests 2.0.0-[Errno 8] _ssl.c :504: EOF occurred in violation of protocol,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19399975/

    10-10 13:53
    查看更多