Fiddler 教程
Fiddler 教程
Fiddler 工作原理
- 客户端向服务器发送HTTP请求时,请求会先经过代理Fiddler代理服务器
- Fiddler代理服务器截取客户端的请求报文,在转发给服务器,转发之前可以做一些请求报文参数修改的操作
- 服务器处理完请求以后返回响应报文,Fiddler代理服务器会截取服务器的响应报文
- Fiddler处理完响应报文后在返回给客户端
Fiddler的原理简单点说就是通过改写HTTP代理然后让网络数据从Fiddler这边通过,这样子来监控并且截取到网络信息数据。当你打开Fiddler的时候,就已经设置好了浏览器的代理了。当你关闭的时候,它会自动的帮你把代理还原。
-
在你安装好Fiddler之后启动,并可以打开菜单栏中的Tools -> options -> Connections,如下图所示:
-
从上图可以看到:有一句Act as system proxy on startup意思就是(在启动时充当系统代理),并且默认监听端口设置为了8888。Fiddler就是一个中间的proxy(代理服务器),如下图所示:
- 查看自己电脑系统是否在启动Fiddler后,开启了代理,如下图所示:

- 当正常退出Fiddler的时候,再次查看系统手动设置代理选项就会被清空并关闭,如下图所示:

Fiddler界面导航
参考网站:《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(3)-再识Fiddler让你感性认识一下 (qq.com)
常用操作
HTTPS抓包配置
Fiddler默认只能抓取http请求,如果需要抓取https请求需要进行配置。
配置
1、 Tools--->Options--->HTTPS,勾选CaptureHTTPS CONNECTs、Decrypt HTTPS traffic 、ignore server certificate errors(unsafe),点击OK,会弹出证书直接确认即可。重启Fiddler后生效
2、若没有弹出提示,勾选Actions -> Trust Root Certificate如果要监听的程序访问的HTTPS站点使用的是不可信的证书,把下面的Ignore server certificate errors勾选上
证书安装
查看证书
移动端抓包配置
1、 Fiddler监听端口默认是 8888,你可以把它设置成任何你想要的端口勾选Allow remote computers to connect,允许远程设备连接;为了减少干扰,可以去掉Act as system proxy on startup
2、 先查看电脑的 IP 地址,确保手机和电脑在同一个局域网内
3、 Android手机上的配置
将 Fiddler 代理服务器的证书导到手机上才能抓这些 APP 的包导入的过程。
-
打开手机浏览器
-
在地址栏中输入代理服务器的 IP 和端口(即电脑的IP加Fiddler的端口),会看到一个Fiddler 提供的页面,然后确定安装就好了
4、
- 打开 WiFi 设置页面,选择要连接的 wifi ,并且长按
- 在弹出的对话框中,选择“修改网络”在接下来弹出的对话框中,勾选“显示高级选项”。
- 在接下来显示的页面中,点击“代理”
- 选择“手动”代理服务器主机名设为 PC 的 IP ,代理服务器端口设为 Fiddler 上配置的端口 8888,点”保存”
IOS额外配置
假如手机是ios10.0以上系统,需要在手机系统设置---关于手机----证书信任设置,在此页面把证书开启即可
切换抓包客户端
弱网
配置弱网
启动
设置完之后,重启Fiddler,再勾选Rules -> Performances -> Simulate Modem Speeds(注意停掉PC与手机上面上网的应用;把PC与手机上面上网的进程杀掉,如果上网的应用太多了,那网速肯定也会受到影响,这样出来的报告,就会不准确)
查看耗时
点击抓包数据中的一条记录,在右侧的Statistics中就会显示当前界面相应数据Bytes Sent 是指发送的请求数,Bytes Received:返回的数据量,Overall Elapsed:总耗时
过滤
配置过滤规则
三种过滤方式:
域名过滤
只显示特定域名的记录,最后点击右上角Actions -> Run Filterset now应用
类型过滤
一般对各种图片、CSS、JS这类的静态素材也不需要看的情况下,直接全部过滤掉
REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav)(\?.*)?$
返回状态码过滤
比如只想显示200的状态,其他的不显示
启动过滤
默认情况下,这个页面是灰色的,代表默认不过滤任何请求,现在我们勾选 Use Filters
接口测试
接口测试工具有不少,比如postman、soapui、jmeter等等,那么平时在测试的时候一般都会抓包,那么有可能开发会说帮忙再重现一下,那么又要重新造数据,太麻烦,此时就可以把这个接口保留下来,重新点下Execute即可调用。(根据实际情况可修改请求数据)
mock
使用场景
1、对象信息难构造
测试过程中经常遇到这样的场景:需要第三方接口返回特定数据,跨线沟通成本高;或者测试的接口依赖特别复杂,我们根本无法知道外部依赖到底有几层、一个接口到底依赖了几个外部接口。这些情况下,我们可以通过mock来模拟接口返回数据
2、依赖的接口尚未开发完成
比如说服务A依赖服务B,服务B依赖服务C或更多复杂的服务,而服务C或其他服务没有开发完成,导致即使A和B都没问题,也没办法完成服务A的接口测试。我们只要通过Mock伪装成服务B就解决这个问题了,不用关心B到底调用了哪些服务。
因此在测试流程受阻塞的时候,通过Mock可以绕过阻塞性问题。
操作步骤
设置断点,篡改和伪造数据
应用场景
设置断点,篡改和伪造数据,在测试中使用的也较平凡,给大家举个真实的案例:比如使用支付宝购买虚拟商品,往支付宝跳转时,篡改了小的金额,结果购买虚拟商品成功了。(原本10元的商品,0.01元就搞定了)。多么可怕的一个bug啊,当然这个问题可能对于一个做过支付有过经验的测试朋友来说,可能会想:哎呀,这个问题都发现不了,还做什么测试?是的,问题是很简单,对于一个刚入职场的测试朋友或者没有支付相关经验的测试朋友来说,很有可能会忽略。
请求流程图
请求时,可被篡改的两个点:Before Requests请求前、After Responses响应后。
配置
小栗子
以百度查看为栗子,点击"百度一下"此时请求被fiddler拦截掉,将右侧requests body里面的字段message内容前新增内容:“篡改requests数据成功!”,然后点击Run to Completion,先关闭掉拦截Rules---->Automatic Breakpoints---->Disabled,其他请求都放过,点击工具栏中的“Go”
修改电脑系统hosts
作为前端工程师现在使用绑定hosts在本地开发调试的场景也越来越多,另外,当预发环境和生产环境共用同一个域名时,通过绑定hosts的方式将访问的域名原本指向生产服务器,强制指向预发服务器上。举个例子,假如我要将www.baidu.com指向87testing.com对应的服务器上,87testing.com对应的服务器公网ip:47.94.18.31,配置如下:Tools---->Hosts---->勾选Enable remapping of requests for one host to a different host or IP,overriding DNS.然后host编辑区域,输入需要域名需要指向的服务器公网IP,比如我将www.baidu.com域名指向了47.94.18.31,保存即可。(如果不使用host,勾去掉即可)
简单并发测试
使用场景
在测试中,这样的场景也非常多,比如被测平台可以有多种货币,有可能从一种货币可以直接兑换成另一种平台货币,在兑换的时候,要多关注下两点安全:数据篡改及并发情况,数据篡改要测试扣减A货币时,篡改金额为负值或金额变少,那么兑换到B货币的数据校验,这个有点类似支付拿少的钱买多的东西,这里就不过多描述了。另外,并发情况,再比如经常会有一些活动相关的测试,假如抽奖活动,一般都有限制一个人一天只能抽一次,那么抽奖的时候同一个用户并发,会不会领取多次奖励。当然最好还是要有正规的压测,或者在测试中可以借助fiddler做一个简单的并发测试,都是很有必要的。
一个人一天只能有一次抽奖机会,那么在点击抽奖按钮发出请求之前,要设置Before Requests Breakpoints,点击抽奖后在会话列表中会看到一个被断点的请求,此时鼠标选中此请求,按shift+u,会弹出并发次数的设置,如下,设置并发次数5次(下面演示截图是发布帖子并发时的截图,可参考)
此时,取消 断点 后,点击工具栏“GO”,六个请求同时发到对应的服务端,即可形成6个并发请求,再看看发表帖子的情况如下:
小技巧
Fiddler抓取Jmeter发送的HTTP
步骤:
- 1、Fiddler设置代理端口为8888 ,图1
- 2、JMeter设置HTTP请求代理,图2
Fiddler抓取Pycharm的HTTP
背景:使用pycharm发送request请求时,使用Fidder抓取不到。
# 设置代理, 里面填写的是fiddler所在主机的IP地址; 然后把该代理参数在发请求的时候加进去;reps = requests.post(url,json=payload,proxies=proxies)
proxies ={
"http":"http://127.0.0.1:8888",
"https": "https://127.0.0.1:8888"
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端