Fiddler 初学者工具使用

一、概述

Fiddler是一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求,支持监视、设置断点、甚至修改输入输出数据等功能。fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。

二、Fiddler工作原理

Fiddler是位于客户端和服务器端之间的HTTP代理, 它能够记录客户端和服务器之间的所有 HTTP(S)请求,可以针对特定的HTTP(S)请求,分析网络传输的数据,还可以设置断点、修改请求的数据和服务器返回的数据。
Fiddler在浏览器与服务器之间建立一个代理服务器,Fiddler工作于七层中的应用层,能够捕获通过的HTTP(S)请求。Fiddler启动后会自动将代理服务器设置成本机,默认端口为8888。Fiddler不仅能记录PC上浏览器的网络请求数据,还可以记录同一网络中的其他设备的HTTP(S)请求数据。数据传递流程大致如下:
在这里插入图片描述

  1. 客户端像WEB服务器发送HTTP(S)请求时,请求会先经过代理Fiddler代理服务器。
  2. Fiddler代理服务器截取客户端的请求报文,再转发到WEB服务器,转发之前可以做一些请求报文参数修改的操作。
  3. WEB服务器处理完请求以后返回响应报文,Fiddler代理服务器会截取WEB服务器的响应报文。
  4. Fiddler处理完响应报文后再返回给客户端。

三、下载安装与配置

1.可以到官网下载Fiddler免费安装包:点击下载
2.下载安装Fiddler后,安装插件FiddlerCertmaker。
3.Fiddler基本配置
如果只是需要监听本机浏览器HTTP数据包的话不需要做任何额外配置,打开Fiddler即可直接使用。一般我们需要监听远程终端设备的网络请求,需要做以下配置。打开Fiddler,在菜单栏中选择Tools->Options->Connections。输入监听端口(默认是8888),选择Allow remotecomputers to connect,点击确认然后重启Fiddler。
在这里插入图片描述

四、手机连接代理

1.http请求
打开手机网络设置,选择跟Fiddler主机在统一网络,打开wifi设置界面,进入wifi的高级设置(不同手机设置不一样,有一些手机长按选中的wifi名称可以出来,有一些手机是点击wifi名称后面的按钮,自己尝试)。Fiddler本身就是代理服务器,在wifi高级设置中的代理栏下面选择手动设置,设置输入Fiddler主机的IP地址(上一步显示的IP)和监听端口号(前面默认8888那个),点击确认。

在这里插入图片描述
这些配置按成以后,你在APP中进行有网络请求的操作,即可在Fiddler中看到。
在这里插入图片描述

在右边的Inspectors窗口中可以看到这个请求的请求报文和响应报文信息。
以上配置只能监听到HTTP报文,对于HTTPS报文无法显示内容,还需要做其他配置。

2.https请求
前面也讲了,HTTPS数据报文传输的时候涉及到证书及数据加密的问题,所以Fiddler需要抓取HTTPS报文的话还需要做其他配置。
首先还是打开Fiddler配置:Tools->Options->HTTPS:
在这里插入图片描述

勾选Capture HTTPS CONNECTS和Decrypt HTTPS traffic选项,如果只是想抓取本机或者远程终端的数据报文,可以在…from all processes这个下拉框中选择。这里还有一点需要注意的就是,低版本的Fiddler自签名的CA证书有一些问题,后面导入到手机上时无效,这里就需要安装上面说的FiddlerCertMaker插件。安装后要重启Fiddler,如果安装成功在上图Certificates generated by CertEnroo engine的位置的内容就会显示安装的FiddlerCertMaker插件信息。

设置完成以后点击OK,重启Fiddler。此时在手机端操作一些有https传输的app就会发现可以看到传输的内容,但是有局限性,只有设置了信任所有证书的APP中的HTTPS报文才能查看到,这类APP是非常不安全的。如果需要抓取大部分HTTPS报文怎么办呢?

大家都知道手机系统中集成了系统认为可信的CA根证书,如果服务器的证书是这些机构颁发了,HTTPS请求时系统才认为是安全的,否则SSL握手失败(前提是APP中使用系统默认证书信任机机制)。Fiddler自签名证书肯定不在系统信任的证书列表中,那怎么办呢?我们可以在手机中把Fiddler自签名的证书导入到信任证书列表中就可以解决这个问题了。

接下来打开手机中的浏览器,在地址栏输入Fiddler监听的IP:端口,比如:192.168.1.106:8888。
在这里插入图片描述

点击页面中的FiddlerRoot Certificate,下载并安装证书(如果下载了没有自动提示安装,可进入设置->系统安全->从存储设备安装中手动安装)。

