一、Fiddler简介
- Fiddler是位于客户端和服务器端的HTTP代理
- 目前最常用的http抓包工具之一
- 功能非常强大,是web调试的利器
- 监控浏览器所有的HTTP/HTTPS流量
- 查看、分析请求内容细节
- 伪造客户端请求和服务器响应
- 测试网站的性能
- 解密HTTPS的web会话
- 全局、局部断点功能
- 第三方插件
- 使用场景
- 接口调试,接口测试,线上环境调试,web性能分析
- 判断前后端bug、开发环境hosts配置、mock、弱网断网测试
二、B/S架构
- 编写程序部署到web服务器
- web服务器运行在服务器上,绑定id地址并监听某端口,接收和处理http请求
- 客户端通过http请求协议获取服务器上的网页、文档等资源
http://test.lemonban.com/ningmengban/images/logo.png
http://:协议
test.lemonban.com:域名–》主机:193.112.13.232
三、Fiddler原理
Fiddler会设置一个系统代理,当我们打开Fiddler后,会自动在浏览器中设置代理(如果是火狐浏览器,可能需要配置一下)。
四、HTTP与HTTPS
4.1、请求报文
- Hyper Text Transfer Protocol(超文本传输协议)
- 用于从万维网服务器传输超文本到本地浏览器的传送协议
- HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端数据传输格式,最初是用来向客户端传输HTML页面的内容,默认端口是80.
- http是基于请求与响应模式的、无状态的、应用层的协议。
HTTP请求报文主要由请求行、请求头部、空一行、请求正文(请求体)4部分组成
Get请求没有请求体
4.1.1、请求行
分为三部分:请求方式 同一资源定位符 HTT协议及版本号
请求方法:
请求行
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=柠檬班
4.1.2、请求头部
4.1.3、空一行
4.1.4、请求体
4.2、响应报文
HTTP响应报文主要由状态行、消息包头、空一行、响应正文4部分组成
响应体不是一定存在的,但一般都会有。
4.2.1、响应行(状态行)
三部分:HTTP协议及版本 状态码 原因描述
状态码
- 用以表示网页服务器HTTP响应状态的3位数字代码
4.2.2、响应头(消息报头)
4.2.3、空一行
4.2.4、响应体(响应正文)
五、Fiddler安装及软件介绍
5.1、安装
1、双击安装
2、同意协议
3、选择路径
4、安装完成
5.2、菜单栏及工具栏介绍
修改端口号:
加一个注释:
保存导出:
重放(重复请求攻击,按R键可以重放一次,按住shift+R可以设置重放多上次):
删除:Delete
删除除了选中的:shift + Delete
删除所有:ctrl + x
断点调试:
解码:
保存会话数量,会话会占用数量,一般不会去点:
选择你要监听的程序:
查找(Ctrl + f):
截图:
清除IE缓存:
文本的编码解码:
这里可以看到我们的主机ip:
5.3、会话列表(Session List)
- Fiddler抓取到每条http请求(每一条称为一个session)
- 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息,自定义备注等信息。
增加ip列:
运行fiddler,菜单,Rules->Customize Rules,打开“Fiddler ScriptEditor”
Ctrl+F查找“static function Main()”字符串,然后添加以下代码:
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
修改完成后退出保存
ip成功展示
5.4、命令行及状态栏
快速执行命令:
打一个help可以直接进入官网
官方帮助文档:https://docs.telerik.com/fiddler/knowledgebase/quickexec
是否让fiddler做系统代理,出现此标志,则是让:
选择线程:
断点调试:
点击一次,请求前的断电(没有发到服务器上):
点击两次,响应后的断点,所有请求返回停到fiddler这里,还没有发送给客户端,我们可以点go可以让他发送到客户端:
5.5、Statistics(统计)
- HTTP请求的性能和其他数据分析,如DNS解析的时间,建立TCP/IP连接的时间消耗等信息
5.6、Inspectors(检查器)
- Inspectors意思是检查器
- 可以多种方式查看请求的请求报文和响应报文相关信息
5.7、AutoResponder(自动响应器)
- AutoRsponder可用于拦截某一请求,进行如下操作:
- 重定向到本地的资源
- 使用Fiddler的内置响应
- 自定义响应
我们也可以通过修改响应体来进行测试,比如正常返回一个集合渲染页面,我们可以假设让集合为空进行测试。
5.8、Composer(设计器 )
- 简单的接口测试工具
5.9、Filters(过滤器)
如果在抓包的时候发现自己老是抓不到包,可以检查一下是不是自己过滤器的问题。
5.10、断点
全局断点:
请求前断点:还未发到服务器,可以修改请求参数。
响应后断电:已经从服务器返回过来,还没有回馈个客户端,也可以进行篡改数据
局部断点:
通过命令进行断点
请求前断点:bpu
bpu login // 给url包含login的进行断点
再次输入bpu回车,取消断点
响应后的断断点:bpafeter
bpafeter login
5.11、弱网测试
我们也可以自己修改延迟时间
ctrl+f搜索m_SimulateModem
修改之后重启fiddler,重启后要选中开启它
5.12、HTTPS抓包
- 点击Tools > Options > Https
- 勾选Decrypt HTTPS Traffic
如果选中了之后抓取不到,重置他的证书
删除之后,重新选中
安装证书
打开它查看证书是否下载完成
学习链接:https://www.bilibili.com/video/BV1c4411c7zH?from=search&seid=2112288711213406917