http和https是访问网页资源时常见的两种协议类型,这里我们首先了解一下这两个协议的含义。
HTTP的全称是Hyper Text Transfer Protocol,中文名叫做超文本传输协议。HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。HTTP由万维网协会和Internet工作小组IETF共同合作制定的规范,目前广泛使用的是HTTP 1.1版本。
HTTPS的全称是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入了SSL层,简称为HTTPS。
HTTPS的安全基础是SSL,因此通过它传输的内容都是经过SSL加密的,它的主要作用可以分为如下两种:
- 建立一个信息安全通道来保证数据传输的安全。
- 确认网站的真实性,凡是使用了HTTPS的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过CA机构颁发的安全签章来查询。
现在越来越多的网站和APP都已经向HTTPS方向发展,例如:
- 苹果公司强制所有 ios APP在2017年1月1日前全部改为HTTPS加密,否则APP就无法在应用商店上架。
- 谷歌从2017年1月推出的Chrome 56开始,对未加密的网址链接亮出风险提示,即在地址栏的显著位置提醒用户“此网站不安全”。
- 腾讯微信小程序的官方需求文档要求后台使用HTTPS请求进行网络通信,不满足条件的域名和协议无法请求。
而有些网站虽晚使用了HTTPS协议,但还是会被浏览器提示不安全,例如我们在Chrome浏览器里打开链接:https://www.12306.cn/,这是浏览器就会提示“您的连接不是私密连接”。这是因为12306的CA证书是中国铁道部自行签发的,而这个证书不被CA机构信任,所以这里证书验证不会通过而提示这样的话,但是实际上它的数据传输依然是经过SSL加密的,如果要爬取这样的站点,就需要设置忽略证书的选项,否则会提示SSL链接错误。