摘要:关于的解决办法直接上代码版本报错经过一番查找,发现是不在支持。下面是解决办法,注意版本及以下的如果版本是及以上因为我用的,的解决办法就不写,那个更简单,可以自行网上搜索。
关于EOF occurred in violation of protocol (_ssl.c:661)的解决办法
直接上代码(python版本2.7)
`import requests
r = requests.get("https://www.zjkill.com/news/")
r.encoding = "utf8"
print r.text
print r.status_code,r.url`
报错
requests.exceptions.SSLError: ("bad handshake: SysCallError(-1, "Unexpected EOF")",)
经过一番查找,发现是requests不在支持3DES stream cipher。
下面是解决办法,注意ruquests版本2.11及以下的
from requests.adapters import HTTPAdapter from requests.packages.urllib3.poolmanager import PoolManager import ssl class MyAdapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block=False): self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, block=block, ssl_version=ssl.PROTOCOL_TLSv1) s = requests.Session() s.mount("https://", MyAdapter()) r = requests.get("https://www.zjkill.com/news/") r.encoding = "utf8" print r.text
如果requests版本是2.12及以上
import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.ssl_ import create_urllib3_context CIPHERS = ( "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:" "DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:" "!eNULL:!MD5" ) class DESAdapter(HTTPAdapter): """ A TransportAdapter that re-enables 3DES support in Requests. """ def init_poolmanager(self, *args, **kwargs): context = create_urllib3_context(ciphers=CIPHERS) kwargs["ssl_context"] = context return super(DESAdapter, self).init_poolmanager(*args, **kwargs) def proxy_manager_for(self, *args, **kwargs): context = create_urllib3_context(ciphers=CIPHERS) kwargs["ssl_context"] = context return super(DESAdapter, self).proxy_manager_for(*args, **kwargs) s = requests.Session() s.mount("https://www.zjkill.com/", DESAdapter()) r = s.get(url) r.encoding = "utf8" print r.text
因为我用的python2.7,python3的解决办法就不写,那个更简单,可以自行网上搜索。
附上参考链接Configuring TLS With Requests
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41935.html
摘要:之后如果仍然有剩余未发送的数据,那么就如果已经没有剩余数据了,继续去取下一个数据包。拿到后,要用函数转化为相应的类型即可得到包长值。 swPort_onRead_check_eof EOF 自动分包 我们前面说过,swPort_onRead_raw 是最简单的向 worker 进程发送数据包的方法,swoole 会将从客户端接受到的数据包,立刻发送给 worker 进程,用户自己把...
摘要:如果在调用之前我们设置了,但是不在第二个进程启动前这个套接字,那么第二个进程仍然会在调用函数的时候出错。 前言 本节主要介绍 server 模块进行初始化的代码,关于初始化过程中,各个属性的意义,可以参考官方文档: SERVER 配置选项 关于初始化过程中,用于监听的 socket 绑定问题,可以参考: UNP 学习笔记——基本 TCP 套接字编程 UNP 学习笔记——套接字选项 构造...
摘要:当被调用时,表示已经断开连接。第三版去掉第三版的目的是去掉。协程保持不变,但是已被剔除不再需要请求发送之后,继续异步等待数据的接收,即。的作用是结束那个导致等待的,这样也就可以结束了结束,以便结束。 关于 Asyncio 的其他文章: Python 的异步 IO:Asyncio 简介 Python 的异步 IO:Aiohttp Client 代码分析 如果不知道 Asyncio 是...
1.Overview HTTPS pages typically use one of two secure protocols to encrypt communications - SSL (Secure Sockets Layer) or TLS (Transport Layer Security).When you request a HTTPS connection to a webpa...
阅读 3203·2021-11-23 09:51
阅读 3544·2021-11-09 09:46
阅读 3563·2021-11-09 09:45
阅读 2922·2019-08-29 17:31
阅读 1800·2019-08-26 13:39
阅读 2693·2019-08-26 12:12
阅读 3589·2019-08-26 12:08
阅读 2180·2019-08-26 11:31