51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1502|回复: 3
打印 上一主题 下一主题

[转贴] 最全面的 Fiddler 教程讲解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-7-28 15:39:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一.Fiddler 介绍一.Fiddler 简介

fiddler 是由 C# 开发的最强大好用的免费web调试工具之一,可记录所有客户端和服务间的 http 以及 https 请求,可监视设断点,甚至修改输入输出数据,它还包含了一个强大的基于事件脚本的子系统,并且能使用 .net 语言来拓展。

二.此文结构介绍

此文依据 fiddler 的界面按钮的排版来依次讲解这些按钮的作用,主要讲解 fiddler 界面上的 7 大板块,从菜单栏→工具栏→底端状态栏→命令行控制台→ session 栏→ request 栏→ response 栏来依次讲解,但是 fiddler 某些常用功能的详细使用方法没有放在此文中讲解,为防止文章过长,具体的功能使用将放在另一篇博文中叙述

二.Fiddler 工作原理

Fiddler 以代理 Web 服务器的形式工作的,使用代理地址为 127.0.0.1,端口 8888,当 fiddler 开启时自动开始代理,关闭 fiddler 时自动注销,这样就不会影响其他程序。只要是支持 http 代理服务器的任意程序都可以被 fiddler 嗅探到,fiddler 的运行机制其实就是本机上监听 8888 端口的 HTTP 代理。
注意一下,要是 fiddler 没有正常退出,可能造成 fiddler 没有正常注销,使得页面没法访问。fiddler 的学习过程是对http相关协议知识的一个学习同时对该协议了解的越多,fiddler 的学习也就越容易。
关于什么是代理服务器,代理服务器的相关知识可见这篇博文:HTTP 代理知识点

Fiddler 的代理模式有流模式和缓冲模式,其中流模式是一种实时通信模式,请求之后实时的返回,更接近浏览器真实行为,另外一种是缓冲模式,等所有请求到了再一起返回,可以来控制最后的服务器响应,实际中我们可以根据具体场景选用不同代理模式,fiddler 默认缓冲模式,这里可改变

三.Fiddler 菜单栏

Fiddler 菜单栏共有 6 个板块,如下:



1.File

这里与文件导入导出加载有关

  • Capture Traffic:默认勾选,勾选此项才可抓包,与点击左下角状态栏的 Capture 效果一样
  • New Viewer:开启一个新的 fiddler 的 viewer,注意这里不是再开一个新的 fiddler,而是开一个新的fiddler的viewer
  • Load Archive…:用于重新加载之前捕获到的 SAZ 文件格式保存的流量。Session Archive Zip 文件,用于保存 http 请求信息。
  • Recent Archives:查看最近之前捕获到的 SAZ 文件格式保存的流量
  • Save:保存
Import Sessions…:从目标文件夹及其子文件夹加载所有 SAZ 文件。缓存和重用密码。
支持导入从其他工具获得的流量

Export sessions:支持用fiddler把捕捉到的 sesison 用多种方式保存。CURL 脚本由 CURL 回放;参见 CURL

  • Exit:退出 Fiddler
2.Edit

这里主要是鼠标点击编辑的一些操作

Copy:用来拷贝请求的相关信息。有用于复制在 web session 列表中选中的 session 信息,包括 just URL(选中的 session 的 URL 复制到剪切板中)、this column(拷贝菜单所在列的文本)、terse summary(选中 session 的简要说明复制到剪切板里)、header only (把 session 请求头复制到剪切板里)、session(把整个的 session 列表都复制到剪切板里)、full summary(把列表中显示的所有 session 信息复制到剪切板里)这些功能

Remove:主要是用来移除左侧边栏中的 session

  • Select All:全选左侧边栏中 session
  • Undelete:恢复之前删除的 session
  • Paste as Sessions:把剪切板里的 sesisongs 复制到 web sessions 中,把以前的会话粘贴回来
  • Mark:自定义不同 session 的显示颜色

  • Unlock for Editing:把锁定的 session 进行解锁,可以进行编辑,默认情况下是不可进行编辑的,默认可以看到选定的 session 前是“锁”的图形 ,点击此按钮后变成可编辑按钮 。
  • Find Sessions…:搜索 session