输入证书名称,这里命名fiddler,点击确认。如果安装成功在系统安全->信任的凭据->用户中可以看到刚才安装的证书(如果证书名称是乱码,可能是Fiddler生成的证书有问题,需要安装FiddlerCertMaker插件,重新操作)。
我们在手机端打开有HTTPS链接的APP发现可以抓取HTTPS中的数据报文了。
在这里插入图片描述

五、fiddler工具栏常用功能介绍

1.备注功能,选中一个会话,为当前请求增加备注
在这里插入图片描述
2.回放功能,选中一个会话,点击回放回放该会话,回放在键盘的快捷键是R键,选择一个会话点击R键可以直接回放该会话
在这里插入图片描述
3.调试debug,点击该按钮可以对debug断点进行调试,让断点继续往下走
在这里插入图片描述
3.1 添加断点如下图所示,点击底部状态下图所示位置开始增加断点
在这里插入图片描述
3.2 点击后会显示一个箭头朝上的图标,表示请求断点,箭头朝下,则是响应断点
在这里插入图片描述
4.流模式和缓冲模式切换,默认是缓冲模式,默认所有的http请求数据都返回给fiddler它才会在控制面板展示出来
在这里插入图片描述

5.解码请求
在这里插入图片描述
6.过滤请求
在这里插入图片描述
具体操作如下
在这里插入图片描述
在这里插入图片描述
7.查找功能,快捷键ctrl+F
在这里插入图片描述
在这里插入图片描述
8.计时器
在这里插入图片描述

六、命令行和状态栏

命令行在Fiddler的左下方的黑色窗口,也叫QuickExec,可以调用 Fiddler的内置命令。
这一系列内置的函数用于筛选和操作会话列表中的session(会话)。
在这里插入图片描述
通过快捷键Alt + q可以将焦点定位到命令行输入框(小黑框)中。
当焦点在命令输入框中时,快捷键Ctrl + i可以快速插入当前选中会话的 URL。

如何学习Fiddler的内置命令,看提示:type HELP to learn more,也就是直接在命令行中输入help.
会跳转到官方的帮助文档中https://docs.telerik.com/fiddler/knowledgebase/quickexec

6.1 几个常用的命令:

(1)?text命令

问号(?)后边跟一个字符串,Fiddler 将所有会话中存在该字符串的会话进行匹配,并全部高亮显示。

(2)>size 和 <size命令

大于号(>)和小于号(<)后边跟一个数值,表示高亮所有尺寸大于或小于该数值的会话。

(3)=status命令

选择响应状态等于给定状态的所有HTTP请求。

例如,选择所有状态为200的HTTP请求:=200。

(4)@host命令

选择包含指定 HOST 的全部 HTTP请求。

例如:@csdn.net,选择host包含csdn.net的所有请求。

(5)Bpafter,Bps,bpv,bpm,bpu命令

这几个命令主要用于批量设置断点

Bpafter xxx:中断 URL 包含指定字符的全部 session 响应。

Bps xxx:中断 HTTP 响应状态为指定字符的全部 session 响应。

Bpv xxx:中断指定请求方式的全部 session 响应。

Bpm xxx:中断指定请求方式的全部 session 响应。等同于bpv xxx。

Bpu xxx:与bpafter类似。

更多的其他命令可以参考Fiddler官网手册。
6.2 状态栏

状态栏在Fiddler工具的最下端,如下图:
在这里插入图片描述
说明:

Capturing:显示Capturing表示当前是捕获状态,可以捕获请求,也就是替换了系统代理。

空白表示当前为非捕获状态,请求不会被捕获,点击进行切换。

可以用快捷键 F12 切换该区域。

显示当前捕捉哪些进程的通讯

All Processes :显示捕获所有进程的请求。

Web Browsers :显示捕获 Web 浏览器的请求。

Non-Browser : 显示捕获非 Web 浏览器的请求。

Hide All :隐藏所有请求。

显示当前断点设置状态,通过鼠标点击切换。

默认为不设置断点。(没有显示)

所有请求在断点处被暂停。(红色上箭头图标)

所有响应在断点处被暂停。(红色上箭头图标)

显示当前共捕获了多少 session。

如:显示66,表示共捕获了 66个session。

如果选中了一些session,会显示共选择了多少 session 及 session 总数(如:22/66,表示当前选择22个 session,共66个 session)

描述当前状态或者是一些附加状态。

如果是刚打开 Fiddler,会显示什么时间加载了 CustomRules.js;

如果选择了一个 Session,会显示该 Session 的 URL;

如果在 QuickExec 命令行输入一个命令,就会显示命令相关信息。

