我正在使用请求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所需的依赖项:
这些解决方案中的任何一个都将使您的代码正常工作。
关于python-requests 2.0.0-[Errno 8] _ssl.c :504: EOF occurred in violation of protocol,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19399975/