3.Rules

这里主要是一些规则的选择

  • Hide Image Requests:可以隐藏图片请求,让图片类的 session 不在 session 框中显示出来
  • Hide CONNECTs:可以隐藏 CONNECT 方法的请求,让这类 session 不在 session 框中显示出来
  • Automatic Breakpoints:自动断点,控制是否自动在 Before Request 或 After Request 处断点,来修改请求或响应的内容

  • Customize Rules…:来打开 fiddler script 工具,调取脚本操作,多用于网络修改,其他自定义时使用
  • Require proxy authentication:若选中此项,则所有未提交 Require proxy authentication 的请求头的请求会返回 HTTP/407 响应,要求客户安装证书
  • Apply GZIP Encoding:请求 GZIP 编码,若选中此项,则只要请求包含了 gzip 标识的 Accept-Encoding 请求头就会对除了图片以外的所有相应使用 GZIP HTTP 进行压缩
  • Remove All Encoding:若选中此项,会删除所有请求相应的 http 内容编码和传输编码
  • Hide 304s:在session框中隐藏所有的 304 的 session
  • Request Japanese Content:把所有的 Accept-Encoding 请求头设置替换成 ja 标示,标示客户端希望以日语的形式发送
  • Automatically Authenticate:自动进行身份验证
  • User-Agents:选择相应的用户代理模式,默认是选择 disabled。那什么是 user-agent 呢?ua 是头域的组成部分,简单来说就是你向访问的网站提供你所用的浏览器的类型等信息,ua 字符串在每次浏览器 http 请求时发送到服务器端

Performance:此项提供影响 web 性能的简单选项。若选中了 simulate modem speeds,它会设置所有后续 session 的 flag,把 request-trickle-delay 标志设置为 300,所有上传数据延迟 300ms/kb,若把 response-trickle-delay 标志位设为 150,会使所有下载数据延迟 150ms/kb。若选中了 disable caching,将会删除所有 If-None-Match和If-Modified-Since 请求头,并添加 Pragma:no-cache 请求头,选中该项还会删除响应中的所有 Expires 头,并把 Cache-Control 响应头设置成 no-cache,该项无法阻止浏览器重用在所用该选项之前所缓存的响应,在选中该选项后,为了得到最佳结果,最好是清空浏览器中缓存。若选择 Catch Always Fresh 会自动响应所有包含 http/304 响应的有条件的 http 请求,表示客户端缓存是最新的,当访问的站点无法正确的设置缓存失效日期时,该选项可以极大的提高性能。

4.Tools

这里提供各种支持 fiddler 的工具

Options…:打开 Options 窗口,是 fiddler 抓包的一些设置项,包括对抓取接口是 http 还是 https 的设置,获取证书,设置代理端口号等功能

WinINET Options…:打开IE浏览器的 options 进行设置

  • Clear WinINET Catch:清空 IE 和其他应用中所使用的 WinINET 的缓存文件
  • Clear WinINET Cookies:清空 IE 和其他应用中所使用的 WinINET 的 Cookies 文件
  • TextWizard:文本向导工具,是一个非常好用的可以轻松将 text 文本 encode 和 decode 的小工具






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2022-7-28 16:18:48 | 只看该作者
  • Compare Sessions:比较 session,可以在 session 框中选中两个 session,然后点击此按钮,可以来比较两个 session,正常情况下需要安装插件
  • New Session Clipboard…:打开一个新的 session 剪贴板,可以把侧边栏中的 session 拖到这个剪贴板中具体来查看
HOSTS:主机重定向工具。若在其中勾选 Enable 框,然后在下面加入 host 配置,点击保存之后,这个配置并不会修改到本地 hosts 中,取消勾选就会失效,若点击 Import Windows Hosts File 将会导入本地的 host 文件内容


  • Reset Script:重置脚本
  • Sandbox:fiddler sanbox 官方文档
  • View IE Cache:打开本地文件系统,查看ie缓存
  • Win8 Loopback Exemptions:Win8 回环豁免工具,这个时候会弹出一个“AppContainer 回环豁免实用程序”的窗口,若要将所有的程序使用豁免,点击“全部免除”,然后点击“保存更改”
