来源:python中国网 时间:2019-07-17

  在两条电脑可以通信的基础上,不同的协议就是代表两者之间不同的话术。http和https协议是搞爬虫接触比较频繁的协议。https相比http多了一层加密算法使得数据传输更加安全。

  浏览器打开一个网址其实就是发http/https请求给网页服务器,服务器返回页面给浏览器。爬虫要做的就是代替浏览器发请求并接受传输来的页面数据!


  http/https请求都包含请求行、请求头部、空行、请求数据四部分,http/https响应包含状态行、消息报头、空行、响应正文四部分!一个典型的HTTP示例:


  请求头和响应头使我们研究的重点。我们在浏览器上点击右键审查元素或者按f12,用浏览器访问www.python66.com这个网址就可以抓到http/https网络数据包,图示如下:

  请求头:


  响应头:


  响应内容:

  常见的请求头信息

  accept:浏览器通过这个头告诉服务器,它所支持的数据类型

  Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集

  Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式

  Accept-Language:浏览器通过这个头告诉服务器,它的语言环境

  Host:浏览器通过这个头告诉服务器,想访问哪台主机

  If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间

  Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的 防盗链

  Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接

  X-Requested-With: XMLHttpRequest 代表通过ajax方式进行访问

  User-Agent:请求载体的身份标识

  常见的响应头信息

  Location: 服务器通过这个头,来告诉浏览器跳到哪里

  Server:服务器通过这个头,告诉浏览器服务器的型号

  Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式

  Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度

  Content-Language: 服务器通过这个头,告诉浏览器语言环境

  Content-Type:服务器通过这个头,告诉浏览器回送数据的类型

  Refresh:服务器通过这个头,告诉浏览器定时刷新

  Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打数据

  Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的

  Expires: -1 控制浏览器不要缓存

  Cache-Control: no-cache

  Pragma: no-cache

  http/https请求方式:

  上文我们打开www.python66.com其实是get请求,get和post(提交表单数据)是http请求的两种常用方式,但是http不限于这两种方式,还有其他诸如put、delete等方式,具体如下:

GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过只获取响应头。
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。

  http/https响应状态码

  响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

  常见状态码:

  100~199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。

  200~299:表示服务器成功接收请求并已完成整个处理过程。常用200(OK 请求成功)。

  300~399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源)。

  400~499:客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)。

  500~599:服务器端出现错误,常用500(请求未完成。服务器遇到不可预知的情况)。

  补充https图示: