Python 爬虫(4)HTTP协议
文章目录
- 一、HTTP协议
- 1、HTTP特点
- 2、HTTP工作原理
- 3、HTTP与HTTPS的区别
前言:
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于在客户端和服务器之间传输超文本(如HTML文件)。HTTP协议是Web的基础,它定义了客户端如何请求资源以及服务器如何响应这些请求。
一、HTTP协议
1、HTTP特点
HTTP协议具有以下特点:
- 简单快速:客户端向服务器发送请求时,只需指明请求方法、资源路径等必要信息,服务器能够快速理解并处理请求,返回相应的结果。例如,使用GET方法请求一个HTML页面,服务器直接返回该页面的内容。
- 灵活可扩展:HTTP协议允许传输各种类型的数据,如文本、图片、音频、视频等,通过在请求头和响应头中设置不同的字段来标识数据类型和相关信息。同时,协议自身也易于扩展,能够适应不断发展的网络应用需求,例如新增请求方法或状态码等。
- 无连接:在HTTP 1.0版本中,每次请求 - 响应完成后,连接就会被关闭。这意味着服务器在处理完一个请求后,不会保留与客户端的连接状态,下次客户端再次请求时需要重新建立连接。不过,HTTP 1.1版本默认支持持久连接,多个请求可以在同一个连接上进行,提高了性能。
- 无状态:服务器不会记住客户端的请求状态,每个请求都是独立的。也就是说,服务器无法区分连续的多个请求是否来自同一个客户端,也不记得客户端之前的请求信息。这种特性使得HTTP协议简单高效,但在实现一些需要记录用户状态的功能(如用户登录、购物车等)时,需要借助其他技术(如Cookie、Session等)来弥补。
- 基于请求 - 响应模型:客户端发起请求,服务器根据请求进行处理并返回响应。客户端和服务器之间的交互是单向的,由客户端主动发起请求,服务器被动响应请求,服务器不会主动向客户端发送数据,除非客户端先发起请求。
- 支持缓存:HTTP协议允许在客户端、服务器或中间代理服务器上设置缓存机制。通过合理设置缓存,可以避免重复请求相同的资源,提高访问速度和性能,减少网络带宽占用。例如,浏览器可以缓存网页的静态资源,下次访问相同页面时直接从本地缓存中获取,而无需再次从服务器下载。
- 明文传输:HTTP协议以明文形式传输数据,包括请求和响应的内容。这使得数据在传输过程中容易被监听、窃取和篡改,存在一定的安全风险。为了解决这个问题,衍生出了HTTPS协议,通过SSL/TLS对数据进行加密传输。
2、HTTP工作原理
HTTP协议基于请求-响应模型,工作原理可以概括为以下几个步骤:
- 建立连接:客户端(通常是浏览器)通过TCP/IP协议与服务器建立连接。默认情况下,HTTP使用80端口。
- 发送请求:客户端向服务器发送一个HTTP请求。请求由请求行、请求头和请求体组成。
- 请求行:包含请求方法(如GET、POST)、请求的资源路径(URL)和HTTP版本。
- 请求头:包含一些附加信息,如客户端类型、接受的内容类型等。
- 请求体:在POST或PUT请求中,包含发送给服务器的数据。
- 处理请求:服务器接收到请求后,根据请求的内容进行处理。服务器可能会读取数据库、执行脚本或访问文件系统来生成响应。
- 发送响应:服务器将处理结果封装成HTTP响应,发送回客户端。响应由状态行、响应头和响应体组成。
- 状态行:包含HTTP版本、状态码(如200表示成功,404表示未找到)和状态消息。
- 响应头:包含一些附加信息,如服务器类型、内容类型等。
- 响应体:包含实际返回的数据,如HTML页面或JSON数据。
- 关闭连接:在HTTP/1.0中,每次请求-响应后连接会关闭。在HTTP/1.1中,默认使用持久连接,可以在同一个连接上发送多个请求和响应。
3、HTTP与HTTPS的区别
HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,它在HTTP的基础上加入了SSL/TLS协议,提供了数据加密、身份验证和数据完整性保护。以下是HTTP与HTTPS的主要区别:
- 安全性:
- HTTP:数据以明文传输,容易被窃听和篡改。
- HTTPS:通过SSL/TLS加密传输数据,确保数据在传输过程中不被窃听和篡改。
- 端口:
- HTTP:默认使用80端口。
- HTTPS:默认使用443端口。
- 证书:
- HTTP:不需要证书。
- HTTPS:需要从受信任的证书颁发机构(CA)获取SSL/TLS证书,用于验证服务器身份。
- 性能:
- HTTP:由于没有加密和解密过程,性能较高。
- HTTPS:由于加密和解密过程,性能稍低,但随着硬件和协议的优化,差距逐渐缩小。