5.View

提供各种视图功能


  • Show Toolbar:显示工具栏,默认是勾选的
  • Default Layout:默认 layout,session 在左,请求和响应在右边的上下处
  • Stacked Layout:session 在上,请求在下方
  • Wide layout:session 在上,请求和响应在下方的左右处
  • Tabs:打开标签页面,其中有三个标签可以打开,分别是 Preferences(fiddler 偏好属性),AutoSave(fiddler 自动保存的设置),APITest(api 的测试)


AutoSave:自动保存设置

APITest:api 调试

Statistics:查看一个请求的统计数据

Inspectors:嗅探,用来查看会话的内容,上面是请求,下面是响应

Composer:设计构造,在 Composer 中进行请求的修改,可以把 session 框中的数据先清除,然后点击 Composer 中的 Excute 按钮来发送请求,请求出现在 session 框中

  • Minimize To Tray:最小化托盘
  • Stay On Top:保持置顶
  • Squish Session List:挤压 session 框
  • AutoScroll Session List:自动滚动会话列表,默认是勾选此项的,勾选此项后,session 框中的每出现新的 session,session 框中就会不断向下滚动,若不勾选此项,就很方便具体某一个 session 的定位,即使出现了新的 session 也不会自动向下滚动
  • Refresh:刷新功能,按 F5 刷新
6.Help

帮助功能

  • Help:进入 fiddler 的帮助的网页中
  • Get Fiddler Book…:fiddler book 的网页
  • Discussions:fiddler 的讨论网页,这个需要魔法上网
  • Http Preferences:进入 http preferences 相关网站
  • Troubleshoot…:会捕获所有请求,对于哪些被过滤的请求用删除线表示出来并给出原因,使用时候会打开一个网页

  • Get Priority Support…:打开网页购买 fiddler 的优先级服务
  • Check for Updates…:检查软件更新情况
  • Send Feedback…:意见反馈
  • About:当前 fiddler 的相关信息

四.Fiddler 工具栏

1.WinConfig
windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler 中点击 WinConfig 按钮可以解除这个诅咒,这个与菜单栏 Tools→Win8 Loopback Exemptions 功能是一致的

2.
此按钮来给选定的 session 添加注释

  • 3.Replay
    重发按钮,选定请求重发按钮
  • 4.Remove
    移除按钮,其中有 Remove all 移除所有,Images,CONNECTs,Non-200s,Non-Browser,Complete & Unmarked,Duplicate response bodies,这些都是移除 session 中的这些状态的选项

  • 5.Go
    重跑 sessions,依据断点暂停
  • 6.Stream
    流模式是一种实时通信模式,请求之后实时的返回,更接近浏览器真实行为,但 fiddler 默认是缓冲模式而不是流模式
  • 7.Decode
    解码,这里可以将 session 中乱码进行解码方便查看
  • 8.Keep All sessions
    All sessions:这里可以保持 session 框中存在多少个 sessions

  • 9.Any Process
点击此按钮并且拖动到你想要捕获的浏览器从而实现只捕获某个浏览器的请求

  • 10.Find
    查询
  • 11.Save
    保存按钮,保存所有的 session 成 SAZ 文件
  • 12.截图
  • 13.
手动点击运行,手动点击暂停终止14.Browser
打开浏览器来查看响应数据

  • 15.Clear Cache
    清除 WinINET 的缓存,按住 CTRL 键点击可以清除已经存在的 cookies
  • 16.TextWizard
    此工具可以将某一编码过的或者未编码过的字串拿到此处解码和编码,在菜单栏中的 Tools 中也有此项可以打开
  • 17.Tearoff
    此功能用来将右边栏里的请求和响应部分给单独拆成一个新窗口,方便视察
  • 18.MSDN Search…
    在网页版的微软开发中去搜索
  • 19.fiddler 的在线帮助网站
  • 20.鼠标悬停显示本机的一些ip信息
  • 21.用来关闭工具栏的按钮,在 View 中可以打开工具栏
