请求有客户端发起:可分为4个部分,请求方法(Requestmethod)、请求的网址(Request URL)、请求头(Request Headers)、请求体(Request Body)
1.请求方法
常见的有get和post
get和post的区别:
1.get请求中的参数包含在URL中,数据可以在URL中看到,而post请求的URL不会包含这些数据,数据都是通过表单的形式传输的,会包含在请求体中。
2.get请求提交的数据最多包含1024字节,而post请求没有限制。
一般登录时,需要提交用户名和密码,其中包含了敏感信息,用get请求的话密码就会暴露在外面,最好使用post请求。
2.请求的网址
请求的网址,即统一资源定位符URL,它是唯一确定我们想请求的资源
3.请求头
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等,下面是一些常见的头信息
accept:请求报头域,用于指定客户端可以接受那些类型的信息
accept-Language:指定客户端可接受的语言类型
accept-Encoding:指定客户端可接受的内容编码
host:指定请求资源的主机的IP和端口号,其内容为请求URL的原始服务器或网关的位置
cookie:这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据,主要功能就是为了维持当前的会话访问。
referer:用来标识这个请求是从哪个页面发过来的,服务器可以那这信息并做响应的处理
user-agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本,浏览器及其版本信息,在做爬虫时加上此信息,可以伪装成浏览器,如果不加,很有可能被识别出为爬虫。
context-type:也叫互联网媒体类型,或者MIME类型,在HTTP协议消息头中,它用来标识具体请求中的媒体类型信息。
因此请求头是请求的重要组成部分,在写爬虫时,大部分情况下都需要设置请求头。
4.请求体
请求体一般承载的内容是post请求中的表单数据,而对于get请求请求体为空。
content-type和post提交数据方式的关系
application/x-www-form-urlencode 表单数据
multipart/form-data 表单文件上传
application/json 序列化json数据
text/xml XML数据
响应,由服务端返回给客户端,分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。
1.响应状态码
代表服务器的响应状态。
2.响应头
响应头包含了服务器对请求的应答信息,如context-type、server、set-cookie等
date:服务响应产生的时间
last-modified:指定资源的最后修改时间
content-encoding:指定响应内容的编码
server:包含服务器的信息,比如名称,版本号等。
context-type:文档类型,指定返回的数据类型是什么。
set-cookie:设置cookies。
expires:指定响应的过期时间,可以使代理服务器或者浏览器将加载的内容更新到缓存中。如果再次访问,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。
3.响应体
响应的正文数据都在响应体中了。