Nicole2333

导航

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响应的数据返回给应用程序。更接近真实浏览器的性能。时序图更准确,但是不能控制响应。

会话面板

 
会话面板
1.#  http request 的顺序,从1开始,按照页面加载请求的顺序递增
2.  Result   http响应的状态,可以参考这里
3.  protocol:请求使用的协议(如http,https,ftp)
4.  host 请求地址的域名
5.URL:请求的服务器路径和文件名,也包括GET参数
6. BODY: 请求的大小,以byte为单位
7.caching:请求的缓存过期时间或缓存控制 header等值
8. content-type: 请求响应的类型
9.process 发出此请求的windows进程和进程ID
10:comments:用户通过脚本或者右键菜单给此session增加的备注
11.custom: 用户可以通过脚本设置的自定义值
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码
常见的http  code:200  ok 302  move 400 bad request 401 Unauthorized 403Forbidden  404 Not Found 405Method Not Allowed 500 Internal Server Error 服务器内部错误
 
会话面板图标

监控面板

 
监控面板
statistic:
关于http请求的性能和其他数据分析,我们可以从中看出一些基本性能数据,如DNS解析的时间,建立TCP/IP连接的时间消耗等信息
 
inspectors
分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。
对于每一部分,提供了多种不同格式查看每个请求的响应的内容
JPG格式使用imageview就可以看到图片
HTML/JS/CSS使用textview 可以看到响应的内容
raw标签可以查看原始的符合http标准的请求和响应头
cookies标签可以看到请求的cookie和响应的set-cookie头信息
 
AutoResponder   调试bug
Fiddler比较重要且强大的功能之一,可用于拦截某一请求,并重定向到本地资源,或者使用Fiddler的内置响应,可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的的文件或者得到的Fiddler的内置响应。当勾选allow autoresponser并设置相应的规则后,进行使用。因此,如果要调试服务器的某个脚本文件,可以将该脚本拦截到本地,在本地修改完脚本以后,在修改服务器的内容,这样可以保证尽量在真实的环境下去调试,从而最大限度的减少bug发生的可能性。
 
Composer  构造器(设计者)  也可以做接口测试,可以修改数据,从fiddler端发起请求
Parsed输入请求的url之后,execute即可,也可以修改相应的头信息(如添加常用的accept,host,referrer,cookie,cache-control等头部)后execute
把请求信息拖到右边,可以看到具体的请求信息。点击excute可以从fiddler端发起请求代替浏览器端
可以绕过前端,去发现前端一些发现不了的bug 提高网站的健壮性,可以判断是前端的文图
比如说先登录获取session信息 然后拖住登录login请求拖到composer里,查看webform会以表单形式把用户名和密码列出来,修改密码或用户名点击execute 重新登录查看statis里的提示 可以绕过前端,比如密码输入1个字gaus
也可以用来做接口测试
Filters  相当于数据库里面的where 过滤
另一个更强大的功能,提供了多维度的过滤规则,足以满足日常开发调试的需求,Fiddler的过滤器非常强大,可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等)可以过滤请求报文大于或小于等于指定大小(byte)
intrante内网  internet外网
 
利用Fiddler设置断点进行调试修改
1.Fiddler菜单栏-rules-automatic breakpoint选择断点方式
before request 也就是发送请求之后,fiddler代理中转之前,这是可以修改请求的数据
after request 也就是服务器响应之后,在fiddler将响应中转给客户端之前,这是可以修改响应的结果
  • 统计报表
  1. 请求总数、请求包大小、响应包大小。
  2. 请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP、传输时间。
  3. HTTP状态码统计。
  4. 返回的各种类型数据的大小统计以及饼图展现。
统计报表
  • 时间轴

每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 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状态面板左侧的capturing图标开启和关闭抓包(工具栏File-capture traffic)
状态面板

控制台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)    收藏  举报