fiddler

目录:修改请求数据、修改响应数据,模拟响应
工具基础介绍
Fiddler能够记录客户端和服务器之间的所有http请求,可以针对特定的http请求,分析请求数据,设置断点,调试web应用,修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。
设置fiddler为本地浏览器代理(貌似启动fiddler就自动设置为代理了?在局域网-->高级里面看到 ip 和 端口 为127.0.0.1/8888)
浏览器“设置”-->“高级”-->“打开代理设置”-->如下图(点“局域网设置”)设置ip和端口号如下

未将上述设置还原,关闭fiddler后网页无法访问,显示未连接到网络
解决办法:1.重启fiddler后恢复正常
2.去掉设置的代理后再关闭fiddler

工作原理

Fiddler是以代理WEB服务器的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。
手动设置fiddler代理方法如下

主界面

Fiddler的主界面分为 工具面板、会话面板、监控面板、状态面板
1. File菜单
启动和停止web流量的捕获(capture),也可以加载或存储捕获的流量。

(1)Capture Traffic是个开关,可以控制是否把Fiddler注册为系统代理。当把Fiddler注册为系统代理时,所有依赖于WinINET代理的应用(如IE浏览器和其他浏览器)会把Web请求发送给Fiddler.
(2)New Viewer是用来打开一个新的fiddler窗口
(3)Load Archive用于重新加载之前捕获的以SAZ文件格式保存的流量。
(4)Save子菜单中的选项支持以多种方式把流量保存到文件中;该菜单选项和Web Session列表中的上下文菜单中的选项相同。
(5)Import Sessions...支持导入从其他工具捕获的流量,也支持导入以其他格式存储的流量。
(6)Export Sessions...支持把Fiddler捕捉到的Session以多种文件格式保存
(7)Exit菜单命令会取消把Fiddler注册为系统代理,并关闭工具栏
2. Edit菜单
Edit菜单中的绝大多数命令都需要作用于Web Session中当前选中的Session,因此除非选中一个或多个Session,否则大多数命令都不可用。

(1)Copy下面的几个子菜单分别支持复制选中Session的某些信息。
(2)Remove下面的子菜单分别支持从Web Session列表中删除全部、选择或未选中的Session
(3)Select All命令选择Sessions列表的所有内容。
(4)Paste as Session命令会基于剪贴板上的内容,生成一个或多个模拟的Web Session.
(5)Mark子菜单支持选择一种颜色来标记Web Session列表中选中的Session.
(6)Unlock for Editing 菜单命令会对某个选中的Web Session解锁,支持使用Inspectors编辑Session的所有请求和响应。
(7)Find Session...命令会打开Find Session窗口,搜索捕获到的数据流。
3.Rules菜单

(1)Hide Image Request触发器控制是否在Web Session列表中显示图像类Session.
(2)Hide CONNECTS触发器控制是否在Web Session列表中显示使用CONNECT请求方法的Session.
(3)Automatic Breakpoints子菜单控制Fiddler是否会自动在Before Requests或After Responses处设置断点。Ignore Image触发器控制这些断电是否作用于图片请求
(4)Customize Rules...菜单命令会使用配置的脚本编辑器打开当前的FiddlerScript文件
(5)如果选中Require Proxy Authentication菜单项,所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应,要求客户端安装证书
该规则可以用于测试HTTP客户端,确保这些规则在有证书的客户端服务器上可以正常工作。
(6)如果选中Apply GZIP Encoding菜单项,只要请求包含具有gzip标识的Accept-Encoding请求头,就会对除了图片以外的所有响应使用GZIP HTTP进行压缩。
该规则用于测试使用GZIP选项支持的客户端是否真正对内容进行压缩。该选项还支持性能调优,并且计算传输的压缩后的数据流的字节数。
(7)如果选中Remove All Encoding,会删除所有请求和响应的HTTP内容编码和传输编码
(8)Hide 304s选项会隐藏包含HTTP/304 Not Modified状态的响应的所有Session.
(9)Request Japanese Content选项会把所有请求的Accept-Encoding请求头设置或替换为ja 标识,表示客户端希望响应以日语形式发送
(10)User-Agents子菜单支持把所有请求的User-Agent请求头设置或替换成指定值。
(11)performance子菜单提供影响Web性能的简单选项
4.Tools菜单

(1)Fiddler Options...打开Fiddler Options窗口
(2)WinINET Options...打开IE的Internet Options窗口
(3)Clear WinINET Cache选项会清空IE和其他应用中所使用的WinINET缓存中的所有文件
(4)Clear WinINET Cookies选项会清空IE和其他应用中所发送的WinINET Cookie.
Session的Cookies还是保持不变
(5)TextWizard...选项会启动TextWizard窗口,支持对文本进行编码和解码
(6)Compare Session选项只有当选中Web Session列表中的两个Session时才有效。
(7)Reset Script
(8)Sandbox,打开http://webdbg.com/sandbox/
(9)View IE Cache
(10)HOSTS...选项会打开Fiddler的Host Remapping工具
(11)New Session Clipboard..打开一个Session的剪贴板
5.View菜单

(1)Show Toolbar控制Fiddler工具栏是否可见
(2)Default Layout、Stacked Layout、Wide Layout三种界面布局
(3)Minimize to Tray或按下CTRL+M可以最小化Fiddler到系统托盘中
(4)Squish Session List控制Web Session列表是否水平收缩
(5)AutoScroll Session list选项控制当添加新的Session时,Fiddler是否会自动滚动到Session列表的底部
6.Help菜单

工具面板

