Fiddler 抓包
为什么要抓包:(1)发现了一个bug,提交前端或后端,开发不认账?(2)要做接口测试,还没有来得写接口文档 (3)想看看竟品的接口?
抓包看下接口响应时长,是不是后台出现性能问题* 需要测试弱网环境下App的体验?抓包工具可设置流量限制,可设置接口堵塞* 想改变某接口的响应报文?想多次重发某一请求,但App业务流程有限制?可以试试抓包工具提供的功能
工具:Fiddler, Charles, 浏览器开发工具(F12)
原理
相当于中间代理服务器,记录客户端和服务器的http请求(只能抓http 和https),允许你监视,设置断点,甚至修改输入输出。基于.net。
![](https://img-blog.csdnimg.cn/20200322172253789.png)
web 端抓包
![](https://i-blog.csdnimg.cn/blog_migrate/ce6b233fda95b80a3c3a66857b239560.png)
1s=1000ms
-
inspectors里面看请求信息和响应结果:关注Headers里面的cookies 和content type
- 请求
- 请求
web版配置
→ PC端Https证书设置
→ 连接设置 ( allow remote computer → 用于app端抓包)
![](https://i-blog.csdnimg.cn/blog_migrate/3d66161ca5977f139c7c3f27692f243f.png)
App端抓包
参考凡猫赵老师的讲解视频:
Android配置Fiddler证书
Android 模拟器配置代理
Fiddler 设置断点(修改请求内容或响应结果)
也可以是mock数据,就是自己造一个数据,fiddler拦截原本发送的数据,换成自己编辑的
-
WHY?
比如一个购买的金额输入框,输入框前端做了限制10-100,那么我们测试的时候,需要测试小于10的情况下。很显然前端只能输入大于10的。这是我们可以先抓到接口,修改请求参数,直接绕过前端,传一个小于10的数,检查服务端的功能是否OK;
也就是说接口测试其实是不需要管前端的,主要测后端的功能。 -
Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等
也可以修改请求数据,突破表单限制,提交任意数字,如充值最大100,可以修改成10000
还可以拦截响应数据,修改响应体,如修改服务端返回的页面数据 -
断点的两种方式
- before response:这个是打在request请求的时候,未到达服务器之前
- after response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前。
-
全局和局部
- 全局:在菜单栏Rules-》Automatic BreakPoints的下拉菜单里选择设置断点的方式(Before Requests,After Responses),取消断点选择Disabled。这种设断点的方式是对所有url生效。
- 单个断点:已经知道了某个接口的请求地址,这时候只需要针对这一条请求打断点调试,在命令行中输入指令就可以了
- 请求前断点(before response): bpu url 回车
- 取消断点,在命令行输入: bpu 回车就可以了
- 响应后断点(after requests): bpafter url 回车
- 取消断点,在命令行输入: bpafter 回车就可以了
-
命令行其它相关指令
Bpafter, Bps, bpv, bpm, bpu
Bpafter xxx: 中断 URL 包含指定字符的全部 session 响应
Bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应
Bpv xxx: 中断指定请求方式的全部 session 响应
Bpm xxx: 中断指定请求方式的全部 session 响应 、、同于 bpv xxx
Bpu xxx:与bpafter类似 -
会话保存:为什么要保存会话呢?举个很简单的场景,你在上海测试某个功能接口的时候,发现了一个BUG,而开发这个接口的开发人员是w外地的开发,如果我们截图,就不是很方便。如果我们保留会话就会很方便的。
- 抓到登录的请求会话
- 点左上角File>Save>SelectedSessions>asText,保存到电脑上就是文本格式的
Fiddler过滤指定域名
1、方法一:
切换到fiddler右侧窗口的Filters选项卡,勾选顶部的“Use Filters”,找到Hosts区域,设置以下三个选项
- 第一项有三个选项,不做更改:
“No zone filter”
“Show Only Intranet Hosts”
“Show Only Internet Hosts” - 第二个选项是只监控以下网址,如只监控百度,在下面的输入框里填上 www.baidu.com
“No Host Filter”不设置hosts过滤
“Hide The Following Hosts”隐藏过滤到的域名
“Show Only The Following Hosts”只显示过滤到的域名
“Flag The Following Hosts”标记过滤到的域名 - 文本框内输入需要过滤的域名,多个域名使用”;“分号分割。fiddler默认会检查http头中设置的host,强制显示http地址中的域名
2、方法二
- 切换到fiddler右侧窗口的Filters选项卡,勾选顶部的“Use Filters”,根据需要找到request headers或者response headers区域
- 勾选”set request header”,文本框分别输入”Host”和”要过滤的域名”
Fiddler 模拟弱网测试
-
在fiddlerScript,找300(默认是300):这个值越大越慢
-
保存之后,还要设置使用,这三个都选上
弱网测试 - chrome的F12
可以限制网速,或者自定义
做弱网测试的时候,可以选择 【disable cache 禁用缓存】,因为如果客户端缓存了,测不出效果