我正在使用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版中修复的那些问题。
有人可以在这里建议吗?
答案 0 :(得分:11)
服务器要求您使用SNI,这在Python 2.x中通常不可用。
如果您在浏览器中打开该URL并使用Wireshark来追踪TLS握手,您可以看到Chrome建议使用服务器名称,远程服务器使用它来确定要使用的证书。
要在Requests中使用,您可以使用Python 3,其中包括SNI支持以及哪些请求将透明地使用,或者您可以在请求from this answer中的Python 2.x中为SNI安装所需的依赖项。 :
这些解决方案中的任何一个都可以使您的代码正常运行。