说明注释、重新请求、删除会话、继续执行、流模式/缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除IE缓存、编码/解码工具、弹出控制监控面板、MSDN、帮助
两种模式
- 缓冲模式(Buffering Mode)Fiddler直到HTTP响应完成时才将数据返回给应用程序。可以控制响应,修改响应数据。但是时序图有时候会出现异常
- 流模式(Streaming Mode)Fiddler会即时将HTTP响应的数据返回给应用程序。更接近真实浏览器的性能。时序图更准确,但是不能控制响应。
会话面板


监控面板

- 统计报表
- 请求总数、请求包大小、响应包大小。
- 请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP、传输时间。
- HTTP状态码统计。
- 返回的各种类型数据的大小统计以及饼图展现。

- 时间轴
每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴,用图表的形式展现出来,就形成了瀑布图。在Fiddler中,只要在左侧选中一些请求,右侧选择Timeline标签,就可以看到这些请求的瀑布图

-
绿色的请求表示这是一个“有条件的请求”。HTTP 协议定义了 5 个条件请求头部,最常见的两个是“If-Modified-Since”和“If-None-Match”。服务器根据这两个头部来验证本地缓存是否过期,如果过期则正常返回资源的最新版本;否则仅返回 304 Not Modified,浏览器继续使用本地缓存。包含条件请求头部的请求用绿色显示,否则用黑色。
-
有阴影线的请求是缓冲模式下的请求,实心的是流模式下的请求。Fiddler 提供了缓冲(Buffering)和流(Streaming)两种抓包模式:缓冲模式下,Fiddler 会在响应完成时才将数据返回给应用程序(通常是浏览器),这种模式下可以控制响应,方便地修改响应内容;流模式下,Fiddler 会实时返回响应数据给浏览器,但没办法控制响应。一般使用流模式,瀑布图会更真实一些。这两种模式可以通过 Fiddler 的工具栏选择。特别的,通过 Fiddler 的“AutoResponder”功能返回的响应,只能是缓冲模式。
-
请求条的不同颜色对应着不同类型的响应,根据响应头的 MIME Type 来归类。如浅绿色表示图片类型的响应;深绿色是 JavaScript;紫色是 CSS;其它都是蓝色。
-
请求中的黑色竖线,表示的是浏览器收到服务端响应的第一个字节这一时刻。这个时间受 DNS 解析、建立连接、发送请求、等待服务端响应等步骤的影响。
-
请求条后面的图标表示响应的某些特征。如软盘图标表示这个响应正文从本地获得,也就是说服务端返回了 304;闪电表示这是 Fiddler 的“AutoResponder”的响应;向下的箭头表示响应是 302,需要重定向;红色感叹号说明这个请求有错误发生(状态码是 4XX 或 5XX)。特别的,如果请求条后面有一个红色的X,说明服务端响应完这个请求之后,断开了连接。出现这种情况一般有两种可能:HTTP/1.0 的响应中没有 Connection: Keep-Alive;或者是 HTTP/1.1 的响应中包含了 Connection: close。使用持久连接可以省去建立连接的开销,也可以减小 TCP 慢启动和其它拥塞控制机制带来的影响,总之是好处多多。
-
请求前面的红色圆圈表示这个连接是新建的,绿色表示是复用的。上面的圆圈表示的是浏览器到 Fiddler 的连接,下面的圆圈是 Fiddler 到服务端的连接。
状态面板

控制台Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。
常见得命令有:
| 命令 | 解释 |
|---|---|
| help | 打开官方的使用页面介绍,所有的命令都会列出来 |
| cls | 清屏 (Ctrl+x 也可以清屏) |
| select | 选择会话的命令 |
| ?.png | 用来选择png后缀的图片 |
| bpu | 截获request |
| bpafter | 截获response |
常见用法
- 设置断点,修改请求或者返回的数据
fiddler有3种方式设置断点
1在菜单栏Rules-》Automatic BreakPoints的下拉菜单里选择设置断点的方式(Before Requests,After Responses),取消断点选择Disabled。

2点击左下方空白处
变成 
菜单栏也发生变化 ,对应点两下after前面出现小点

这2种设断点的方式是对所有url生效。
3用bpu命令对特定url设置断点,这种方式断点设在Before Requests。取消断点时只需要再执行bpu命令即可。
执行如下命令(如下图):
以百度为例:bpu https://www.baidu.com/

用bpu命令设置断点并修改请求
案例一:以百度首页为例修改Requests之前的数据
在Fiddler命令行输入区输入“bpu”回车执行清掉原有的断点。
在浏览器打开https://www.baidu.com/首页
在命令行输入“bpu https://www.baidu.com/”回车执行,接下来就会中断URL中包含此地址的请求。
在百度输入框输入”fiddler”or其他任何你想查询的东西,点击查询,页面不会有响应,因为被中断了。
点击会话列表中被中断的会话,依次进入Inspectors–>WebForms。此时请求并未发出,wd参数即为查询关键字,我们修改为“shabi”,然后点击run to completion(请求到达浏览器)。


由此可见,我们的断点已经设置成功,并且成功修改了HTTP的请求数据。
通过命令“bpafter 服务器地址” 修改响应数据
我们也用一个实例来验证通过设置断点修改响应数据。以百度主页为例,我们拦截到响应数据中的title值为”百度一下,你就知道“,我们将响应数据中的title改成”test百度一下,你就知道“,然后在前端看看最终展示的是什么数据。



查看接口请求方式

查看请求数据、响应数据(下图请求内容改成请求数据)

查看header、cookie

添加筛选

posted on 2019-04-17 11:04 Nicole2333 阅读(397) 评论(0) 收藏 举报
浙公网安备 33010602011771号