Fiddler 学习
作者:互联网
一、Fiddler简介
Fiddler是最强大最好用的Web调试工具之一, 它能记录所有客户端和服务器的http和https请求。允许你监视、设置断点、甚至修改输入输出数据。Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展。换言之,你对HTTP 协议越了解,你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能帮助你了解HTTP协议。Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。
二、Fiddler的工作原理
Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。 当Fiddler退出的时候它会自动注销, 这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。 解决的办法是重新启动下Fiddler。
个人理解:fiddler是一个抓包工具,当浏览器访问服务器会形成一个请求,此时,fiddler就处于请求之间,当浏览器发送请求,会先经过fiddler,然后在到服务器;当服务器有返回数据给浏览器显示时,也会先经过fiddler,然后数据才到浏览器中显示,这样一个过程,fiddler就抓取到了请求和响应的整个过程。
正常退出方式:
界面:
三、Fiddler六大块详解
1. 菜单栏
File菜单
- Capture Traffic:可以控制是否把Fiddler注册为系统代理。
- New Viewer:打开一个新的fiddler窗口
- Load Archive:用于重新加载之前捕获的以SAZ文件格式保存的数据包。
- Save:支持以多种方式把数据包保存到文件中。
- Import Sessions...:支持导入从其他工具捕获的数据包,也支持导入以其他格式存储的数据包。
- Export Sessions...:把Fiddler捕捉到的回话以多种文件格式保存。
- Exit:取消把Fiddler注册为系统代理,并关闭Fiddler。
Edit菜单
- Copy:复制会话。
- Remove:删除会话。
- Select All:选择所有会话。
- Undelete:撤销删除会话。
- Paste as Session把剪贴板上的内容粘贴成一个或多个模拟的会话。
- Mark:选择一种颜色标记选中会话。
- Unlock for Editing 解锁会话。
- Find Session...打开Find Session窗口,搜索捕获到的数据包。
Rules菜单
- Hide Image Request:隐藏图片回话。
- Hide CONNECTS:隐藏连接通道回话。
- Automatic Breakpoints:自动在[请求前]或[响应后]设置断点。Ignore Image触发器控制这些断点是否作用于图片请求。
- Customize Rules...:打开Fiddler脚本编辑窗口。
- Require Proxy Authentication:,要求客户端安装证书。该规则可以用于测试HTTP客户端,确保所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应码。
- Apply GZIP Encoding:只要请求包含具有gzip标识的Accept-Encoding请求头,就会对所有响应使用GZIP HTTP进行压缩(图片请求除外)。
- Remove All Encoding:删除所有请求和响应的HTTP内容编码和传输编码
- Hide 304s:隐藏响应为HTTP/304 Not Modified状态的所有回话。
- Request Japanese Content:选项会把所有请求的Accept-Encoding请求头设置或替换为ja标识,表示客户端希望响应以日语形式发送。
- User-Agents:把所有请求的User-Agent请求头设置或替换成指定值。
- performance:模拟弱网测试速度。
Tools菜单
- Options...:打开Fiddler选项窗口。
- WinINET Options...打开IE的Internet属性窗口
- Clear WinINET Cache:清空IE和其他应用中所使用的WinINET缓存中的所有文件。4、Clear WinINET Cookies:清空IE和其他应用中所发送的WinINET Cookie
- TextWizard...:选项会启动TextWizard窗口,对文本进行编码和解码。
- Compare Session:比较回话。
- Reset Script:重置Fiddler脚本。
- Sandbox:打开http://webdbg.com/sandbox/
- View IE Cache:打开IE缓存窗口。
View菜单
- Show Toolbar:控制Fiddler工具栏是否可见
- Default Layout、Stacked Layout、Wide Layout三种界面布局
- Minimize to Tray:最小化Fiddler到系统托盘(快捷键:CTRL+M )
- Squish Session List:控制回话列表是否水平收缩。
- AutoScroll Session list:添加新的回话时,自动滚动到回话列表底部
Help菜单
2. 工具栏详解
- 备注功能
- 重新发送请求,快捷键:R键。
- 删除请求
- 当有请求前断点时,点击去发送请求。
- 流模式。(默认是缓冲模式)
- 解码
- 保持回话的数量。
- 选择你想要抓包或者监听的程序
- 查找
- 保存所有会话,文件名以.saz为扩展名
- 截图
- 计时器
- 快捷的打开IE浏览器
- 清除IE缓存
- 文本的编码解码工具
- 分离面板
- MSDN查询
- 本机的信息
3. Fiddler左侧面板(会话列表)
抓包工具面板功能
# :HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。
Result : HTTP响应的状态
Protocol:请求使用的协议(如HTTP/HTTPS)
HOST:请求地址的域名/ip
URL:请求的服务器路径和文件名,也包含GET参数
BODY:请求的大小,以byte为单位
Content-Type:请求响应的类型
Caching:请求的缓存过期时间或缓存控制header的值
Process:发出此请求的Windows进程及进程ID
Comments :用户通过脚本或者菜单给此session增加的备注
custom:用户可以通过脚本设置的自定义值
4. Fiddler右侧面板(功能页签)
Statistics页签:通过该页签,用户可以通过选择多个会话来得到这几个会话的总的信息统计,比如多个请求传输的字节数。访问页面时选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行速度性能优化。
inspectors页签:它提供headers、textview、hexview,Raw等多种方式查看一条http请求的请求和响应,它分为上下两部分:上部分为请求展示,下部分为响应展示。
AutoResponse页签:它可以抓取在线页面保存到本地进行调试,大大减少了在线调试的困难,可以让我们修改服务器端返回的数据,例如让返回都是404的数据包读取本地文件作为返回内容。
- 可设置打开某网页显示自己想要的内容,比如抓取百度链接,点击add rule,设置如下所示:
- 到百度页面刷新即可显示该图片
composer页签:支持手动构建和发送HTTP,HTTPS和FTP请求,我们还可以从回话列表中拖曳回话,把它放到composer选项卡中,当我们点击Execute按钮时则把请求发送到服务器端。
FiddlerScripts页签:打开Fiddler脚本编辑。
log页签:打印日志
Filters页签:过滤器可以对左侧的数据流列表进行过滤,我们可以标记、修改或隐藏某些特征的数据流。
Timeline页签:时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为X轴,用图表的形式展现出来,就形成了瀑布图。在左侧会话窗口点击一个或多个回话,Timeline 便会显示指定内容从服务端传输到客户端的时间。
5. Fiddler操作命令
Fiddler命令行可以输入命令操作回话列表
help 打开官方的使用页面介绍,所有的命令都会列出来。
cls 清屏 (Ctrl+x 也可以清屏)
select 选择所有相应类型的回话(如select image或select?css)。
?sometext 查找字符串并高亮显示查找到的会话。
>size 选择请求响应大小小于size字节的会话。
=status/=method/@host 查找状态、方法、主机相对应的会话
1uit 退出fiddler
bpafter?xxx 中断URL包含指定字符的全部回话响应
bps?xxx 中断HTTP响应状态为指定字符的全部回话响应。
bpv?xxx 中断指定请求方式的全部回话响应
bpm?xxx 中断指定请求方式的全部回话响应。等同于bpv?xxx
bpu?xxx: 与bpafter类似。
6. 状态栏详解
- 显示的Fiddler是否处于捕捉状态(开启/关闭状态),可以点击该区域切换。
- 显示当前捕捉哪些进程。
All Processes 捕获所有进程的请求
Web Browsers 捕获 Web 浏览器的请求,应该特指 IE
Non-Browser 捕获非 Web 浏览器的请求
Hide All 隐藏所有请求 - 显示当前断点设置状态,通过鼠标点击切换。有三种:
不设置断点
所有请求在断点处被暂停
所有响应在断点处被暂停 - 显示当前共捕获了多少回话(如:300,表示共捕获了300个会话,如:10/300,表示当前选择10个会话,共捕获300个会话)。
- 第五区块,描述当前状态。
如果是刚打开Fiddler,会显示什么时间加载了CustomRules.js;如果选择了一个会话,会显示该会话的URL;如果在命令行输入一个命令,就会显示命令相关信息。
四、Fiddler弱网测试
Fiddler应用-弱网测试
-
Rules->Customize Rules打开Fiddle脚本编辑器(第二种也可以点击页签:FiddlerScript)。找到如下代码:
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded. 上行每发送1KB延迟300ms
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded. 下行每接收1KB延迟150ms
oSession["response-trickle-delay"] = "150";
}
1kByte/s=8kbit/s(一般简写为1kB/s=8kb/s)。
上传带宽=(1 * 8/1000) /0.300 ≈ 0.027Mbps
下载带宽=(1 * 8/1000) /0.150 ≈ 0.053Mbps
修改其中的300ms和150ms用于设置上行和下行的延迟速度。并重启Fiddler使设置生效。
比如你要模拟上传速度100KBps的网络,那上传延迟就是1KB/100KBps=0.01s=10ms,就改成10。
网络取值的算法就是 1000/速度 = 需要delay的时间(毫秒),比如50kb/s 需要delay200毫秒来接收数据。 -
Rules->Performance->勾上Simulate Modem Speeds开启模拟调制解调器速度。
-
通过http://www.speedtest.cn/在线测试网速,看是否生效。访问浏览器查看加载速度。
五、Fiddler抓取移动端抓包
- Fiddler设置:菜单栏中选择tools->option,做如下两个设置:
- 确保防火墙允许Fiddler进程可以远程连接
-
重启Fiddler
-
保持android(安卓设备)手机和电脑在同一网段
-
查看电脑ip,使用"ipconfig"查看
-
打开android手机的“设置”->“WLAN”,找到你要连接的无线网络并点击,弹出网络设置对话框,在“代理”处选择“手动”,在“主机名”输入框后面输入查看的主机ip,在“端口”输入框后面输入8888,然后点击“保存”按钮
-
在浏览器输入:主机ip:8888,下载所需证书并安装
-
启动android设备中的浏览器访问百度首页或打开被测App,在fiddler中可以看到抓取到的数据报文了。
- 测试完后需要把代理设置关闭,否则会影响上网功能
标签:Fiddler,HTTP,请求,会话,学习,响应,回话 来源: https://www.cnblogs.com/waitCode/p/15983390.html