zoukankan      html  css  js  c++  java
  • Python 2.7.x 使用Requests发起https请求时报Warning的问题

    warning :如下

    /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py:852: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning)

     

    看到这个的时候不要担心,只是个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 的方法很简单

    >>> import urllib3
    >>> urllib3.disable_warnings()

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

    requests.packages.urllib3.disable_warnings()


    转自:http://www.92ez.com/?action=show&id=23443
  • 相关阅读:
    hdu-1116(欧拉回路+并查集)
    hdu-1143(简单dp)
    hdu-1141
    JAVA里面获取map的key和value的方法
    MySQL中Date,DateTime,TimeStamp和Time的比较
    idea中修改git提交代码的用户名
    spring配置多个视图解析
    判断Map集合中是否存在某一个key
    win10家庭版升级为win10专业版
    MyBatis模糊查询的三种拼接方式
  • 原文地址:https://www.cnblogs.com/yanhuidj/p/8882933.html
Copyright © 2011-2022 走看看