您的位置: 网站首页> requests爬虫> 当前文章
requests的SSL证书验证及警告处理
老董-我爱我家房产SEO2021-11-15170围观,109赞
https是http和ssl协议的混合体,ssl使得http访问变的安全(https与证书是另外1个大话题)。如果网站没有设置好https证书或者网站的https证书不被CA机构认可,
那么访问网站可能就会出现如下提示:
像浏览器一样,Requests也可以为 HTTPS 请求验证 SSL 证书,Requests 默认附带了一套它信任的根证书,来自于 Mozilla trust store。。SSL 验证默认是开启的,即verify参数默认=True。
requests.get('https://github.com', verify=True)
Requests默认附带的根证书在每次Requests更新时才会更新,如果固定使用某一版本的Requests那么证书有可能已经太旧了。
如果证书会导致证书验证失败Requests会抛出SSLError,requests.exceptions.SSLError:xxxx
如果不进行证书验证可以设置verify=False,但是不验证证书会抛出InsecureRequestWarning异常
requests.get('https://www.baidu.com', verify=False)
requests.get('https://www.baidu.com', verify=False)
InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning,
如果要禁用异常提示有两种方法可以实现
from requests.packages import urllib3 urllib3.disable_warnings() r= requests.get('https://www.baidu.com',verify=False)
from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) r= requests.get('https://www.baidu.com',verify=False)
此外,requests的verify参数还可以填写成一个证书文件地址(CA_BUNDLE文件),如果 verify 设为文件夹路径,文件夹必须通过 OpenSSL 提供的 c_rehash 工具处理。
requests.get('https://github.com', verify='/path/to/certfile')
或者将证书文件路径保持在会话中:
s = requests.Session() s.verify = '/path/to/certfile'
你还可以通过 REQUESTS_CA_BUNDLE 环境变量定义可信任 CA 列表。对于私有证书(或者其他非CA机构颁发的证书),可以传递一个证书文件路径给verify参数,也可以设置REQUEST_CA_BUNDLE环境变量。
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
requests的SSL证书验证及警告处理文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200