《跟我一起学爬虫系列》2-HTTP/HTTPS简介

HTTP/HTTPS

HTTP:超文本传输协议):是一种发布和接收 HTML页面的方法,默认端口80

HTTPS:HTTP的安全版,在HTTP下加入SSL层,默认端口443

工作流程

  • 客户端(通常是浏览器)发送一个HTTP请求
  • 服务端开始处理请求,发送HTTP响应把结果返回给客户端

其中一个请求的开始到一个响应的结束称为事务,事务结束后还会在服务端记录一条日志

HTTP请求

HTTP请求分为请求行、请求头、空行、请求正文:

  • 请求行:方法URL协议/版本,示例 GET/sample.jsp HTTP/1.1
  • 请求头:包括请求头包含许多有关的客户端环境和请求正文的有用信息,如访问的域名、用户代理、Cookie等信息
  • 空行:表示请求头结束,不可缺失
  • 请求正文:就是HTTP请求的数据,非必须

URL:统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法

基本格式:scheme://[username:password@]host[:port#]/path/…/[?query-string][#anchor]

HTTP请求方法

  • GET:请求页面信息,不包括主体,也可以传输少量数据,以?分割URL和传输数据,多个参数用&连接,例如:login.action?name=abc&password=123,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,安全方法
  • HEAD:与GET请求类似,但是返回的响应中没有具体的内容,用于获取报头,安全方法
  • POST:向服务器发送数据,如提交表单,上传文件等,提交数据放在http包体,数据为结构化数据,非安全方法
  • PUT:替换服务器资源,向服务非结构数据,非安全方法
  • PATCH:更新服务器部分资源,结构数据,非安全方法
  • DELETE:删除服务器指定页面,非安全方法
  • CONNECT:将服务器作为代理,让服务器代替用户去访问其他网页
  • OPTIONS:查看服务器允许的方法
  • TRACE:回显服务器收到的请求,主要用于测试或诊断

更多信息请点击HTTP request methods

常见HTTP请求Header

  • Accept:传输文件类型,使用MIME类型表示,即主类型/次类型

示例:Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值,则默认为1,按从左到右排序顺序;若被赋值为0,则用于表示浏览器不接受此内容类型Accept-Encoding

  • Accept-Encoding:文件编码格式

示例:Accept-Encoding:gzip, deflate

  • Accept-Language:指定可以接收的语言种类

示例:Accept-Language:zh-CN,zh;q=0.9,en;q=0.8

  • Cache-Control:指定缓存机制

示例:Cache-Control:max-age=0  不缓存服务器资源

  • Connection:是否开启长连接

示例:Connection:keep-alive  告诉服务器这是一个长连接

  • Cookie:浏览器用这个属性向服务器发送Cookie,它可以记载和服务器相关的用户信息
  • Host:主机和端口号

示例:Host:blog.51cto.com

  • Upgrade-Insecure-Requests:升级为HTTPS请求

示例:Upgrade-Insecure-Requests:1  加载http资源时自动替换为https请求,不再显示警报

  • User-Agent:浏览器名

示例:User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

  • Referer:表明产生页面来自哪个URL

示例:Referer:http://blog.51cto.com/13570193/2108347

  • Accept-Charset:表明可以处理的字符编码

示例:Accept-Charset: utf-8, iso-8859-1;q=0.5

  • Content-Type:表明实际发送的数据类型

示例:Content-Type:application/x-www-form-urlencoded

更多header字段含义可到HTTP Headers查询

HTTP响应

HTTP响应分为:状态行、响应头、空行、响应正文

  • 状态行:协议版本、状态码、状态码解释
  • 响应头:与请求头类似
  • 空行:表示响应头结束,不可缺失
  • 响应正文:响应的具体数据

常见HTTP响应Header

  • Cache-Control:

  • Connection

  • Content-Encoding
  • Content-Type

  • Date:服务端发送资源时的服务器时间,使用GMT时间,HTTP协议使用的时间都是GMT时间

示例:Date:Sun, 30 Sep 2018 06:49:11 GMT

  • Expires:告诉客户端在这个时间前,可以直接访问缓存副本

示例:Expires, 30 Sep 2018 06:49:11 GMT

  • Server:表明服务器信息

示例:Server:openresty

  • Transfer-Encoding:服务器发送的资源的方式

示例:Transfer-Encoding:chunked   分块发送

  • Vary:用于列出一个响应字段列表,告诉缓存服务器遇到同一个 URL 对应着不同版本文档的情况时,如何缓存和筛选合适的版本

示例:Vary:Accept-Encoding

  • Strict-Transport-Security:告诉浏览器只能通过HTTPS访问当前资源

示例:Strict-Transport-Security:max-age= 31536000  表示31536000内都使用https访问资源

更多header字段含义可到HTTP Headers查询

常见状态码

1xx: 信息性状态码

  • 100, 101

2xx: 成功状态码

  • 200:OK

3xx: 重定向状态码

  • 301:请求永久重定向
  • 302:请求临时重定向
  • 304:请求被重定向到客户端本地缓存

4xx: 客户端错误状态码

  • 400---/客户端请求存在语法错误
  • 401---/客户端请求没有经过授权
  • 403---/客户端的请求被服务器拒绝,一般为客户端没有访问权限
  • 404---/客户端请求的URL在服务端不存在

5xx: 服务器端错误状态码

  • 500: Internal Server Error  服务器内部错误
  • 502: Bad Gateway  前面代理服务器联系不到后端的服务器时出现
  • 504:Gateway Timeout  这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应

更多响应状态码请点击HTTP response status codes

HTTP版本

  • HTTP/0.9    HTTP协议的最初版本,仅支持GET,仅能访问HTML格式的资源
  • HTTP/1.0    增加了POST和HEAD,支持MIME,可以访问多种数据格式,如text/html、image/jpeg等,支持cache。工作方式是每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,不支持keepalive。
  • HTTP/1.1    支持keepalive持久连接,加入了管道机制,一个TCP连接同时允许多个请求同时发送,增加了并发性;新增了请求方式PUT、PATCH、DELETE等。但是还存在一些问题,服务端是按队列顺序处理请求的,假如一个请求处理时间很长,则会导致后边的请求无法处理,这样就造成了队头阻塞的问题;同时HTTP是无状态的连接,因此每次请求都需要添加重复的字段,降低了带宽的利用率。
  • HTTP/2.0    增加双工模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题;HTTP请求和响应中,状态行和请求/响应头都是些信息字段,并没有真正的数据,因此在2.0版本中将所有的信息字段建立一张表,为表中的每个字段建立索引,客户端和服务端共同使用这个表,他们之间就以索引号来表示信息字段,这样就避免了1.0旧版本的重复繁琐的字段,并以压缩的方式传输,提高利用率。另外也增加服务器推送的功能,即不经请求服务端主动向客户端发送数据。

当前主流的协议版本还是HTTP/1.1版本

网站访问量

  • IP:以公网IP计算访问量
  • UV:以电脑计算访问量
  • PV:以打开网页次数计算访问量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值