Fiddler 简介
Fiddler 是位于客户端和服务器端的 HTTP 代理目前最常用的 http 抓包工具之一功能非常强大,是 Web 调试的利器
转发 私信【软件测试】领取Fiddler安装包和配套学习资料
- 监控浏览器所有的 HTTP/HTTPS 流量
- 查看、分析请求内容细节
- 伪造客户端请求和服务器响应
- 测试网站的性能解密 HTTPS 的 Web 会话
- 全局、局部断点功能
- 第三方插件
场景使用场景
- 接口调试、接口测试、线上环境调试、Web 性能分析
- 判断前后端 bug、开发环境 hosts 配置、mock、弱网断网测试
B/S 架构
编写程序部署到 Web 服务器Web 服务器运行在服务器上,绑定 ip 地址并监听某端口,接收和处理 http 请求客户端通过 http 协议获取服务器上的网页、文档等
工作原理
HTTP
Hyper Text Transfer Protocol(超文本传输协议)用于从万维网服务器传输超文本到本地浏览器的传送协议HTTP 协议是基于 TCP 的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输 HTML 页面的内容。默认端口是 80http 是基于请求与响应模式的、无状态的、应用层的协议
完整的 HTTP 协议
完整的 http 协议包含请求和响应两块内容
HTTP 请求报文
HTTP 请求报文主要由请求行、请求头部、空一行、请求正文(请求体)4 部分组成
如下是 fiddler 某个会话的请求报文
请求方法( Request Method)
请求方法 |
备注 |
GET |
请求资源 |
POST |
提交资源 |
Head |
获取响应头 |
PUT |
替换资源 |
DELETE |
删除资源 |
OPTIONS |
允许客户端查看服务器的性能 |
TRACE |
回显服务器收到的请求,用于测试或诊断 |
URL
Uniform Resource Locator:统一资源定位符,用于描述网上的资源格式:schema://host[:port#]/path/…/[?query-string]
scheme:协议,如 http,https,ftp 等host:域名或者 IP 地址port:端口path:资源路径query-string:发送的参数
如:https://www.baidu.com/s?wd=柠檬班
请求头(Request Header)
请求头 |
描述 |
Host |
主机 ip 地址或域名 |
User-Agent |
客户端相关信息,如果操作系统、浏览器等信息 |
Accept |
指定客户端接收信息类型,如:image/jpg,text/html,application/json |
Accept-Charset |
客户端接受的字符集,如 gb2312、iso-8859-1 |
Accept-Encoding |
可接受的内容编码,如 gzip |
Accept-Language |
接受的语言,如 Accept-Language:zh-cn |
Authorization |
客户端提供给服务端,进行权限认证的信息 |
Cookie |
携带的 cookie 信息 |
Referer |
当前文档的 URL,即从哪个链接过来的 |
Content-Type |
请求体内容类型,如 Content-Type: application/x-www-form-urlencoded |
Content-Length |
数据长度 |
Cache-Control |
缓存机制,如 Cache-Control:no-cache |
Pragma |
防止页面被缓存,和 Cache-Control:no-cache 作用一样 |
HTTP 响应报文
HTTP 响应报文主要由状态行、消息报头、空一行、响应正文 4 部分组成
如下是 fiddler 某个会话的响应报文
状态码(Status Code)
用以表示网页服务器 HTTP 响应状态的 3 位数字代码
状态码 |
描述 |
1XX |
提示信息,请求被成功接收 |
2XX |
成功,请求被成功处理 200 |
3XX |
重定向相关 304 |
4XX |
客户端错误 404 |
5XX |
服务器端错误 500 |
响应头(Response Header)
响应头 |
描述 |
Server |
HTTP 服务器的软件信息 |
Date |
响应报文的时间 |
Expires |
指定缓存过期时间 |
Set-Cookie |
设置 Cookie |
Last-Modified |
资源最后修改时间 |
Content-Type |
响应的类型和字符集,如:Content-Type: text/html; charset=utf-8 |
Content-Length |
内容长度 |
Connection |
如 Keep-Alive,表示保持 tcp 连接不关闭,不会永久保持连接,服务器可设置 |
Location |
指明重定向的位置,新的 URL 地址,如 304 的情况 |
GET 请求
格式 http://host:port/path?xx=aa