1,HTTP数据包概述
- HTTP协议是什么?
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。 - HTTP原理
HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件,、图片文件, 查询结果等。
HTTP协议一般用于B/S架构。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。 - HTTP报文组成
a. 请求行:包括请求方法、URL、协议/版本
b. 请求头(Request Header)
c. 请求正文 - HTTP特点
http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。
2,Http数据包的详解
- 请求数据包内容详解
- 请求行:即数据包的第一行,由三个标记组成,并用空格隔开
- 请求方法:GET、POST、HEAD、PUT等共八种,最常用的就是前两种,图一为GET方法。
- 请求URL:即要找的资源的网络绝对路径,上图的URL为/,即根目录。
- HTTP版本:有1.0、1.1、2.0版本,最常见为1.1版
- 请求头:由关键字和值组成,之间用:隔开,主要关键字有以下:
- HOST:请求的地址域名和端口
- User-Agent:用户代理,即浏览器的用户代理信息,有浏览器信息和操作系统信息等
- Accept:浏览器支持的请求类型,为MIME类型
- Accept-language:浏览器接受的语言类型
- Accept-ENcoding:浏览器能处理的压缩代码
- Connection:连接类型,图一close标识请求处理完毕后会断开连接
- Cookie:保存在用户浏览器端的用来做用户验证的一端文本片段
- Upgrade-Insecure-Requests:http 自动升级到https,防止跨域问题但是域名端口都不同的不会提升
- Cache-Control:强制要求服务器返回最新的文件内容,也就是不走缓存,返回的200
- 空行:必须有的一行,数据包的固定格式。
- 请求数据:下边都是一些数据段
- 响应数据包详解
- 状态行:包括协议版本,状态响应码和状态描述协议版本:同请求,常用http1.1
- 状态响应码
- 1XX:信息,服务器收到了请求,需要请求者继续执行
- 2XX:成功,操作成功被接收或处理
- 3XX:重定向,需要进一步的操作以完成请求
- 4XX:客户端错误,请求包含语法错误或无法完成请求
- 5XX:服务器错误,服务器在处理请求的过程中发生了错误
OK、Created、Not Found等,是对状态响应码的描述
- 常见状态码:
200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 请求资源不存在,可能是输入了错误的URL
500 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。 - 响应头:键值对组成,同上的请求头,主要内容有以下:
- Date:服务器响应的格林尼治时间
- Server:服务器的类型信息,图二为指出服务器为apache,版本为2.4.46
- X-Powered-By:告知网站使用何种语言或框架编写
- Set-Cookie:从服务器向用户发送的Cookie,用于下次浏览器的请求
- Upgrade:请求客服端升级协议
- Connection:连接类型
- Vary:记录了代理服务器返回特定数据参考了哪些请求字段
- Content-Length:返回数据的长度
- Content-Type:回送数据的类型
3,代理服务器修改数据包
Reuest 也就是浏览器向服务器请求的数据包
Response 就是服务器回应浏览器的数据包
中间出现的Proxy也就是代理服务器,代理的出现在接受数据包和发送数据包的时候提供了修改数据包的机会
其中代理我用的是一款叫 burp suite 的软件。
开启代理,然后在火狐浏览器的设置里的代理服务器一栏,填上代理服务器的地址
修改站长之家的返回信息:
这是修改之前的页面
这是抓到的数据包,我们通过修改user-agent更改上图右下角显示的浏览器的信息
这里是我们利用burpsuite修改完之后的效果图
到现在我们就完成了通过伪造数据包来修改服务器对自己电脑的一些判断,
但是现在很多的网站都是https的通讯协议,此时这种方法就会有一些不适应,后期我会在写一下HTTPS的文章。
生活中我们有很多时候需要投票,利用这个技术也可以做到n多次的投票,具体的就不多展示了,感兴趣的可以自行搜索。