五.Fiddler 底端状态栏
  • 1.此处与菜单栏中 File→Capture Traffic 效果是一致的,默认底端状态栏此处是有 Caturing,有它才表示 fiddler 捕获请求
  • 2.All Processes
    这里有 All Processes,Web Browsers,Non-Browser,Hide All 几个选项,这个几个选项顾名思义,但要注意的是这些不是筛选当前 session 框中的 session,而是选中需要筛选的状态之后,后面的请求会按照此状态来筛选


  • 3.数字/数字
    第一个数字表示这一个请求,第二个数字表示 session 框中共有多少 session
  • 4.
           此处显示请求的 url 网址
六.Fiddler 底端自带命令行控制台

Fiddler 控制台有许多自己的快捷键和命令来方便快速的操作 fiddler,拿到自己想要的 session,这一块的功能性内容将放在另一篇博文中讲解
七.Session 栏一.右键 Session 列

session 框中的列有:


当右键点击session框中的列时,可以发现有5个功能


分别是仅搜索该列;标记列中的相同项并将相同项背景滤为黄色;隐藏列该列;确保所有的列都是可视的;定制列,可以增加其他的列名,通过下图来增加,并且还可以改变列名


二.Session 栏中各个列讲解
  • #:这里一列是 http request 的顺序,从 1 开始,有多种图标


  • Result:这一列返回的是响应码
  • Protocol:这里是协议,一般是显示http
  • Host:host地址
  • URL:也就是请求接口,知道protocol+host+URL可以发送一个请求
  • Body:这一列显示的是响应返回的字节数
  • Caching:请求的缓存过期时间或者缓存控制值
  • Content-Type:返回的数据类型
  • Process:这一列标明了进程名和进程PID
  • Comments:这一列是session的注释,本人习惯性把这一列拖到#这一列后,可以通过工具栏的按钮来添加注释,我建议fiddler可以直接编辑 Comments 这一列,这样更方便
  • Custom:这一列允许用户通过 fiddlerscript 脚本设置自定义值,这个以后讲解
三.右键 Session 框

在session一栏中右键点击会出现




回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2022-7-28 16:28:00 | 只看该作者
本帖最后由 草帽路飞UU 于 2022-8-11 16:21 编辑

  • Decode Selected Sessions:这里 Decode Selected Sessions 是将选中的 session 进行解码,这样在响应中出现的乱码也可以成功被解码
  • AutoScroll Session List:AutoScroll Session List 是默认勾选,session 滚动条自动滑动
  • Copy:Copy 可以 copy 一个 session 中各个你需要的东西

Save:Save 可以保存相应的文件

Remove:移除

Filter Now:过滤当前 session

  • Comment…:添加评论注释
  • Mark:将选中的 session 标记成不同的颜色

Replay:请求重发的相关功能

Select:选择需要的 session

  • Compare:选中两个 session 进行比较
  • COMETPeek:COMETPeek 命令会保留正在执行的响应的“快照”,在响应完成前就可以查看部分内容。当 web 应用采用 COMET 模式以流式向客户端返回数据时,可以使用该命令。由于“流式”的含义就是永不结束,直有当服务端停止连接后,Fiddler 才会返回响应
    Abort Session 终止当前正在执行的请求
  • Clone Response:当 session 列表选中两个 session,并且其中一个 session 在断点处终止,而另一个 session 已经运行完成时才有用,该命令会把已完成的 session 响应拷贝给暂停运行的 session
  • Unlock For Editing:使 session 的请求和响应都可以在 Inspector 中编辑,这个还是蛮有用的
  • Inspect in New Window…:在一个新的窗口中来查看请求信息
  • Properties…:session 的属性窗口,显示当前 session 的属性
八.Request 栏

在 request 栏中有 9 个大的标签页,分别是 Inspector,AutoResponder,Composer,Fiddler Orchestra Beta,Fiddler Script,Log,Filters,Timeline,Statistics,按照这个顺序讲解一下