七、检查器Inspectors

Inspectors意思是检查器。Inspectors可以使用多种方式,查看请求的请求报文和响应报文相关信息。
Inspectors页签分为上下两部分,上部显示的是发出的请求相关信息,下部显示的是接收的响应相关信息。
在这里插入图片描述

7.1、请求报文

Inspectors面板中请求报文部分,如下图:

  1. Headers – 显示客户端发送到服务器的 HTTP 请求的 header,显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等。

  2. Textview – 显示 POST 请求的 body 部分为文本。

  3. Syntaxview – 为Textview的加强版,查看语法高亮的请求内容。加上了行数标识,鼠标右键的菜单中,相较Textview多了一些功能,如Json、XML格式化,查找替换等。

  4. WebForms – 显示请求的 GET 参数 和 POST body 内容,特别说明,这里 body 应该是 application/x-www-form-urlen-coded 格式。

  5. HexView – 用十六进制数据显示请求。

  6. Auth – 显示 header 中的 Proxy-Authorization 和 Authorization 信息。

  7. Cookies – 请求发送的cookies信息。

  8. Raw – 将整个请求显示为纯文本。

  9. Json – 如果请求的 body 是 json 格式,就是用分级的 Json 来显示它。

  10. XML – 如果请求的 body 是 XML 格式,就是用分级的 XML 树来显示它。

7.2、响应报文

Inspectors面板中响应报文部分,如下图:
在这里插入图片描述

  1. Transformer – Transformer选项是显示响应的编码信息
  2. Headers – 用分级视图显示响应的 header。
  3. TextView – 使用文本显示相应的 body。
  4. Syntaxview – 为Textview的加强版,查看语法高亮的响应内容。
  5. ImageVies – 如果请求是图片资源,显示响应的图片
  6. 左侧灰色区域会显示图片的大小、宽高、文件格式等信息,在下方还可以选择缩放模式:Autoshrink(自动缩放)、Scale to fit(缩放以适应显示区域大小)、No Scaling(无缩放)。
  7. HexView – 用十六进制数据显示响应。
  8. WebView – 响应在 Web 浏览器中的预览效果。
  9. Auth – 显示响应 header 中的 Proxy-Authorization 和 Authorization 信息。
  10. Caching – 显示此请求的缓存信息。
  11. Cookies – 显示此请求的cookies信息,私密 P3P Header 信息。

说明响应报文中Transformer选项

Transformer选项是显示响应的编码信息,如下图:表示可以选择几种压缩方式来提供性能,图中是默认没有选用任何压缩方式。
在这里插入图片描述
抓取访问百度请求之后,发现响应头使用的是Transfer-Encoding:chunked,是用chunked(分块传输)方式传送数据长度值。
在这里插入图片描述

八、自动响应器

1.点击autoresponder,勾选enable rules和unmatched requests passthrough

2.替换步骤

(1)把要替换的会话拉取到空白处,或者选中要替换的内容点击add rule,

(2)选中添加的rule,

(3)在rule editor中填写规则:原接口和替换的规则,替换的规则可以是文件,也可以是状态

(4)点击save

(5)重新刷新浏览器,页面内容更改为替换的内容

注意:原接口必须是fiddler抓到的接口
在这里插入图片描述
3.更改响应结果:可用于mock

把要修改的会话拉取到autoresponder空白处,

选中右键点击edit response,打开后在raw中可以修改内容,然后保存。

勾选生效
在这里插入图片描述
在这里插入图片描述

九、composer区域,是测试接口的界面

在这里插入图片描述
相关说明:

  1. 请求方式:点开可以勾选请求协议是get、post等
  2. url地址栏:输入请求的url地址
  3. 请求头:第三块区域可以输入请求头信息
  4. 请求body:post请求在此区域输入body信息
  5. 执行:Execute按钮点击后就可以执行请求了
  6. http版本:可以勾选http版本
  7. 请求历史:执行完成后会在右侧History区域生成历史记录

重复的并发测试:
在拦截到的url上点击鼠标右键,->replay -> shift+reissue request 设置访问次数,比如100,然后点OK即可。
这里写图片描述

十、过滤器

10.1域名过滤

在这里插入图片描述
抓取到的请求显示如下:在这里插入图片描述
二级域名的过滤,输入*.baidu.com的形式,所有在baidu.com域名下的所有请求都会被过滤出来

10.2进程过滤

为了不和域名过滤器有所冲突,先把进程的过滤关闭。如下图,选择(1)No Host Filter
在这里插入图片描述
进程的过滤操作如下:
在这里插入图片描述


版权声明:本文为lxz1897原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。