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

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


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



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


请求头(Requests Header):


响应头(Response Headers):


响应内容(Response):


常见的请求头信息

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图示: