Fiddler 面板
Fiddler是一个HTTP的调试代理工具,以代理服务器的方式,监听系统的HTTP网络数据流动,还能设置断点,用于抓包。
1 Fiddler
- Fiddler
- 官网地址:https://www.telerik.com/fiddler。
- 免费版本:https://blog.csdn.net/g_optimistic/article/details/89931109。
- 主要特征
- 系统流量捕获、预配置浏览器捕获、流量分析、现代HTTP版本支持、模拟请求和响应。
- API编写、安全协作、跨平台支持、样式选项(提供现代、直观的UI和一组流行的主题)。
- 主页说明
- 菜单栏:File、Edit、Rules、Tools、View、Help。
- 工具面板:WinConfig、Replay、Go、Stream、Decode、Find、Save、Browse、Clear Cache等快捷按钮。
- 会话面板:展示捕获到的所有会话,其中包括了sessions的状态码、协议Protocol、Host主机、URL地址等。
- 监控面板:提供Statistics、Inspectors、AutoResponder等多个选项卡,通过不同的选项卡操作捕获的会话。
- 状态面板:Capturing(启用禁用抓包)、All Processes(当前正在捕获的进程)、Number of sessions(会话数)等。
- 命令输入栏:可以结合正则表达式,输入一些命令快速过滤会话列表。
1-1 工作原理
- 工作原理
- Fiddler本质上是一个Web代理服务器,默认的工作端口是8888,查看方式如下。
- 菜单栏->Tools->Options->Connections->Fiddler listens on port->8888。
- Web代理服务器(Proxy Server)是网络的中间实体,位于Web客户端和Web服务器之间,扮演中间人的角色。
- HTTP的代理服务器即可作为Web服务器为客户端提供服务,又可作为Web客户端,向其他服务器请求数据。
- 代理服务器的作用:共享网络、提高访问速度(有缓存功能)、突破访问限制、隐藏身份。
- 打开Fiddler后,会自动设置代理,关闭则自动注销代理,这样就不会影响到其他程序的运行了。
- 非正常退出时不会自动注销代理,容易造成网页无法访问的情况,可通过重启Fiddler解决问题。
- 抓包原理
- 类似于快递代收点,快递员将快递放到代收点。
- 如果快递没有使用胶带等封口,那么代收点可以任意查看、替换快递中的物品,类似于HTTP。
- 如果快递使用胶带等封了口,那么代收点就不能随意查看、替换快递中的物品,类似于HTTPS。
1-2 快速抓包
- 快速抓包
- 若Fiddler没有抓到想要的包,逐一排查以下内容。
- 检查是否开启抓包模式,主页左下角是否有Capturing图标,有则处于抓包中,没有则点击一下开启抓包。
- 检查访问本地搭建的静态网站地址,是否使用了回路地址localhost或127.0.0.1,如果是则不能成功抓包。
- 控制面板->Internet选项->连接->局域网设置->代理服务器的高级->例外默认设为
<-loopback>
。 - 说明在默认的代理设置中,回路地址localhost或127.0.0.1被排除了。
- 但若搭建的静态网站指定了端口,Fiddler的默认设置中可能并未排除指定端口的流量,因此可正常抓包。
- 控制面板->Internet选项->连接->局域网设置->代理服务器的高级->例外默认设为
- 如果还是不能正常抓包,更换不同的浏览器试下。
1-3 HTTP协议
- HTTP协议
- 超文本传输协议,Hyper Text Transfer Protocol,一个简单的请求响应协议,基于TCP/IP协议栈的应用层协议。
- 发展历史:0.9版本(交换信息的无序协议)->1.0版本(1982年)->1.1版本(规定了连接方式和类型)->2.0版本。
(1) 请求报文
- HTTP的请求报文是指从客户端发送给服务器的报文。
- 组成
- 请求行:请求方法 + 空格 + 请求URL + 空格 + HTTP协议版本。
- 请求方法:提供多种方法(GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT等)。
- 请求URL:用来告知服务器需要获取的资源,例如“http://detectportal.firefox.com/canonical.html”。
- HTTP协议版本:用来告知服务器,采用的HTTP协议版本,例如“HTTP/1.1”。
- 请求头:用于与服务器进行通信、协商,格式为
key: value
。- Accept:请求头指定客户端可以接收到的消息内容,例如
Accept: text/plain
。 - Accept-Language:请求头浏览器可接受语言,例如
Accept-Language: en, zh
。 - User-Agent:用来标识发起请求的客户端(浏览器、应用程序、爬虫等)身份信息。
- Content-Type:媒体类型,即数据格式,常见application/json、multipart/form-data等。
- Accept-Charset:请求头指定浏览器可接受的字符编码,例如
Accept-Charset: utf-8
。
- Accept:请求头指定客户端可以接收到的消息内容,例如
- 空行:请求头的最后一行,表示请求头结束,接下来为请求数据。
- 请求体:GET和DELETE方法没有请求体,POST和PUT方法有请求体,数据受Content-Type值的影响。
- 请求行:请求方法 + 空格 + 请求URL + 空格 + HTTP协议版本。
(2) 响应报文
- HTTP的响应报文是指客户端发起HTTP请求后,服务器响应给客户端的报文。
- 组成
- 状态行:响应行,HTTP协议版本 + 空格 + 状态码 + 空格 + 状态码描述。
- HTTP协议版本:必须与请求报文的协议版本保持一致。
- 状态码:HTTP Status Code,用以表示网页服务器超文本传输协议响应状态的3位数字代码。
- 1XX:信息,服务器收到请求,需请求者继续执行操作。
- 2XX:成功,操作被成功接收并处理,例如状态码200。
- 3XX:重定向,需进一步的操作以完成请求,例如304。
- 4XX:客户端错误,请求包含语法错误或无法完成请求。
- 5XX:服务器错误,服务器在处理请求过程中发生错误。
- 状态码描述:200 OK、301 Moved Permanently、302 Found、502 DNS Lookup Failed等。
- 响应头:在HTTP响应消息中发送的HTTP头字段,包括服务器信息、响应时间等,类似于请求头。
- 空行:响应头的最后一行,表示响应头结束,接下来为响应数据,与请求报文一致。
- 响应体:响应数据或响应正文,用于存放需要返回给客户端的数据信息,同请求体。
- 状态行:响应行,HTTP协议版本 + 空格 + 状态码 + 空格 + 状态码描述。
(3) URL组成
- URL举例:https://kaifa.baidu.com/searchPage?wd=fiddler&hmsr=aladdin。
- 协议:协议类型,常见的有HTTP、HTTPS、FTP、SFTP、SMTP、POP3等,这里是HTTPS,与IP地址用
://
分隔。 - IP地址:要访问的Web服务器的IP地址或主机名称,这里是kaifa.baidu.com,与端口号用
:
分隔,例如127.0.0.1:99。 - 端口号:标识Web服务器正在监听的端口号,HTTP默认80,HTTPS默认443,这里默认443,与资源路径用
/
分隔。 - 资源路径:指定想要访问的资源具体路径,例如IMAGE、CSS、JS等资源,这里是searchPage,与查询参数用
?
分隔。 - 查询参数:向Web服务器发送额外的参数信息,键值对组成,这里是wd=fiddler&hmsr=aladdin,参数之间用
&
分隔。
2 工具面板
- 工具面板
- WinConfig、添加注释Comment、数据重放Replay、删除会话Remove、恢复断点执行Go、流模式Stream。
- 解码Decode、保留会话Keep、任意进程Any Process、快速查找Find、保存请求Save、倒计截图Screenshot。
- 计时器Timer、浏览器Browse、清除缓存Clear Cache、编解码TextWizard、窗口浮动Tearoff、在线Online。
2-1 常用工具
- 常用工具
- WinConfig:点击,打开AppContainer Loopback Exemption Utility弹窗。
- 显示Windows内置运行的一些应用,默认情况下Fiddler无法抓取到这些内置应用的HTTP通讯包。
- 通过勾选弹窗对应的内置应用,点击Save Changes按钮,可以解除这些内置应用不能抓包的限制。
- 快捷键
Ctrl + WinConfig
可解除所有应用的限制,Exempt All为全选,Exempt None则是全取消。
(1) Comment
- 测试人员在使用Fiddler测试API接口时,可以通过Comment注释功能直接将存在问题的请求添加注释。
- 当所有接口都测试完成后,将当前所有的session保存为一个*.saz文件,方便发送给开发人员排查问题。
- 选中存在问题的session会话,点击,填写存在的问题备注后,点击OK。
(2) Replay
- 选中当前存在的一个session会话,点击,可以向服务器重新发送一次选中的session请求。
- 快捷键
CTRL + Replay
重新发送一次请求,而不包含任何条件的请求头,例如:If-None-Match等。 - 快捷键
Shift + Replay
弹窗要求指定每个请求应被重新发送的次数,默认5次,OK后重新发送5次请求。
(3) Remove
- 点击,选对应选项,可删除列表中对应的会话。
- 选项说明
- Remove all:删除列表中的所有会话。
- Images:删除列表中所有图像类会话。
- CONNECTs:删除列表中所有CONNECT通道。
- Non-200s:删除列表中所有HTTP响应码非200的会话。
- Non-Browser:删除列表中所有不是来自浏览器的会话。
- Complete & Unmarked:删除列表中所有状态为正常结束或异常终止,没被标记且Comments没内容的会话。
- Duplicate response bodies:删除列表中没有响应体,或者是响应体内容在更早的会话中已经被接收的会话。
(4) Go
- 点击,可以恢复执行在Request请求,或Response响应断点处暂停的所有会话。
- 默认情况下直接点击会恢复所有会话的运行,快捷键
Shift + Go
仅恢复选中的会话。
(5) Stream
- 点击,开启Streaming Mode流模式。
- Fiddler一旦从远程服务器拿到了响应,会立即返回响应给客户端,这对于较低网络时间设定来说是非常重要的。
- 多数浏览器会在尚未完全下载HTML页时进行解析且并行下载所需资源,即使远程服务器还未完全传输该HTML。
- 访问Internet广播、音乐类站点时,通常使用永不结束的MP3数据流传递给客户端,这类特定场景也适合流模式。
- 默认情况下,使用的是Buffering Mode缓冲模式。
- Fiddler会在数据返回客户端之前完全的缓冲响应。
- 用户有机会在客户端接收到响应之前修改响应内容。
- 自动流模式
- Fiddler会自动使用流模式处理
video/*
和audio/*
类型的响应,可开启或关闭设置。 - 菜单栏->Tools->Options->General->勾选Automatically stream audio & video。
- Fiddler会自动使用流模式处理
(6) Decode
- 点击,直接对所有响应进行解码。
- 解码没有开启前,Fiddler右侧监控面板中可能提示“Response body is encoded. Click to decode”。
- 该提示说明当前响应的session会话已被编码,点击该提示信息可对当前响应的session会话进行解码。
(7) Keep
- Fiddler的Web请求列表非无限,因此提供了保留会话Keep操作,可以让Web请求列表实时保持指定的session会话个数。
- 点击,选All sessions,保持所有的Web请求,选对应个数sessions,则保持对应个数的Web请求。
(8) Any Process
- 默认情况下Fiddler将抓取所有进程的HTTP请求或响应,这会导致Web请求列表快速刷新,不方便查找所需的Web请求。
- Any Process可以用来定位抓包,点击,鼠标不放,将十字图标拖拽到指定进程的窗口中,右击则取消。
(9) Find
- 点击,支持依据查询条件快速查找会话列表请求,Find Sessions界面如下。
- Find:输入需要查找的内容,例如baidu.com,查找所有包含baidu.com内容的请求。
- Options
- Search:请求和响应、仅请求、仅响应、仅URLs,这四个中匹配条件。
- Examine:标头和正文、仅标头、仅正文,这三个选项中进行检查匹配。
- Match case(匹配时区分大小写),Regular Expression(可使用正则匹配)。
- Search binaries(搜索二进制),Decode compressed content(解码压缩内容)。
- Search only selected sessions(仅搜索所选的会话),Select matches(搜索匹配)。
- Unmark old results(取消标记旧结果),Result Highlight(匹配请求使用的高亮色)。
2-2 更多工具
- 更多工具
- 保存请求Save:点击,以SAZ文件形式保存请求,除快捷键保存外,还可菜单栏->File->Save中保存。
- All Sessions:所有抓取到的会话均保存到SAZ文件中。
- Selected Sessions:将选中的会话保存到SAZ文件中。
- in ArchiveZip(SAZ归档文件),as Text(保存到文本文件)。
- as Text(Headers only)(仅保存会话的头部信息到文本文件)。
- Request:将所有会话的请求报文保存到SAZ文件中。
- Entire Request(将保存所有会话的请求报文,一个请求保存一个文件)。
- Request Body(仅保存会话请求的正文部分,若没有正文则给出提示框)。
- Response:将所有会话的响应报文保存到SAZ文件中。
- Entire Response(将保存所有会话的响应报文,一个响应保存为一个文件)。
- Response Body(仅保存会话响应报文的正文部分,若无正文则给出提示框)。
- and Open as Local File(保存会话的响应报文到文件,然后自动打开该文件)。
- 倒计截图Screenshot:点击,支持当前Fiddler所在屏5秒倒计全屏截图,
Shift + Screenshot
键立即截图。 - 计时器Timer:点击,即开始计时,或停止计时,鼠标右键则可以将计时内容清除。
- 浏览器Browse:选中一会话点击,再任选浏览器打开,不支持多会话同时打开否则
about:blank
。
- 保存请求Save:点击,以SAZ文件形式保存请求,除快捷键保存外,还可菜单栏->File->Save中保存。
(1) Clear Cache
- 点击,清除WinINET缓存,快捷键
Ctrl + Clear Cache
删除持久性Cookies。 - WinINET缓存,分为文件缓存和URL缓存。
- Microsoft Windows操作系统中Internet Explorer和一些应用程序如Outlook,使用的一种缓存机制。
- 可以缓存从Internet或本地网络下载的内容,包括网页、图片、脚本等,用来提高后续访问的速度。
- WinINET缓存只能缓存HTTP和HTTPS协议的内容,并不支持缓存FTP和Gopher等其他协议的内容。
- 持久性Cookies
- 一种Web浏览器中常用的数据存储机制,与浏览器会话无关,可在多个浏览器会话之间保留。
- 持久性Cookies可以设置过期时间,当Cookie没有过期时,用户下次打开浏览器仍然可以使用。
- 生命周期取决于Cookie的失效时间和用户浏览器的设置。
(2) TextWizard
- 用来对文本进行编码和解码,支持多种编码,有Base64、Base64URL、URLEncode、URLDecode、SHA256等。
- 例如:使用MD5对字符串“Hello Fiddler!”进行编码,点击,打开TextWizard工具,操作如下。
(3) Tearoff
- 点击,支持将监控面板以窗口浮动形式进行显示。
(4) Online
- 将鼠标移动到,将显示当前机器的网络信息,有IP地址、MAC地址等。
3 会话面板
- 会话面板
- 会话属性
- #(从1开始生成的请求id)、Result(http响应结果的编码)、Protocol(会话使用的协议,如http、https、ftp)。
- Host(请求发送到服务器的主机名)、URL(服务器的路径或文件)、Body(响应body的字节数,以bytes为单位)。
- Caching(响应的有效期或Cache-Control标头的值)、Content-Type(响应Content-Type标头的值)。
- Process(发起流量的本地Windows进程)、Comments(注释)、Custom(自定义,可设置脚本的文本)。
- 会话图标
- (请求正发送到服务器)、(响应正从服务器读取)、(请求在断点处暂停)、(响应在断点处暂停)。
- (响应没有body)、(请求使用post方法)、(请求使用connect方法,建立一个用于https流量的隧道)。
- (响应是一张图片)、(响应是一个js脚本)、(响应是一个css,即叠加样式表)、(响应是一个xml)。
- (响应是一个json)、(响应是一种字体)、(通用的成功响应)、(响应是使用缓存版本304重定向)。
- (响应是300、301、302、303、307重定向)、(响应是对客户端凭据的请求)、(响应是服务器错误)。
- (会话被客户端、Fiddler或服务器中止)、(响应的Content-Type值为text/html)、(响应是视频文件)。
- (响应Content-Type为application/octet-stream)、(请求要求服务器切换协议,服务器已确认切换准备)。
- 会话属性
4 监控面板
- 监控面板
- Statistics(统计选项卡)、Inspectors(检查器选项卡)、AutoResponder(自动响应选项卡)、Composer(组合器)。
- Fiddler Orchestra Beta(新版新增功能,用于远程抓包)、FiddlerScript(编辑器与脚本库)、Log(日志选项卡)。
- Filters(过滤器)、TimeLine(时间轴选项卡)。
4-1 Statistics
- Statistics
- 显示当前会话的基本信息,最上方显示文本信息,最下方以饼图形式按MIME类型显示流量。
- 饼图:默认不显示,点Show Chart显示。
- Collapse Chart支持隐藏饼图,饼图的切片是各个MIME类型及Headers的字节数。
- Copy this chart可以把饼图作为位图拷贝到剪贴板,进而粘贴到报表或ppt演示中。
(1) 单会话
1 |
|
(2) 单通道
- 单个CONNECT通道,会显示在该通道上发送和接收的字节数,除非配置为HTTPS加密方式。
- 配置为HTTPS加密方式的情况下,需在Web会话列表已解密的HTTPS会话中查看字节数信息。
1 |
|
4-2 Inspectors
- Inspectors
- 用于显示Web会话列表中选定会话的请求和响应信息,位于监控面板选项卡处,也有独立的Inspect Session窗口。
- Inspect Session窗口可以在会话面板中,选中需要打开请求或响应信息的会话,鼠标右键Inspect in New Window。
- Fiddler会根据每个请求和响应的类型,自动选择合适的Inspectors视图,例如
image/*
类型显示ImageView视图。 - 右击请求或响应的Inspector选项卡,会显示三个选项菜单。
- Inspector Properties:显示Inspector提供的自身信息。
- Copy as Image:将当前Inspector复制成图片,粘贴到其他地方使用。
- Hide Inspector:从Inspectors选项卡中隐藏该Inspector,支持恢复。
- Inspectors默认情况下是只读模式Readonly,除非该会话停止在某个断点处。
- 只要当前会话处于未锁定状态,就可以选中后鼠标右键Unlock For Editing进行编辑,编辑模式是白色背景显示。
- 默认的只读模式是淡蓝色背景,菜单栏->Tools->Options->Appearance->Set Readonly Color可更改背景色。
(1) Inspector Properties
(2) Hide Inspector
(3) Hide Inspector恢复
- 菜单栏->View->Tabs->Preferences>fiddler.inspectors.hidelist的value改为True或False,保存后重启。
4-3 AutoResponder
- AutoResponder
- 支持创建规则,可在响应请求时自动触发,常见例子是返回之前捕捉的响应,而不需要访问服务器。
- Enable rules:用来控制是否激活自动响应选项卡。
- Unmatched requests passthrough:用来控制会话不匹配给定规则时会发生的情况。
- 如果勾选,则不匹配的请求会正常发送到服务器。
- 如果不勾选,那么Fiddler会为所有与该规则完全不匹配的HTTP请求,生成响应404 Not Found。
- 若客户端发送条件请求包含If-None-Match或If-Modified-Since,返回响应304 Not Modified。
- Enable Latency
- 用来控制匹配某个规则的请求是立即执行,还是延迟Latency字段中所指定的毫秒数。
- 不勾选Latency字段就不显示,勾选可准确地模拟服务器实际响应,取消可提升性能。
- Add Rule:点击该按钮添加一个新的AutoResponder规则。
- Import
- 支持导入SAZ文件,导入的每个会话会被用于规则列表生成新规则。
- 还可以导入FARX文件,包含从AutoResponder选项卡中导出的规则。
- 中间是规则列表
- If request matches:匹配条件,用于判断接收到的请求是否匹配该规则,复选框控制规则是否选中。
- then respond with:规则匹配时所要采取的操作,即返回哪些数据给请求,可指定本地文件或其他。
- Latency:勾选Enable Latency时才出现,用来说明规则的延迟时间。
(1) Rule Editor
- 底部的Rule Editor用来调整规则的匹配条件和返回,Test支持根据选中的样本URI测试匹配条件。
- URL Pattern:设置匹配公式。
- Test URL:设置测试的网址。
- Save Changes:将条件替换为Rule Editor的第一行匹配条件内容。
- Match only once表示只匹配一次,Save为更改规则后,更新规则内容。
- Rule Editor第二行,设置返回。
- 200_FiddlerGif.dat(返回一个gif图片给客户端)、200_SimpleHTML.dat(返回一个简单的HTML报文)。
- 200_TransPixel.dat(返回一个内置的位图)、204_NoContent.dat(返回状态码为204且无内容的报文)。
- 302_Redirect.dat(即将重定向到Fiddler官网)、303_RedirectWithGet.dat(即将重定向到Fiddler官网)。
- 304_NotModified.dat(返回状态码为304,且长度为0的报文)。
- 307_RedirectWithMethod.dat(返回状态码为307的响应报文)。
- 401_AuthBasic.dat(返回状态码为401,且基础权限验证失败的响应报文,用户没有访问权限,需身份认证)。
- 401_AuthDigest.dat(返回状态码为401,且摘要权限验证失败的响应报文)。
- 403_AuthDeny.dat(返回状态码403,没有访问权限错误信息的响应报文)。
- 404_Plain.dat(返回HTML文件不存在的响应报文)。
- 407_ProxyAuthBasic.dat(返回一个代理服务未通过基础权限认证的响应报文)。
- 502_Unreachable.dat(返回一个状态码为502,并且服务器不可用的响应报文)。
- *bpu(为当前匹配的请求添加请求断点)。
- *bpafter(为当前匹配的请求添加响应断点)、*exit(停止正在处理的规则)。
- *drop(不发送响应,马上关闭客户端连接,TCP/I层角度看,该连接是优雅断开的,向客户端返回FIN)。
- *reset(不发送响应,马上关闭客户端连接,TCP/I层角度看,该连接是粗暴断开的,向客户端返回RST)。
- *delay:100(为当前匹配的请求添加100毫秒的延迟,支持依据需求,将该延迟改为想要延迟的具体时间)。
- *ReplyWithTunnel(使用隧道进行回复)。
- *CORSPreflightAllow
- 可确保服务器对CORS标准知情,保护不支持CORS的旧服务器。
- 借助Access-Control-Allow-Origin响应头字段允许跨域AJAX。
- 非简单请求CORS机制跨域会首先进行preflight(Options请求),该请求成功后才发送真正的请求。
- *flag:ui-backcolor=#FFD700(将当前匹配的请求在Web请求列表中添加背景颜色,默认黄色背景)。
- *header:HeaderName=NewValue(添加头字段,字段名HeaderName,字段值NewValue,可依据需求设置)。
- *redir:http://www.example.com(返回指向目标URL的307重定向响应,前缀确保客户端知道请求发送到哪)。
- *script:FiddlerScriptFunctionName(为匹配的请求调用FiddlerScript中指定的函数)。
- http://www.example.com(将该地址的响应作为客户端响应,有效地把请求重定向到指定URL)。
- Create New Response…(输入文件名,在Fiddler指定的目录下查找该文件信息)。
- Find a file…(选择本地一个文件,例如文本、图片等,作为响应返回给客户端)。
(2) Rule右键菜单
- Remote(移除规则)、Promote(将选中的规则向上移动)、Demote(将选中的规则向下移动)。
- Clone(克隆一个选中的规则到规则框中)、Set Latency(设置响应的延迟时间,单位为毫秒)。
- Set Comments(设置注释来提示当前规则的作用)、Edit Response(编辑当前规则设置的响应文件)。
- Generate File(生成响应文件)、Edit File With(将匹配到的响应保存为本地文件并用编辑器打开)。
- Open Url(使用默认的网页浏览器打开匹配条件中的网址)、Find(规则框中寻找字符串,高亮显示)。
- Export All(导出当前规则为farx的文件)。
(3) 访问新浪实战
- 建立一个规则,访问新浪官网,使其返回的是百度搜索页面。
4-4 Composer
- Composer
- 支持手动构建和发送HTTP、HTTPS和FTP请求,点击Execute按钮将请求发送到服务器端。
- 可以从Web会话列表中拖拽会话到Composer选项卡中,将该Session的请求复制到用户界面。
(1) Parsed
- 支持为每个请求组件使用独立的输入框构建请求。
- HTTP方法:GET、POST、PUT、HEAD、TRACE、DELETE等。
- 请求的绝对URL,必须以
http://
、https://
或ftp://
开头。 - 指定请求的HTTP协议版本,通常是HTTP/1.1。
- 若当前的请求方法不支持请求体,例如GET方法,则在请求体输入框输入文本时会显示红色背景。
(2) Upload file
- Parsed选项卡上有一个Upload file上传文件按钮。
- 请求方法是PUT只能选一个文件,请求方法是POST则可以选多个文件。
- 上传文件后(指定PUT或POST),Composer可创建包含适当格式的请求。
- 使用PUT方法执行文件上传时,请求体通常包含文件的原始内容。
- 使用POST方法上传时,通常会用Content-Type值格式化请求体。
- 请求执行时,请求体中的所有
@INCLUDE
引用会替换成指定文件的内容。
(3) Raw
- 提供了简单的文本框,可以在该文本框中输入合适的HTTP请求。
- 如果输入的请求文本格式不对,点击Execute按钮不会发起请求。
- Raw选项卡使用较少,多以Parsed选项卡为准。
(4) Scratchpad
- 用于存储请求集合,如果要发出请求,选择对应的请求文本,并点击Execute按钮执行即可。
(5) Options
- Inspect Session:勾选该项,点击Execute按钮执行请求时会跳转到Inspectors选项卡,可查看请求结果。
- Fix Content- Length header
- 控制Composer是否自动添加或修改Content-Length请求头,表示请求体的大小。
- 在多数情况下,缺少适当的Content-Length请求会Hang住或导致HTTP响应出错。
- Follow Redirects
- 控制Composer是否自动使用响应的Location头,遵循HTTP/3xx重定向。
- 如果勾选该项,Composer选项卡在失败之前最多会执行10次3xx重定向。
- Automatically Authenticate
- 控制Composer是否自动响应服务器的HTTP/401或HTTP/407认证需求。
- 如果勾选该项,会使用Fiddler所运行账户的Windows证书自动响应这些问题。
- 且需要提供不同的证书集,设置Preferences的fiddler.composer.autoauth值。
- 若服务器需要的证书和提供方的证书不同,请求会失败,通常返回响应HTTP/403。
- Tear off
- 从监控面板窗口删除Composer选项卡,并将其作为独立的悬浮窗口打开查看。
- 勾选Inspect Session,点击按钮,支持同时查看Composer和Inspector选项卡。
(6) 序列化请求
- 模拟某些场景,发送多个请求,这些请求除了某个有序的数字外,其他完全相同。
- 例如Flask实现的一个简单网页展示图片信息程序,图片名称基本一致,序号不同。
- 利用Fiddler的发送序列化请求,逐一访问image-001.png到image-007.png的图片。
- 启动Flask小程序,在Composer中输入URL地址,序号部分使用
#
号代替。 - 本地小程序,URL地址为:http://127.0.0.1:5000/image/image-#.png。
- 点击Execute按钮执行请求,此时Fiddler要求输入序号开始值,输入001。
- OK->再输入序号结束值007->OK->Fiddler会自动计算序列且发起请求。
- 启动Flask小程序,在Composer中输入URL地址,序号部分使用
✧ 程序目录
1 |
|
✧ image.py
1 |
|
✧ image.html
1 |
|
4-5 Orchestra
- Orchestra
- 抓取APP流量原理:APP连接到Orchestra服务后,Orchestra正常转发流量的同时再复制一份流量给Fiddler。
- Fiddler->Orchestra->
Download Fiddler Orchestra client for Windows, Mac and Linux
->解压文件。 - 在当前解压的目录中,鼠标右键Git Bash Here->输入
dotnet FiddlerOrchestra.Client.NetCore.dll
回车。 - 若显示以下内容,则下载安装.NET Core 2.0->另起一个Git Bash Here,输入命令回车,启动Orchestra客户端。
1 |
|
(1) 连接客户端
- 管理员身份运行Fiddler->Orchestra->点Start启动监听->配置Orchestra客户端,访问http://localhost:8800。
- Orchestra Connection->IP Address为127.0.0.1,Port为3636,Private key即Fiddler中的密钥->点击Connect。
- Fiddler与Orchestra客户端连接成功,则Private key无法修改,Connect变Disconnect,Orchestra界面显示连接详细。
(2) 配置证书下载
- http://localhost:8800->HTTPS Root Certificate->Generate root certificate as PKCS#12 file->创建及下载证书。
- 将下载的证书
fiddler-orchestra-root-certificate.p12
存放到指定位置->HTTPS Root Certificate页面进行加载。 - 点击Load root certificate from PKCS#12 file->页面的顶部将显示
Success:HTTPS root certificate is loaded
。
(3) 启动全部服务
- 启动全部服务:Proxy->勾选Allow remote clients to connect->Start。
- HTTP Reverse Proxy->勾选Allow remote clients to connect->Start。
- HTTPS Reverse Proxy->
File path
输入证书fiddler-orchestra-root-certificate.p12
的路径->Start。 - 常用的代理服务器
- Proxy
- 正向代理,是客户端与目标服务器之间的中间代理服务器。
- 将客户端请求转发到目标服务器,并将响应返回给客户端。
- 例如:某些国家因特网接入受限,或被限制访问某些网站时,使用正向代理绕过封锁。
- HTTP Reverse Proxy
- 反向代理,是服务器端的代理服务器。
- 将客户端请求转发到内部网络的后端服务器,然后将响应返回给客户端。
- 隐藏在服务器端,由服务器的管理员配置,客户端无法感知代理的存在。
- HTTP反向代理常用于负载均衡、缓存加速和安全防护等方面。
- HTTPS Reverse Proxy
- SSL/TLS反向代理,是一种基于加密的反向代理,用于安全传输Web页面和其他数据。
- 与HTTP反向代理类似,但在连接客户端和服务器之间的通信时采用SSL/TLS协议加密。
- 有效地保护Web接口的安全性,避免敏感信息,如用户名和密码等,在传输过程中被窃取和篡改。
- Proxy
(4) 与手机端连接
- 点击Fiddler Orchestra Beta选项卡中的Download Fiddler Orchestra client for Android,下载安装到手机端。
- Fiddler->菜单栏->Tools->Options->Connections选项中的Allow remote computers to connect保持勾选。
- Fiddler Orchestra Beta客户端与手机端建立连接,要求客户端和手机端在同一局域网内(使用相同WiFi网络)。
- 打开手机端的Fiddler Orchestra Beta客户端,在Orchestra Connection页面分别输入IP地址、端口号、Key值。
- IP地址:Fiddler的工具面板Online查看到的IP地址,也可命令窗口输入
ipconfig
查看IPv4地址。 - 端口号:这里应该是指http://localhost:8800的Proxy页面设置的
Listen on port
,默认是8866。 - Key值
- 电脑端的Fiddler Orchestra Beta客户端中生成的SSL密钥(具体在哪没找到,与手机端连接失败)。
- Fiddler->菜单栏->Tools->Options->HTTPS->certificates generated by CertEnroll engine。
- IP地址:Fiddler的工具面板Online查看到的IP地址,也可命令窗口输入
- 手机端与电脑端建立连接,除了使用USB数据线进行操作,还支持无线连接(保证两端处于同一WiFi环境下)。
4-6 FiddlerScript
- FiddlerScript
- Fiddler上的一个addon插件,或说是一个hook文件,实现了
Go to
的九大事件。 - 很多设置菜单,也是在这个脚本中编写的,支持自定义修改,例如User-Agents。
- Fiddler上的一个addon插件,或说是一个hook文件,实现了
(1) 语言模式
- FiddlerScript有C#和JScript.NET这两种开发语言模式,可依据偏好设置。
- 切换语言:菜单栏->Tools->Options->Scripting->Language一栏可选。
- 对应Fiddler安装目录Scripts文件夹中的SampleRules.cs(C#)和SampleRules.js(JScript.NET)。
(2) 编辑模式
- 监控面板的FiddlerScript选项卡,支持文本编辑,
Save Script
保存文本。 - 菜单栏->Rules->Customize Rules->弹窗Fiddler ScriptEditor进行编辑。
- 若脚本写错,或改乱无法正确保存,可在菜单栏->Tools->Reset Script重置脚本内容。
4-7 Log
- Log
- Fiddler的Log选项卡收集日志消息字符串,这些字符串由扩展、FiddlerScript或Fiddler本身生成。
- 记录应用事件(保存为SAZ文件),以及系统事件的响应通知,例如:系统的网络连接丢失或恢复。
- 在Log选项卡页面,鼠标右键显示的一些命令说明。
- Copy:把选中的文本复制到剪贴板。
- Send to Session List:将事件日志作为会话保存到Web会话列表。
- Save to File:将当前日志保存到磁盘文件中,以纯文本(.txt)或富文本(.rtf)格式保存。
- Clear:清空Log选项卡中的所有文本。
- Log选项卡支持简单的宏命令,可以从QuickExec命令输入栏中调用这些命令。
log @Log.Clear
:清空日志。log @Log.Save
:在Web会话列表中生成新的会话,响应体包含Log选项卡的文本内容。log "@Log.Export(\"filename\")"
:将Log选项卡文本保存到系统桌面的.rtf文件中。
4-8 Filters
- Filters
- 过滤器提供了非常方便地将简单的过滤规则,应用到正在捕捉的数据会话流上的方法。
- Filters上的所有操作都可以在FiddlerScript中模拟,简单任务直接使用过滤满足即可。
- 功能包括:隐藏/显示会话、添加会话标识、断点调试、阻断发送请求、修改数据头等。
- 过滤器还可以为隐藏的会话提供代理功能,即使在Web会话列表中并没有显示这些会话。
- Use Filters:是否开启过滤器。
- Actions:支持把当前选中的过滤器作为过滤集,并对之前捕捉到的数据流应用当前过滤规则。
- Run Filterset now:立即运行过滤器设置。
- Load Filterset:加载过滤器设置。
- Save Filterset:保存过滤器设置。
- 修改过滤器后,需执行Actions的
Run Filterset now
按钮,使修改后的过滤器配置立即生效。
(1) Hosts
- 区域过滤(Zone Filter)
- Show only Intranet Hosts:只列出属于局域网的会话。
- Show only Internet Hosts:只列出属于互联网的会话。
- 主机过滤(Host Filter)
- Hide the following Hosts:隐藏Hosts输入框输入的主机。
- Show only the following Hosts:仅显示Hosts输入框输入的主机。
- Flag the following Hosts:在Web会话列表中加粗显示Hosts输入框输入的主机所有会话。
- Hosts输入框不会通过通配符自动匹配子域名,若设置了
Show only the following Hosts
。 - 并且列表中只有
xxx.com
,则无法看到www.xxx.com
网站下的数据流,需改成*.xxx.com
。 - 若想看根目录
xxx.com
下的数据流,将通配符改成*xxx.com
的形式,多个host用分号隔开。
(2) Client Process
- 客户端进程用于控制进程的数据流,应用程序只有和Fiddler运行在相同的主机时才能做出判断。
- Show only traffic from:只显示选中进程下的数据流(注意:下拉列表包含了当前系统中,正在运行的所有进程)。
- Show only Internet Explorer:只显示进程名以IE开头,或请求的User-Agent包含
compatible; MSIE
的数据流。 - Hide traffic from Service Host:隐藏来自进程
svchost.exe
的数据流,该进程是一个系统进程。
(3) Request Headers
- Show only if URL contains:支持基于URL隐藏请求,仅显示感兴趣的请求。
- Hide if URL contains
- 支持基于URL显示请求,仅隐藏某些请求,可以使用前缀
EXACT
来限定大小写敏感。 EXACT:www.example.com/api
,REGEX:(?insx).*\.(gif|png|jpg)$
只显示图片。
- 支持基于URL显示请求,仅隐藏某些请求,可以使用前缀
- Flag requests with headers:支持指定HTTP请求头名称,如果会话列表中存在,则加粗显示。
- Delete request headers:支持指定HTTP请求头名称,如果包含该请求头,那么删除该请求头。
- Set request header:支持创建指定名称和取值的HTTP请求头,或将请求头更新为指定的取值。
(4) Breakpoints
- 断点选项框支持对包含给定属性的请求或响应设置断点。
- Break request on POST:为所有的POST请求设置断点。
- Break request on GET with query string:为所有方法为GET且URL包含查询串的请求设置断点。
- Break on XMLHttpRequest:对所有能够确定是通过XMLHttpRequest对象发送的请求设置断点。
- 通过查找请求头是否为
X-Requested-With
来实现的,该请求头由jQuery框架添加。 - 还会检查请求头是否为
X-Download-Initiator
,IE10及更高版本可配置该请求头。
- 通过查找请求头是否为
- Break response on Content-Type:为所有响应头Content-Type中包含指定文本的响应设置断点。
(5) Response Status Code
- Hide success(2xx):隐藏状态码在200到299之间的响应。
- Hide non-2xx:指隐藏状态码不在200到299之间的响应。
- Hide Authentication demands(401,407):隐藏状态码为401,和407的响应。
- Hide redirects(300,301,302,303,307):隐藏对请求进行重定向的响应。
- Hide Not Modified(304):隐藏请求中状态码为304的响应,表示客户端缓存的实体是有效的。
(6) Response Type and Size
- 下拉框选项
- Show all Content-Types(显示所有响应,不过滤)、Show only IMAGE/*(只显示图片类型的响应)。
- Show only HTML(只显示HTML文档的响应)、Show only TEXT/CSS(只显示CSS层叠样式表的响应)。
- Show only SCRIPTS(只显示脚本类型的响应)、Show only XML(只显示XML类型的响应)。
- Show only JSON(只显示JSON类型的响应)、Hide IMAGE/*(代表只隐藏图片类型的响应)。
- 其他勾选框
- Hide smaller than:隐藏响应体小于指定字节数的响应。
- Hide larger than:隐藏响应体大于指定字节数的响应。
- Time HeatMap:基于服务器返回给定响应所需的时间为每个会话设置背景颜色。
- Block scriptfile:如果返回的响应头指定Content-Type为脚本,返回404响应。
- Block imagefile:如果返回的响应头指定Content-Type为图像,返回404响应。
- Block SWF file:如果返回的响应头指定Content-Type为Flash,返回404响应(即application/x-shockwave-flash)。
- Block CSS file:如果返回的响应头指定Content-Type为CSS,返回404响应。
(7) Response Headers
- Flag responses that set cookies:以粗体显示所有响应头包含Set-Cookie的响应。
- Flag responses with headers:支持指定HTTP响应头名称,如果响应中该HTTP头存在,以粗体显示。
- Delete response headers:支持指定HTTP响应头名称,如果存在该响应头名称,会从响应头中删去。
- Set response header:支持创建或更新HTTP响应头,可自定义设置取值。
4-9 TimeLine
- TimeLine
- 支持使用瀑布模型查看选中的会话,对于性能分析和理解请求之间的关联很有帮助。
- 主要内容即数据流视图,上方显示标题,显示传输时间轴模式(Transfer Timeline)。
- 右上方有一个Help帮助链接,点击该链接可在浏览器中打开关于该功能的帮助信息。
- 鼠标右键选项
- AutoScale Chart:自动缩放图表,水平自适应调节图形宽度。
- Copy Chart:复制图表,支持将图形以位图格式拷贝到剪贴板。
- Mode:控制图形显示模式。
- Timeline:时间轴模式,通过时间轴线条显示每个会话,用彩色条表示时间段。
- Client Pipe Map:客户端管道模式。
- 显示每个时间轴的客户端进程和Fiddler之间的连接。
- 多个Session之间重用的连接将会以多种彩色条显示。
- Server Pipe Map:服务端管道模式。
- 显示每个时间轴的Fiddler和上游服务器之间的连接。
- 多个Session之间重用的连接将会以多种彩色条显示。
- 客户端和服务端管道模式显示客户端和服务器之间如何复用连接,有助于判断性能瓶颈。
- 时间轴选项卡不显示任何CONNECT通道,即在会话列表中Host显示为Tunnel to的会话。
- 因为通道的数据流可能是模糊的,也可能是由一个或多个解密的HTTPS Web会话项跟踪。
(1) 传输时间轴
- 每行显示一个会话,最左边是文件名,将鼠标放到任意行上方,底部的状态栏将显示该项的更多信息。
- 双击某行会跳转到Inspectors选项卡,显示该会话的详细信息。
- 如果双击的同时按SHIFT键,会在新的窗口显示该会话的信息。
- 条形栏颜色由响应的MIME类型决定:图像浅绿色,JavaScript深绿色,CSS紫色,其他类型蓝色。
- 传输条形栏在客户端开始向Fiddler发送请求时开始绘制,当发送回客户端的响应收到后完成绘制。
- 条形栏中黑色竖线表示接收到服务端响应的第一个字节时间,前面的两个小圆圈表示会话是否是复用连接进行传输。
- 绿色的圆圈表示连接是复用的,红色的圆圈表示连接是新创建的。
- 上方的圆圈表示客户端到Fiddler之间的连接,而下方的圆圈表示Fiddler到服务器之间的连接。
- 条形栏用阴影线表示缓存模式,HTTP响应被Fiddler缓存,会话在完成前不会开始下载图片,缓存将改变瀑布模型。
- 条形栏用平滑线表示流模式,Fiddler将数据流式地转发给客户端,Stream模式每次下载的数据将直接返回给客户端。
- 条形栏后面的图标说明
- 红色X图标:表示服务器发送了请求头
Connection: close
。 - 对于HTTP/1.0类型的响应,指发送请求头
Connection: Keep-Alive
失败,阻止后续请求重用该连接。 - 灰色箭头:表示服务器响应是状态码302重定向。
- 红色感叹号:表示服务器返回4xx,或5xx错误码。
- 红色X图标:表示服务器发送了请求头
✧ 缓存模式
✧ 流模式
✧ 图标说明
(2) 客户端管道
- Client Pipe Map模式下,显示每个时间轴的客户端进程和Fiddler之间的连接。
- 左侧显示连接标识符,包括:进程名称、进程ID、客户端的端口号。
- 例如:连接标识符360se:7668(p58566),客户端为360se,进程编号7668,端口号58566。
- 同一进程同一端口号的会话,将在同一条形栏中显示,同一进程不同端口号则多个栏目显示。
(3) 服务端管道
- Server Pipe Map模式下,显示每个时间轴的Fiddler和上游服务器之间的连接。
- 左侧显示连接标识符,包括:Fiddler端的端口号、目标主机名。
- 例如:p58571->localhost:4000,Fiddler使用端口58571连接到localhost的4000端口。
- 一条形栏代表一个连接,一个连接支持被多个会话复用,下图选择的会话都属于两两复用。
(4) 做性能分析
- 时间轴是一种对应用程序使用网络的富信息视图表示。
- 依据条形栏的长短可以找出响应快慢的请求:越短响应越快,越长响应越慢。
- 浏览器开启线程数有限,默认请求数为6个,由于连接限制也会带来性能瓶颈。
- 若有红色X图标,表示服务器发送了请求头
Connection: close
,阻止后续请求重用该连接。
5 状态面板
- 状态面板
- 启用/禁用抓包Capturing:表示正在抓包,鼠标单击图标,切换成空白则表示禁用抓包。
- 点击,选择抓取HTTP数据报文的选项。
- All Processes:抓取所有进程的报文。
- Web Browsers:仅抓取浏览器进程的报文。
- Non-Browser:仅抓取非浏览器进程的报文,国内一些非主流浏览器可能不会被当做浏览器进程。
- Hide All:过滤掉所有进程的HTTP报文,和禁用抓包效果一致,即在会话列表中不显示任何会话。
- 断点:调试器的功能之一,支持让程序中断在需要的地方,从而方便其分析。
- 全局请求断点:将用户请求发送给服务器之前,打一个全局请求断点,可对请求进行修改。
- 全局响应断点:将服务器的响应发送到客户端之前,打一个全局响应断点,可以修改响应。
- 取消断点
- 逐个释放断点:选中被打断点的请求,点击监控面板中的按钮。
- 释放全部断点:点击工具面板中的恢复断点执行按钮,即可释放全部断点。
- 会话数,显示了当前抓取的总会话数(右侧数值),以及选中的会话数(左侧数值)。
- 状态信息
- ,默认显示选中的第一个会话的URL。
- 还支持显示操作结果的概要信息,例如:加载文件、保存SAZ文件等。
6 命令输入栏
- 命令输入栏
- Fiddler处于活动状态时,
Alt+Q
快捷键可以把光标快速定位到QuickExec命令输入框。 - Fiddler没有处于活动状态时,使用
CTRL+ALT+F
激活窗口,再使用Alt+Q
快捷键定位。 - 当光标定位在QuickExec命令输入框时,
CTRL+I
键会把选中的第一个会话URL插入到命令输入框中。 - 还可以选中多个会话,一起拖动到QuickExec命令输入框中释放,此时选中的会话URL都将插入其中。
- 支持从系统任意位置处拖动一个或多个文件到QuickExec命令输入框中释放,输入框将显示文件路径。
- 在QuickExec命令输入框中输入
help
回车,将自动打开浏览器,关于QuickExce的在线命令帮助文档。start
开启抓包,stop
停止抓包,quit
关闭Fiddler。cls
或clear
清理会话列表,hide
将Fiddler最小化到任务栏的托盘上。- 文本查找:
?searchtext
,高亮显示会话列表包含searchtext
文本的会话。 - 匹配主机:
@host
,高亮显示会话列表中请求主机名包含host
的会话,例如@sougo.com
。 - 状态或方法过滤:
=404
或=POST
,高亮显示会话列表中等于指定状态码或指定方法的会话。 - 响应大小过滤:
>size
,高亮显示会话列表中响应大小大于size
字节的会话,<size
反之。 - 执行DNS查找:
!dns www.baidu.com
,对百度首页执行DNS查找并在Log选项卡上显示结果。 - 突出显示会话:
bold sometext
,后续抓到包含sometext
字符串的会话加粗显示,bold
回车取消。 - 断点
bpv method
,将在抓到方法为method
的会话上添加请求断点,bpv
回车取消操作。bps status
,将在抓到状态为status
的会话上添加响应断点,bps
回车取消操作。bpu sometext
,将在抓到包含sometext
字符串的URI会话上添加请求断点,bpu
回车取消操作。bpafter sometext
,将在抓到包含sometext
字符串的会话上添加响应断点,bpafter
回车取消。g
或go
,恢复所有断点会话。
- 过滤
select sometext
,将选择响应Content-Type头包含指定的sometext
字符串的任何会话。- 支持其他过滤方式,提供两个内置变量
@Request
和@Response
对象,支持过滤其他头字段。 - 例:
select @Request.User-Agent Mozilla
选择所有用户User-Agent包含Mozilia的会话。
- 会话备份:
dump
,将所有会话转储到系统盘中的zip存档,路径在状态面板的状态信息栏中可见。 - 替换URL:
urlreplace str1 str2
,将抓到会话的URL中str1
替换成str2
,urlreplace
回车取消。 - 监听额外端口:
!listen *PORT [CERTHOSTNAME]*
,例如!listen 8889
、!listen 4000 localhost
。 - 条件隐藏:
allbut text
或keeponly text
,隐藏响应会话的Content-Type中未包含text
的所有会话。
- Fiddler处于活动状态时,
7 应用快捷键
- 应用快捷键
- 任何情况下都可使用系统级别的热键
Ctrl + Alt + F
激活Fiddler,还提供了其他热键(略)。 - 全局热键支持自定义修改,菜单栏->Tools->Options->General->Systemwide Hostkey。
- 任何情况下都可使用系统级别的热键
8 Fiddler插件
- Fiddler插件
- https://www.telerik.com/fiddler/add-ons:提供了很多常用的Fiddler插件。
- 性能相关:neXpert(性能报告生成器,免费)、StresStimulus(负载能力测试扩展支持,试用)。
- 安全相关
- x5s(评估网站漏洞,包括跨站脚本错误,开源)、Ammonite(监测常见的网站漏洞,试用)。
- Watcher(被动安全审计器,开源)、intruder21(支持对Web应用程序执行模糊测试,免费)。
- 其他插件
- Javascript Formatter(可格式化JavaScript)、Gallery(显示选中会话中的所有图片)。
- Traffic Differ(对比捕获的两套流量)、PDF View(PDF检查器,生成PDF文件预览)。
- Content Blocker(内容拦截器)、Show Image Bloat(扫描图像文件以查找不必要的嵌入元数据)。
- Willow(统计数据包、修改Host、请求重定向、编码转换、低网速模拟、慢速网络模拟可视化等)。
8-1 Willow
- Willow
- 官网:http://qzonetouch.github.io/commonWidget/willow。
- 插件功能
- 修改Host、断点调试、统计数据包、编码转换、过滤HTTP请求。
- 环境切换、请求重定向、低网速模拟、慢速网络模拟可视化等等。
- 点击当前版本进行下载,解压
WillowSetup-1.5.2.zip
,安装插件前先关闭Fiddler软件。 - 使用Willow创建三个项目,分别为开发/测试/正式环境,通过项目复选框可快速在三个环境之间进行切换。
- 真实项目中可能有几十上百个规则,分环境管理十分方便,避免了手动点击规则进行环境切换的繁杂操作。
8-2 Gallery
- Gallery
- 下载:https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlergallerysetup.exe。
- 支持显示所选会话中的所有图像缩略图,还提供了带有可选图像效果的全屏幻灯片显示模式。
- 选多个响应是图片的sessions会话,Gallery选项卡将以缩略图形式展示选中的所有会话图片。
8-3 PDF View
- PDF View
- 下载:https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlerpdfviewsetup.exe。
- 浏览器访问一个在线的PDF文件地址,打开Fiddler,会话面板中找到该请求,查看监控面板。
- 选择Inspectors选项卡,点击响应中的PDFView选项卡就可以预览了(个人感觉插件不太好用)。
8-4 Traffic Differ
- Traffic Differ
- 下载:https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlersazdiffsetup.exe。
- 现实开发中,网站优化前保存一完整的会话序列,优化后再保存一个,通过对比看优化作用。
8-5 Show Image Bloat
- Show Image Bloat
- 下载:https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlershowimagebloat.exe。
- 查找不必要的嵌入元数据,这些数据通常是编辑的过程产物,会增大文件大小并降低网站的速度。
- 菜单栏->Rules->单击Show Image Bloat,开启扫描图像文件,以查找不必要的嵌入元数据功能。
8-6 Javascript Formatter
- Javascript Formatter
- 下载:https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlerjsformatsetup.exe。
- 支持格式化JavaScript,会话面板中选择一个JavaScript会话,右键点Make JavaScript Pretty。
- 右侧监控面板->Inspectors选项卡->在响应部分选SyntaxView->此时压缩的Js代码已格式化。
- 或菜单栏->Rules->单击Make JavaScript Pretty,开启当前选中的JavaScript会话格式化功能。
9 Fiddler抓包
- Fiddler抓包
- HTTPS,Hyper Text Transfer Protocol over SecureSocket Layer,HTTP+TLS/SSL协议构建。
- 通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密、身份认证的网络协议。
- 设计目标:数据保密性、数据完整性、身份校验安全性,因此,Fiddler抓包的关键点就是证书。
- 抓包原理
- Fiddler是浏览器的服务器,也是服务器的客户端。
- 没有Fiddler时,浏览器拥有的公有证书来自服务器,服务器保存私有证书。
- 服务器使用私有证书对数据进行加密,浏览器使用公有证书对数据进行解密。
- Fiddler作为代理时,客户端拥有的公有证书来自Fiddler,Fiddler同时拥有私有和公有证书。
- 请求:浏览器使用Fiddler公有证书将数据加密,发送给Fiddler。
- Fiddler使用私有证书解密,将内容采用服务器的公有证书再次加密。
- 内容加密后再发送给服务器,服务器使用自己的私有证书再进行解密。
- 响应:服务器使用私有证书对响应数据加密,然后发送给Fiddler。
- Fiddler将收到的数据使用服务器的公有证书解密,再次使用自己的私有证书加密。
- 加密后发送给浏览器,浏览器收到后使用Fiddler的公有证书进行解密,展示内容。
- Fiddler是浏览器的服务器,也是服务器的客户端。
9-1 PC端抓包
- PC端抓包
- 配置及安装证书:菜单栏->Tools->Options->HTTPS。
- 勾选Capture HTTPS CONNECTs、Decrypt HTTPs traffic。
- Capture HTTPS CONNECTs:是否要抓取HTTPS连接。
- HTTPS连接默认隐藏:菜单栏->Rules->Hide CONNECTs是否被勾选了。
- Decrypt HTTPs traffic:对接收到的HTTPS流量尝试使用Fiddler证书解码。
- 菜单栏->Tools->Options->HTTPS->Actions->Open Windows Certificate Manager。
- certmgr->操作->查找证书->包含Fiddler->立即查找,若有证书说明可以抓HTTPS包。
9-2 APP抓包
- APP抓包
- 配置Fiddler:菜单栏->Tools->Options->Connections->Allow remote computers to connect。
- 弹窗Enabling Remote Access->确定,USB线连接手机端和电脑端,同时开启手机端的开发者选项。
- Fiddler查看工具面板中Online的IP地址,确保电脑和手机的WiFi在同一局域网下,开启手机端代理。
- 进入手机端的WiFi设置->代理改为手动,主机名是Online查看到的IP地址,端口则为8888(自定义)。
- 打开手机端的浏览器,输入Online的IP地址+端口8888,回车下载FiddlerRoot certificate,安装证书。
- 注:对于现在的手机端APP,大多使用SSL Pinning技术,Fiddler已很难抓取到HTTPS包了。
- Android:使用Xposed Magisk模块或Frida等工具来绕过SSL Pinning技术。
- iOS:采用插入证书、重签名、Frida Hook的方式来绕过SSL Pinning技术。
- 上述方法都具风险性,需谨慎使用并遵守法律法规,可在APP中集成调试工具进行调试。
Fiddler 面板
https://stitch-top.github.io/2022/03/02/ce-shi-gong-ju/tt02-fiddler/tt01-fiddler-mian-ban/