一、HTTP基本原理
=============
1 URI和URL
URI的全称为统一资源标志符,URL的全称为统一资源定位符。用来指定一个资源的访问方式,包括访问协议,访问路径和资源名称,从而找到需要的资源(网页的内容都是按照一定层次保存到网站系统的后台数据库或者文件夹内)。
其实URL是URI的子集,URI的另一个子类叫做URN,全称为统一资源名称。但在现在的互联网中,URN用得非常少,我们可以把URI看作URL。
2 超文本
网页源代码由一些标签构成,浏览器解析了这些标签后,就会形成我们平常看到的网页,网页的源代码HTML就称作为超文本。
3 HTTP和HTTPS
URL的开头有http或https,是访问资源需要的协议类型。
HTTP的全称为超文本传输协议,是用于从网络传输超文本数据到本地浏览器的传送协议。目前广泛使用的是HTTP1.1版本。
而HTTPS是以安全为目标的HTTP通道,是HTTP的安全版,它的安全基础是SSL,就是HTTP下加入SSL层。传输的内容通过SSL加密,保证了数据传输的安全。而且每个用HTTPS的url后面都有一个锁头标志,可以查看网站认证之后的真实信息,也可以通过CA(电子认证服务)下发的安全证书查询。
在访问谷歌的时候,对于一些不安全的未被加密的网址,会对其进行高亮显示"此网站不安全"。
在访问12306网站的时候,大家可能会发现,也是会被提示不安全,因为这个网站的证书是铁道部自行颁发的,并没有被ca机构信任。但是他仍旧是SSL认证的,如果要爬取这样的站点,就需要设置忽略证书选项。
4 HTTP请求过程
我们在浏览器中输入一个URL,回车后就会观察到页面内容。其实就是我们用浏览器向网站所在的服务器发送了一个请求,网站的服务器接收到这个请求后进行处理和解析,然后再返回对应的响应,之后传给浏览器,浏览器再对其进行解析,把网页内容呈现出来。
可以用网页的审查元素打开开发者模式下的Network监听组件,里面可以得到访问当前请求网页时发生的所有网络请求和响应,我们打开淘宝首页查看一下:
其中各列的意义如下:
|列名| 含义 |
-------|-------
|Name|请求的名称,一般是URL的最后一部分内容|
| Status|响应的状态码 ,200表示正常。|
|Type| 请求的文档类型,document表示一个HTML文档|
|Initiator|请求源,用来标记请求是那个对象或进程发起的|
|Size|从服务器下载的文件和资源的大小,如果是从缓存中获取数据,这回显示from cache|
|Time|发起请求到获取响应所用的总时间|
|Waterfall|网络请求的可视化瀑布流|
当我们点击任意一个过程时,就会看到更详细的内容: