requests发送HTTPS请求(处理SSL证书验证)

一、SSL是什么,为何发送HTTPS请求时须要证书验证?web

    1.1 SSL:安全套接字层。是为了解决HTTP协议是明文,避免传输的数据被窃取,篡改,劫持等。浏览器

    1.2 TSL:Transport Layer Security,传输层安全协议。TSL实际上是SSL标准化后的产物,即SSL/TSL安全

    其实是一个东西。网络

    1.3 HTTPS:HTTPS是兼容HTTP的,能够把HTTPS理解为'HTTP over TSL',即HTTPS是HTTP协议spa

    和TSL协议的组合。3d

    1.4 HTTPS在传输数据时,一样会先创建TCP链接,创建起TCP链接后,会创建TSL链接,这个过程能够code

    经过抓包查看:blog

    

    1.5 SSL协议处于网络7层结构的哪一层?有的资料直接说明SSL协议处于传输层,文档

    有的资料则说SSL协议处于传输层与应用层之间。get

    1.6 请求能够为HTTPS请求验证SSL证书,就像web浏览器同样,SSL验证默认是开启的,

    若是证书验证失败,请求会抛出SSLError:

    >>>import requests

    >>>requests.get('https:xxxx.com')    #发起一个https请求

    >>>requests.exceptions.SSLError: xxx

    1.7 遇到请求的SSL验证,能够直接跳过不验证,将verify=False设置一下便可。

    官方文档解释以下:

    

二、忽略警告

    2.1 将验证设置忽略后,能够跳过SSL验证,但存在一个警告信息InsecureRequestWarning。

    如下为忽略警告信息的方式:

    

总结:

    1.HTTPS请求进行SSL验证或忽略SSL验证才能请求成功,忽略方式为verify=False。

    2.SSL证书是由CA机构颁发的,因此安全也是要钱的

    3.要彻底理解HTTP协议,不能只到分辨HTTP的GET,POST等动做的程度,还要去理解7层

      网络结构中每层使用的协议,以及数据传输的过程

相关文章
相关标签/搜索