1.这里是查看某个 session 的请求和响应,响应的话专门置为一栏讲解,请求的话又可分为 10 个小的标签页。并且右键点击这 10 个标签页可以查看 Inspector的属性还有诸如 copy as image 和隐藏标签页的功能
  • 1.:这里是请求头中的信息,包括 cache,cookies 等信息,点击右边黄色的 Raw 可以以新窗口的形式来显示原生头信息,而 Header Definitions 可以查看 fiddler 官方的头信息的网页版帮助文档,可能需要魔法上网
  • 2.:TextView 方式显示传送过去的请求体数据
  • 3.:SyntaxView 方式显示传送过去的请求体数据
  • 4.:网页表单方式显示传送过去的请求体数据
  • 5.:十六进制视图的方式显示传过去的数据
  • 6.:显示请求中的身份认证信息
  • 7.:显示该请求的cookies信息
  • 8.:显示该原生的请求体
  • 9.:json 显示请求
  • 10.:xml 显示请求
  • 2.:重定向,本机代替服务器发送响应,这个功能再另一篇博文中再讲
  • 3.Composer 和 Inspector 都可以篡改数据,Inspector是篡改输入的数据,但是 Composer 却可以篡改 Cookies 中的数据,并通过 Execute 发送重新篡改后的请求,界面上的控件比较简单

  • 4.:目前本人 fiddler 为当前最新版,这个功能应该还是 beta 测试阶段,此功能暂时还未知
  • 5.:fiddler 在 Web 前端开发时候经常使用,用户再修改请求头信息时候经常需要设置断点,但是设置后会在断点处停下,之后点击重启才行,而 fiddler script 本质是 JScript.NET 语言写的脚本文件 CustomRules.js,语法类似 C#,若果是修改 CustomRules.js 其实可以很容易的修改 http 的请求的应答,不用中断程序,还可以针对不同 URI 做特殊处理,甚至可以根据开发者的需要去定制菜单,功能可以说是非常强大的。脚本文件 CustomRules.js 位于 C:\Documents and Settings[your user]\My Documents\Fiddler2\Scripts\CustomRules.js 下,你也可以在 Fiddler 中打开 CustomRules.js 文件, 启动 Fiddler, 点击菜单 Rules->Customize Rules。Fiddler Script 的官方帮助文档的地址是:FiddlerScript 官方帮助文档。可以直接编辑 CustomRules.js 文件,也可以下载 Fiddler Script Editor 来编辑,下载的地址是 Fiddler Script Editor 下载网址。Fiddler Script Editor 提供了语法高亮,以及智能提示的功能,方便编辑。
  • 6.:查看 fiddler 的 event log 信息,不同请求的 log 信息应该是一致的,每当更新一次页面,event log 会自动刷新一次,若将上方的 any process 拖动到指定浏览器后,fiddler 会单独记录该浏览器页面的通信信息
  • 7. 这个可以用来过滤 session 中的请求,具体使用功能再另一篇博文中讲解
  • 8.:可以查看请求响应的时间轴



9.:里头包含该 session 请求的统计数据,包括请求次数,请求与响应字节数,信息头和体各有多少字节,以及连接时间点,响应信息类型,最后,下面有个全球性能估计的数据:


九.Response 栏

这里包含 13 个小的标签页面,分别是 Transformer,Header,TextView,SyntaxView,ImageView,HexView,WebView,Auth,Caching,Cookies,Raw,JSON,XML


1.Transformer:这里显示了响应体的字节数,这里头的 Chunked Transfer-Encoding 和 HTTP Compression 是分块传输编码和 HTTP 压缩技术,这就需要 http 的知识了

  • 2.Headers:这里可以看到响应头部分,包括 http 的协议,返回状态码,连接情况等
  • 3.TextView:这里返回 TextView 形式的响应体信息
  • 4.SyntaxView:这里返回 SyntaxView 形式的响应体信息
  • 5.ImageView:如果是返回图片的话这里将有显示,并且左边会显示图片的信息
  • 6.HexView:这里会显示响应体的十六进制信息
  • 7.WebView:这里会用网页的形式来显示响应体的信息
  • 8.Auth:显示身份验证
  • 9.Caching:显示缓存信息
  • 10.Cookies:显示 Cookies 信息
  • 11.Raw:显示原生的响应信息
  • 12.JSON:响应体中的数据 json 显示
  • 13.XML:响应体中的数据 XML 显示


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-21 18:34 , Processed in 0.070799 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表