爬虫基础——HTTP基本原理

1、先了解URI和URL

  URI的全称Uniform Resource Identifier即统一资源标志符,URL的全称Universal Resource Locator即统一资源定位符。

  举例来说,如https://www.baidu.com是一个链接,它是一个URI,也是一个UR。即有这样的一个图资源,我们用URI/URL来指定了它唯一的访问方式,这其中还包括了访问协议、访问路径(/即根目录)和资源名称,同过这样的链接就可以在互联网上找到这个资源。

  URL是URI的子集,也就是说每一个URL都是URI,但URI不一定是URL。怎样的情况下URI不是URL?URI还有一个子类是URN全称是Universa Resour Name,即统一资源名称。URN只命令资源而不指定如何定位资源。但是在目前的互联网中,URN用的很少一般用的都是URI/URL,一般的网页链接我们可以称其为URI或者URL。

2、HTTP和HTTPS

  在访问一个网页它的URL是以HTTP或者HTTPS开头,这就是访问资源的需要的协议类型。还有ftp、sftp、smd开头的URL,这些都是协议类型。

  HTTP的全称是Hyper Text Transfer Protocol,中文名是超文本传输协议。用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确的传送超文本文档。

  HTTPS的全称是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道。简单讲就是HTTP的安全版。

  HTTPS的安全基础是SSL,因此通过他传输的内容都是经过SSL加密的,主要作用可以分为两种:

  • 建立一个信息安全通道来保证数据传输的安全
  • 确认网站的真实性,凡是使用了HTTPS网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过CA机构颁发的安全签章来查询

  而某些网站虽然使用了HTTPS协议,但还是会被浏览器提示不安全。那是因为它的CA证不被CA机构信任,所以证书验证就不会通过而提示“你的连接不是私密连接”,但是实际上它的数据传输依然是经过SSL的加密。

3、HTTP请求过程

  我们在浏览器中输入一个URL然后回车就能看见自己想看见的网页。实际上这个过程是浏览器向网站的服务器发送一个请求,服务器接收到这个请求后进行处理和解析,然后返回对应的响应传回给浏览器。响应里面包含了页面的源代码等内容,浏览器再对其进行解析,然后将网页呈现。

4、请求

  请求是有客户端向服务端发出,可以分为四个部分:请求方法(Request Method)、请求的网址(Request URL)、请求头(Request Headers)、请求体(Request Body)。

4.1、请求方法

  常见的请求方法有两种:GET和POST。

  在浏览器中直接输入URL并回车,这便是一个get请求,请求的参数会直接包含到URL里。例如搜索BiliBili,这就是一个get请求,那么这个URL就是https://ww.baidu.com/s?wd=BiliBili其中就包含了请求内容。而post请求大多是在表单提交时发起。比如对于一个登陆表单,输入用户名和密码后,点击登录,这就会发起一个post请求,其数据通常以表单的形式传输,而不会体现在URL中。

get个post请求方法有什么区别:

  • get请求中参数包含在URL里面,数据可以在URL中看到,而post请求的URL不会包含这些数据,数据通常以表单形式传输,会包含在请求体中。
  • get请求提交的数据最多只有1024字节,而post没有限制。

我们平常大多遇到的都是get和post,但还是有一些其他的请求方法:

  • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
  • HEAD:向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
  • PUT:向指定资源位置上传其最新内容
  • DELETE:请求服务器删除Request-URL所标识的资源
  • TRACE:回显服务器收到的请求,主要用于测试或诊断
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

4.2、请求的网址

  请求的网址,即统一资源定位翻符URL,它可以唯一确定我们想请求的资源。

4.3、请求头

  请求头用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等。

4.4、请求体

  请求体一般承载的内容是post请求中的数据,而对于get请求,请求体则为空。

5、响应

  响应是由服务器向客户端返回的内容,可以分为三部分:响应状态码、响应头和响应体。

5.1、响应状态码

  响应状态码表示服务器的响应状态,如200表示服务器正常响应,404表示页面未找到。

5.2、响应头

  响应头包含了服务器对请求的应答信息,如Content-Type、Server、Set-Cookie等。

5.3、响应体

  响应当中最重要的就是响应体的内容了,响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的htlm代码。请求一张图片时,响应体就是图片的二进制数据。

爬虫基础——HTTP基本原理

上一篇:webpack搭建react项目bug解决方案


下一篇:JS30 - 05 Flex Panel Gallery