Fiddler是做什么的,能帮助我们做什么?
分析请求的数据,设置断点,调试web应用,修改请求的数据,修改服务器返回的数据
1、能够监听http/httpS的流量,可以截获从浏览器或者客户端软件向服务器发送的http/https请求;
2、对截获之后的请求,我们还能够查看请求中的内容;
3、伪造请求。不仅可以伪造客户端的请求,还能够伪造服务器的响应。——该功能能够方便我们进行前后端的调式。
4、测试网站的性能;
5、解密https的外部会话。因为https本身是一种加密的协议,通过fiddle我们可以进行解密操作;
6、提供第三方扩展插件,满足更多需求。
工作原理
需要经过fiddler的代理服务器代为转发请求与响应。
控制面板:
(1)命令行工具:执行一些快捷操作。
常见的命令有:
• help 打开官方的使用页面介绍,所有的命令都会列出来
• cls 清屏 (Ctrl+x 也可以清屏)
• select 选择会话的命令
• ?.png 用来选择png后缀的图片
• bpu 截获request
(2)状态栏:
Capturing:开启/关闭 fiddler的监听;
Web Browsers:过滤会话选择;
Web Session面板详细的字段含义如下图所示
#栏图标说明
工具栏
(1)气泡:备注。添加之后在会话栏的Comment列中显示备注内容。
(2)Replay:回放【常用】。重播一个会话。快捷键:”选中会话+R”
(3)清除会话面板:过滤请求、清除请求。
(4)Go:断点调式。配合状态栏上的断点工具。功能类似Debug。
详细使用Fiddler设置断点,参考:
https://blog.csdn.net/qq_37515374/article/details/128596659
(5)Stream:代理模式。默认:缓冲模式。点击进行切换。
(6)Decode:解压请求。解压http请求里面的东西,帮助查看。
(7)Keep:指示fiddler的保持会话数目。
(8)Any Process:捕获请求,只看需要的请求。将“靶心”投向需要的请求。
(9)Find:查找请求。用颜色标注查找的请求。
(10)Save:保存会话。
(11)截图:默认5秒后截图。
(12)计时器:第一次点击-开始计时;第二次点击–返回计时结果;第三次点击-清零,重新计时。右键点击—不计时。
(13)Browse:启动浏览器;
(14)Clear Cache:清空缓存;
(15)TextWizard:【常用】编码、解码文本内容;
(16)Tearoff:浮窗。
1详情和数据统计板
(1)、inspector(检测器)-对抓到的请求进行解包
提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。
a、ImageView标签
JPG 格式使用 ImageView 就可以看到图片,选择一条Content-Type是image/jpeg的回话,点击TextView
b、TextView 标签
HTML/JS/CSS 使用 TextView 可以看到响应的内容。选择一条Content-Type是text/html的回话,点击TextView
c、Raw标签
Raw标签可以查看响应报文和响应正文,但是不包含请求报文
d、Auth标签
Auth则可以查看授权Proxy-Authorization 和 Authorization的相关信息
e、Cookies标签
Cookies标签可以看到请求的cookie和响应的set-cookie头信息。
(2)、AutoResponder—自动相应器
Fiddler比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。当勾选allow autoresponser 并设置相应的规则后(本例中的规则是将http://blog.csdn.net/aaa的请求拦截到本地的文件http://localhost:54321/WebForm1.aspx),如下图所示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6ee3810fb415c5eae67ff29d790eede6.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ab0f3f7731e3eb9aace6f4d87ab93e30.png)
例如,将一个需要服务端返回的文件,使用本地文件做代理。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e4bd4c815ef1dd1021428fb0bde2845.png)
例子:
一、说明
1、Enable rules:启用规则
2、Accept all CONNECTs:接受所有链接
3、 Unmatched requests passthrough:非拦截的请求自动放行
4、 Enable Latency:延迟
二、更改图片规则,将百度logo换成其他图片
第一步:清空网络报文,工具栏>>X>>Remove all
第二步:使用谷歌浏览器打开网页捉取百度主页面的图片
如果fiddler里面没看到图片这些小图标,清空缓存,再刷新网页
第三步:Fiddler右侧>>AutoResponder
将Enable rules、Accept all CONNECTs、Unmaatched requests pass through、Enable Latency全部勾上
第四步:将图片的URL拉到右下侧“If request matches…“下面
第五步:先克隆Clone一个相同的内容出来
第六步:然后将第一条更改规则,更改D盘上的一张图片,并点击Save
第七步:清空浏览器缓存,并再次刷新
三、恢复正常显示
1、取消勾上Enable rules,页面回复正常
2、或者将之前克隆下来的移到上面,并点击save,再次刷新,就正常了
四、重定向URL
操作步骤同上,编辑框修改相应的跳转地址
(3)、Statistics–数据统计面板。性能分析。
RTT:【主要关注】体现一个请求从发送到返回响应的时间。
通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行访问速度优化。
(4)、Composer:–前后端接口连调,伪造请求【常用】
前后端接口连调,伪造请求【常用】。实现不写任何js代码的情况下实现与服务端的接口调式。
前后端接口连调——Composer
选中一个接口——>拖拽到Composer面板;
准备工作:
接口请求方式、请求参数;
Get请求:参数直接写在接口里面
Post请求:参数写在Request Body里面。
同时,我们还能够伪造Request Header中的Cookie。
(5)、Filters–过滤器
Filter标签则可以设置Fiddler的过滤规则,来达到过滤http请求的目的。最简单如:过滤内网http请求而只抓取internet的http请求,或则过滤相应域名的http请求。Fiddler的过滤器非常强大,可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等),可以过滤请求报文大于或则小于指定大小(byte)的请求
(6)Timeline: 性能分析。对选择多个请求有意义。作用类似HttpWatch.
(7)网络限速FiddlerScript——测试在不同网络下的请求运行状况
原理:将请求代码化。
OnBeforeRequest()表示在发送一个请求时需要做什么。
例如:
添加代码:
oSession[“resquest-trickle-delay”]=”3000”;//表示延时3秒请求;
oSession[“response-trickle-delay”]=”3000”;//表示延时3秒响应;
缺点:需要编写C#代码。
解决方案:使用图形化插件;
2 捕获IOS/Android移动设备上的请求
1)首先设置fiddler。菜单栏Tools—》Fiddler Options。
2)让你的电脑与移动设备处于同一个WiFi连接状态(不要使用VPN),然后命令行ipconfig查看本机IP。
3)使用你的移动设备在浏览器上访问本机IP加“端口号”。例如:192.168.1.28:8888,然后会出现一个Fiddler的证书,安装该证书。
3 Fiddler来模拟弱网情况
- 首先对Fiddler 工具处进行设置(该步主要是对于网络的延迟进行模拟,可以选择性),如图所示:
打开后,如图所示:
解析:如果m_SimulateModem为True,也就是fiddler开启了弱网模式,那么上传1KB的内容 需要300ms(转化后的上传速度为1KB/0.3s=3.3KB/s),下载1KB内容需要150ms(转化后的下载速度为1KB/0.15s=6.6KB/s)。
如果要模拟2G网络, 上传下载配置如下:
oSession[“request-trickle-delay”] = “3000”;
oSession[“response-trickle-delay”] = “1500”;
如果要模拟3G网络,上传下载配置如下:
oSession[“request-trickle-delay”] = “20” ;
oSession[“response-trickle-delay”] = “10”;
手机APP使用SIM卡数据流量的话,要考虑不同的运营商:联通、移动、电信,根据上行速率、下载速率来设置参数。
计算公式为:[1/(上或下行速率/8)] x 1000
注意:1KB=8kb
2.Fiddler 工具模拟弱网情况
打开Fiddler工具,进入到Rules ---- > Performance---->Simulate Modem Speeds ,如图所示:
备注:
一般浏览器开发者工具(推荐Chrome)自带模拟弱网的功能。
浏览器打开开发者工具(快捷键F12);选择Network栏,根据需求选择网络状态,比如在线、3G、2G、离线等。
弱网测试关注点
弱网测试主要关注网络状况不好时,应用的响应时间、页面呈现、超时提示、超时重连等等。我们测试过程中尤其要注意数据提交的问题,一般前端会进行超时限制,超出多少秒抛出异常提示,此时数据是不应该提交成功的。我之前测试过的软件就出现过,弱网时,数据可以多次提交成功的情况。
4 fiddler导出jmeter插件的安装
1 将插件文件JmeterExport.dll拷贝到路径:C:\Program Files (x86)\Fiddler2\ImportExport下
2 点击【file】-【Export Sessions】-【All Sessions…】
选中【Jmeter Script】后点击【Next】进入文件另存为界面
前提条件:
1、已设置Fiddler的代理端口
Tools –> Options-> Connections,设置代理端口:8888, 勾选 Allow remote computers to connect,即允许远程计算机连接Fiddler,
注:8888为默认端口号,可修改,但需注意两点,一是本机空闲端口,二是手机代理设置时要与fiddler的端口一致。
2、已设置解密HTTPS的网络数据
Tools –> Options-> Https,勾选"Decrypt HTTPS traffic"、"Ignore server certificate errors。
3、 手机与电脑在同一局域网下
已勾选“显示高级选项”-> 代理 选择“手动” ->输入服务器主机名和服务器端口 ->IP选择“DHCP”->连接,即完成手机端设置代理操作,如下图所示:
注:服务器主机名:Fiddler所在电脑IP(即开启wifi后,在fiddler或cmd中看到的无线网卡IP地址)
服务器端口: Fiddler使用的端口(即Options-> Connections中设置的端口号)
4、手机已下载并安装Fiddler证书
把WiFi设置为手动代理后,手机打开浏览器输入代理IP+端口号(即电脑的IP,也是手机设置代理时所设置的服务器主机名,这里的ip+端口号为192.168.XXX.XXX:8888),在手机浏览器中输入192.168.XXX.XXX:8888,进入fiddler echo service页面,下载Fiddler的证书,点击FiddlerRoot certificate,下载成功后安装,每个手机的安装步骤有所不同,请自行百度。
至此
大部分解决方案都会说:设置完上面步骤后,即表明已设置完毕,此时用手机访问应用,就可以看到fiddler抓取到的数据包了