首页 > WEB互联网 > 解决解决Python 2.7.x 使用Requests发起https请求时报Warning的问题 2.7.x 使用Requests发起https请求时报Warning的问题
2017
07-05

解决解决Python 2.7.x 使用Requests发起https请求时报Warning的问题 2.7.x 使用Requests发起https请求时报Warning的问题

前言

使用Python写小爬虫是一件非常快乐的事情,现在越来越多的网站使用的是https安全链接,但是在使用requests请求https网站的时候会提示一大堆的warning,这虽然不会影响功能,但是看起来还是非常不友好的。

今天咱们就来解决这个问题。

分析

先来看下具体的Warning是啥样的

看到这个的时候不要担心,只是个Warning不是Error,认真读一下这句话,似乎跟 urllib3 有关系,后面还有个链接地址 https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 。

首先,我这里使用的是Requests库,requests 库其实是基于 urllib 编写的,对 urllib 进行了封装,使得使用时候的体验好了很多,现在 urllib 已经出到了3版本,功能和性能自然是提升了不少。所以,requests最新版本也是基于最新的 urllib3 进行封装。

所以,上面看的哪个提示其实就是 urllib3 的提示,根据提示给出的链接咱们进去看下写了啥。

在urllib2时代对https的处理非常简单,只需要在请求的时候加上 verify=False 即可,这个参数的意思是忽略https安全证书的验证,也就是不验证证书的可靠性,直接请求,这其实是不安全的,因为证书可以伪造,不验证的话就不能保证数据的真实性。

在urllib3时代,官方强制验证https的安全证书,如果没有通过是不能通过请求的,虽然添加忽略验证的参数,但是依然会 给出醒目的 Warning,这一点没毛病。

解决

咱们在写爬虫的时候一般也不会去在意目标地址的证书是否安全,直接开爬,这里咱们就不希望看到一大堆的错误提示,根据官方给出的解决方法,针对Python 2 的方法很简单

两行代码就行了,但是这里咱们需要注意,咱们用的是Requests库而不是直接使用的urllib3,所以这里咱们不能直接使用官方给定的方案,稍微谷歌了一下找到了解决方案,这个解决方案是在Requests库的官方github的issues上给出的,地址 https://github.com/requests/requests/issues/2214 ,代码

需要注意的是这里依然需要设置  verify=False 来忽略证书的验证。

最后编辑:
作者:欧阳
欧阳
设计界的一只猿|平面设计|创意|WEB安全|互联网

解决解决Python 2.7.x 使用Requests发起https请求时报Warning的问题 2.7.x 使用Requests发起https请求时报Warning的问题》有 3 条评论

  1. 支持博主,感谢博主的分享

留下一个回复

你的email不会被公开。