Fiddler
转摘自:玲虫师
1|0一、Fiddler简介
Fiddler 是一款免费的互联网调试代理工具,原版软件无中文版,但有汉化版。它不仅可以抓取你电脑甚至手机与互联网的各种 http 通讯,同时还能查看他们进行分析。在必要的时候,你甚至可以修改(伪造)某些通讯实现前后端开发者调试的作用。其他作用比如解密 https 协议会话,测试网站的性能以及开发和使用第三方插件。
它支持所有操作系统和浏览器,但一般对 win 平台支持较好.
这是界面。具体操作之后再讲。先说Fiddler的工作原理。
Fiiddler 为什么能抓取你跟服务器交互的协议包呢?首先看这么一个图:
总的来说原理很简单,看完图之后大家应该有了很直观的了解。
打开fiddler的时候,它会自动给你的电脑创建一个系统代理,默认监听端口为8888。Fiddler作为一个客户端和服务器之间的桥梁,可以获得它们之间通信的信息,这些信息进行解析之后以会话的形式呈现给我们。
代理了之后会不会跟平时正常的上网有区别?其实你感觉不到有什么区别的,就是正常的访问就可以了。唯一的区别是把这些访问都显示在了fiddler的会话面板上。我们把一个个会话称为包,正是一个个数据包的发送和接收组成了我们的网络访问。
担心系统代理设置了回不来?没关系,fiddler在关闭的时候会自动取消这个代理,恢复系统原貌。
2|0二、不同代理模式的区别
Fiddler有不同的代理模式,分为以下两种:
- 流模式(Streaming)
- 缓冲模式(Buffering)
流模式可以理解为一种实时通信的模式,有请求就有返回,也就是实时返回。
缓冲模式是等所有请求都到了再一起返回,也就是等所有数据都准备好了以后才返回给客户端。
流模式更接近于浏览器本身真实的行为。
而缓冲模式可以控制最后的服务器响应。
在实际使用中我们可以根据具体的实际情况来选择代理模式。
在界面上的切换操作很简单,就是一个按钮的按下的弹起的区别。
3|0三、介绍及界面概述
3|13.1 Fiddler 界面概述
3|23.2 翻译
3.2.1 主菜单
3.2.2 快捷菜单
3.2.3 会话列表
3.2.4 会话右键
3.2.5 选项卡
![]() |
Statidtics--->统计,对选中多个Sessions统计;
Inspectors--->检查,请求头和响应体 AutoResponder--->重新定向 Composer---> 模拟进行发送 FiddlerScript--->脚本 Log--->日志 Fiters--->过滤 Timeline--->瀑布流时间图 |
3.2.6 请求查看器
3.2.7 响应查看器
4|0四、Fiddler抓web网站请求
4|14.1手动设置方法一
Tools--->WinINET Options--->连接--->局域网设置--->代理服务器勾选后“高级”--->服务器地址:127.0.0.1,端口8888;
4|24.2 手动设置方法二
①、File--->勾选Capture Traffic;
②、点击左下角Capturing进行选择或取消;
4|34.3 自动设置步骤
Tools---> Options--->Connections--->勾选Act as system proxy on startup(作为系统启动代理)
5|0五、浏览器内核(理解)
浏览器千千万,使用fiddler抓包的时候浏览器该如何选择呢?
我们的选择原则是保证有几种不同浏览器的内核。
国内很多的双核浏览器的其中一核便是 Trident,美其名曰 "兼容模式"。
代表: IE、傲游、世界之窗浏览器、Avant、腾讯TT、猎豹安全浏览器、360极速浏览器、百度浏览器等。
Window10 发布后,IE 将其内置浏览器命名为 Edge,Edge 最显著的特点就是新内核 EdgeHTML。
(2)Gecko(firefox)
Gecko(Firefox 内核): Mozilla FireFox(火狐浏览器) 采用该内核,Gecko 的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。 可惜这几年已经没落了, 比如 打开速度慢、升级频繁、猪一样的队友flash、神一样的对手chrome。
(3) webkit(Safari)
Safari 是苹果公司开发的浏览器,所用浏览器内核的名称是大名鼎鼎的 WebKit。
现在很多人错误地把 webkit 叫做 chrome内核(即使 chrome内核已经是 blink 了),苹果感觉像被别人抢了媳妇,都哭晕再厕所里面了。
代表浏览器:傲游浏览器3、 Apple Safari (Win/Mac/iPhone/iPad)、Symbian手机浏览器、Android 默认浏览器,
(4) Chromium/Blink(chrome)
在 Chromium 项目中研发 Blink 渲染引擎(即浏览器核心),内置于 Chrome 浏览器之中。Blink 其实是 WebKit 的分支。大部分国产浏览器最新版都采用Blink内核。二次开发。
(5) Presto(Opera)
Presto(已经废弃) 是挪威产浏览器 opera 的 "前任" 内核,为何说是 "前任",因为最新的 opera 浏览器早已将之抛弃从而投入到了谷歌怀抱了。
6|0六、HTTPS以及Fiddler抓取HTTPS协议
6|16.1 浅谈HTTPS
我们都知道HTTP并非是安全传输,在HTTP基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的。目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度、谷歌等。HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。网上有诸多资料,有些写得过于晦涩难懂,尤其是需要密码学的一些知识。我做了一下简单的整理,刨除复杂的底层实现,单从理解SSL协议的角度宏观上认识一下HTTPS。一言以弊之,HTTPS是通过一次非对称加密算法(如RSA算法)进行了协商密钥的生成与交换,然后在后续通信过程中就使用协商密钥进行对称加密通信。HTTPS协议传输的原理和过程简图如下所示:
一共有8个步骤,我们针对每一步,具体看看发生了什么事:
6|26.2 Fiddler抓取HTTPS协议原理
我们都知道,Fiddler是个很好的代理工具,可抓取协议请求用于调试。关于Fiddler抓取HTTP协议的原理和配置比较简单,对Fiddler和客户端稍作配置,便能使得Fiddler轻易地获取HTTP请求。但是由于HTTPS协议的特殊性,要进一步地配置Fiddler,我们首先要了解一下fiddler抓取HTTPS协议的原理才能更好地理解如何对fiddler进行配置。Fiddler本身就是一个协议代理工具,在上一节HTTPS原理图上,客户端与服务器端进行通信的过程全部都由Fiddler获取到,也就是如下图所示:
我们看到Fiddler抓取HTTPS协议主要由以下几步进行:
在之后的正常加密通信过程中,Fiddler如何在服务器与客户端之间充当第三者呢?
从上面可以看到,Fiddler抓取HTTPS协议成功的关键是根证书(具体是什么,可Google),这是一个信任链的起点,这也是Fiddler伪造的CA证书能够获得客户端和服务器端信任的关键。
接下来我们就来看如果设置让Fiddler抓取HTTPS协议。
6|36.3 Fiddler抓取HTTPS设置
用火狐访问 https 认证网站(如百度)会出现以下问题:
处理步骤如下:
tools > Options > HTTPS 和 Connections
此时在桌面可以得到一个证书:
双击可看详情
得到证书之后需要去火狐浏览器添加。
然后就可以访问 https 认证的网站了。
7|0七、抓取手机内容
7|17.1、常用设置
设置步骤一:Tools---> Options--->HTTPS--->勾选Decrypt HTTPS traffic--->选择…from remote clients only(从远程客户端)
设置步骤二:Tools---> Options--->Connections--->设置Fiddler listens on port:8888--->勾选Allow remote computers to connect(允许远程设备连接)
设置步骤三:①.查看fiddler所在计算机的IP(cmd---> ipconfig或者点击fiddler右上角Online)
②.手机上进行设置:同一个wifi下设置代理,服务器地址:计算机的IP(192.168.0.163),端口8888;
7|27.2、附加设置(常用设置后无法进行抓包)
方法一:因为有些APP对安全上要求没有那么高时候,不需要下载证书,但是有的APP对安全要求比较高,就需要下载证书,下载证书步骤:在手机浏览器(自带浏览器,本人在尝试中,UC出错)输入网址:
安装的证书在手机的位置如下,可以进行删除、重新安装;
方法二:Rules---> Customize Rules--->按Ctrl+F--->打开Find and Replace--->输入查询关键字:OnBeforeResponse--->在函数OnBeforeResponse中添加如下代码
8|0八、设置断点修改
8|18.1 断点修改Request
8.1.1 Request全部中断
设置中断:Rules---> Automatic Breakpoints--->Before Requests
取消中断:Rules---> Automatic Breakpoints--->Disabled
点击下发红色箭头的位置进行中断切换;
例1:打开http://news.baidu.com/--->设置请求断点--->清空fillder抓包数据--->不输入任何关键字,点击http://news.baidu.com/页面中“百度一下”--->在fiddler中设置“value=巧吧软件测试”--->点击“Run to Completion” --->点击“Go” --->结果:“value=巧吧软件测试”;
Inspectors界面:Break on Response:发送请求,在响应数据回到Fiddler时再次中断;Run to Completion:单条运行修改后的请求;
8.1.2 Request特定网站中断
特定网站中断设置:快速命令行输入“bpu www.baidu.com+Enter”,只会中断www.baidu.com;
特定网站中断取消:快速命令行输入“bpu+Enter”;
8|28.2 断点修改Response
8.2.1 Response全部中断
设置中断:Rules---> Automatic Breakpoints--->After Response
取消中断:Rules---> Automatic Breakpoints--->Disabled
点击下发红色箭头的位置进行中断切换;
例1_脚本替换:打开http://news.baidu.com/--->设置请求断点--->清空fillder抓包数据--->刷新http://news.baidu.com/页面--->在Response中修改内容--->点击“Run to Completion” --->点击“Go” --->结果:修改后的内容;
例2_状态码替换:打开http://news.baidu.com/--->设置请求断点--->清空fillder抓包数据--->刷新http://news.baidu.com/页面--->在Response中选择状态码--->选择502_Unreachable.dat --->点击“Run to Completion”--->点击“Go” --->结果:状态码502内容;
8.2.2 Response特定网站中断
特定网站中断设置:快速命令行输入“bpafter www.baidu.com+Enter”,只会中断www.baidu.com;
特定网站中断取消:快速命令行输入“bpafter+Enter”;
8.2.3 Response查找或替换
8|38.3 其他断点相关命令行
bps:特定http状态码时中断,比如:bps 200;
bpv/bpm:在特定请求method时中断,比如bpv GET或bpm POST;
g:等于Go
9|0九、重定向AutoResponder
9|19.1. 文件及图片替换(Enable rules)
目的:允许从本地返回文件,代替服务器响应,而不用将文件发布到服务器【可用正式环境验证本地文件】
步骤一:抓页面http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome --->选择session,右击--->Save--->Response---> Response Body
步骤二:打开另存html文件--->修改内容
步骤三:AutoResponder--->勾选Enable rules--->选择session--->点击“Add Rule”
步骤四:Rule Editor--->第二个下拉框--->选择Find a file… --->选择修改后的html--->save;
步骤四:Rule Editor--->第二个下拉框--->选择状态码--->save;
步骤五:清空fillder抓包数据--->刷新http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome --->页面--->查看结果;
9|29.2 未匹配到请求时正常响应(Unmatched requests passthrough)
不勾选Unmatched requests passthrough时地址错误;
访问其他网站会出错。点上之后即可访问其他网站。
9|39.3 设置延时(Enable Latency)
步骤:勾选Enable Latency --->出现Latency列--->选中某个文件--->右击--->选择Set Latency--->设置延迟时间(3000毫秒)--->save--->重新刷新http://ir.baidu.com/phoenix.zhtml?c=188488&p=irol-irhome页面,设置的内容会发生3s的延迟;
9|49.4 URL匹配
EXACT开头:表示完全匹配
regex开头:表示用正则表达式来匹配
StringToMatch:字符串匹配
9|59.5 Test是否匹配
步骤:选中session--->点击Test--->查看是否匹配上;
10|0十、Fiddler过滤
10|110.1 User Fiters启用
10|210.2 Action
Action:Run Filterset now是否运行,Load Filterset加载,Save Filterset保存;
10|310.3 Hosts过滤
Zone:指定只显示内网(Intranet)或互联网(Internet)的内容;
Host:指定显示某个域名下的会话;
-No Host Filter:无HOST过滤;
Hide the following Hosts:只显示如下HOST;
Flag the following Hosts:加粗显示如下HOST;
输入多个HOST,多个之前用半角逗号或者回车分隔;
支持通配符:*,baidu.com;
步骤:选择Hosts--->输入过滤条件单条件(ir.baidu.com)或多条件(ir.baidu.com,www.baidu.com或ir.baidu.com+Enter+www.baidu.com)或通配符(*.baidu.com)--->Changes not yet saved--->选择Ations中Run Filterset now;
10|410.4 Client Process过滤
客户端进程过滤规则:
Show only traffic from:你可以指定只捕获哪个Windows进程中的请求;
Show only Internet Explorer traffic:只显示IE发出的请求;
Hide Windows RSS platform traffic:隐藏Windows RSS平台发出的请求;
10|510.5 Request Headers过滤
请求header过滤规则:
经常使用:Show only if URL contains;
Flag requests with headers:标记带有特定header的请求;
Delete request headers:删除请求header;
Set request header设置请求的header;
10|610.6 Breakpoints
断点设置规则:
Break request on HTTP POST:给所有POST请求设置断点;
Break request on HTTP GET with QueryString:给所有带参数的GET请求设置断点;
Break response on Content-Type:给特定的Content-Type设定断点;
10|710.7 Response Status Code过滤
响应HTTP状态过滤规则:
Hide success(202,204,206):隐藏响应成功的session(202,204,206);
Hide Authentication demands(401):隐藏未经授权被拒绝的session(401);
Hide redirects(300,301,302,303,307):隐藏重定向的session(300,301,302,303,307);
Hide Not Modified(304):隐藏无变更的session(304);
10|810.8 Response Type and Size
响应类型和大小过滤规则:
Show all Content-Type:显示所有响应类型;
Hide smaller than ?KB:隐藏小于指定大小的session;
Hide larger than ?KB:隐藏大于指定大小的session;
Time HeatMap:获得即时数据(绿色阴影代表响应时间在50毫秒以内;超过50毫秒但在300毫秒之内的响应条目没有颜色;响应时间在300至500毫秒之间的会涂以黄色;超过500毫秒的用红色底纹显示);
Block script files:阻止脚本文件,显示为404;
Block image files:阻止图片文件;
Block SWF files:阻止SWF文件;
Block CSS files:阻止CSS文件;
10|910.9 Response Headers
响应header过滤规则:
Flag response that set cookies:标记会设置cookie的响应;
Flag response with headers:标记带有特定header的响应;
Delete response headers:删除响应header;
Set response header:设置响应的header;
10|1010.10 会话列表:鼠标右击
11|0十一、Fiddler Script
11|111.1 安装SyntaxView插件
使用Fiddler Script前需要安装SyntaxView插件:
方式1:Inspectors tab--->Get SyntaxView tab--->Download and Install SytaxView Now…
方式2:http://getfiddler.com/FiddlerSyntaxSetup.exe
11|211.2 进入FiddlerScript页面
方式1:直接点击FiddlerScript页签;
方式2:Rules--->Customize Rules--->Fiddler ScriptEditor;
11|311.3 FiddlerScript脚本进行自定义修改
修改session样式;
修改http请求和应答;
修改URL;
定制菜单:定制rule菜单的子菜单;定制tool菜单的子菜单;定制右键子菜单;
11|411.4 模拟慢速网络
步骤一:Customize Rule修改脚本:上传/下载1KB要delay多久
步骤二:Rules--->Performance--->启用Simulate Modem Speeds
步骤三:重新刷新抓包网页--->结果很慢;
12|0十二、次要功能和第三方插件
12|112.1 替换HTTP Request Host
应用场景:进行开发时,线上去测试跳转调试
替换命令:urlreplace news.baidu.com www.baidu.com;
清除命令:urlreplace,需要同时清除浏览器缓存;
永久替代:Script脚本实现
12|212.2 配置Host
应用场景:线下和线上进行域名ip地址进行替换;
步骤:Tools--->HOSTS--->Host Remapp
12|312.3 Compose-Request发射器
12|412.4 HTTP统计图
12|512.5 QuickExec命令行的使用
cls
select:select image
?.png
bpu、bpafter、bps、bpv、bpm
>size <size
=status:=状态码
@host:匹配域名
12|612.6 TimeLine瀑布图
选择多个会话,从条形图表中可以分别出哪些请求耗时最多;
不同颜色代表不同的元素类型的响应(浅绿色代表图片,深绿色是JavaScript,红色是CSS,其他为蓝色);
其他符号:请求前面的红色圆圈表示这个连接是新建的,绿色表示是复用的;
黑色竖线,表示的是浏览器收到服务器响应的第一个字节这一时刻;
向下的箭头表示重定向,302错误;
红色感叹号表示有错误发生,状态为4XX或5XX;
红色的X,说明服务端响应完这个请求之后,断开了连接;
闪电表示这是Fiddler的“AutoResponder”的响应;
软盘图标表示这个响应正文从本地获得,304错误;
12|712.7 编码小工具、查询会话、编码解码
12|812.8 第三方插件
Syntax-Highlighring:代码高亮插件;
JavaScript格式化插件:JS格式化;
WinDiff:会话比较功能;
Stave插件:目录替换;项目配置管理;自定义颜色;上下行网速限制;
Willow:可以统计数据包;修改Host;请求重定向;编码转换;低网速模拟:慢速网络模拟可视化;断点调试;过滤HTTP请求;
12|912.9 官方文档
http://www.telefik.com/fiddler
http://www.360doc.com/content/16/0128/15/30056680_531241446.shtml (关于接口)
__EOF__

本文链接:https://www.cnblogs.com/dongye95/p/9296816.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!