简介:这是一份面向Web开发、测试与安全评估人员的Fiddler中文免安装版工具包,解决网络封包分析工具部署繁琐、英文界面理解困难的问题。解压后即可直接运行,无需安装,适合前端、后端开发者及测试工程师用于抓取HTTP/HTTPS流量、调试API接口、排查网页加载缓慢与安全漏洞等场景。资源包共62个文件,以exe可执行程序、dll动态库、dat数据文件为主,另含wav提示音、js脚本、config配置、xul界面定义及ico图标等,压缩包约1.71MB,体积轻巧便于携带。目前已有6127人学习下载,热度较高。包内提供汉化主程序与配套组件,并附使用方法说明,读者可快速完成HTTPS证书信任、会话捕获、请求修改重放等操作,借助筛选、排序与脚本扩展能力,高效定位网络通信问题,提升调试与性能优化效率。
1. 免安装版 fiddler 到底解决了什么:从一台不能装软件的生产机说起
上周有个做后端的朋友找我,说他们线上环境有台跳板机,权限卡得死,装不了任何软件,但偏偏要抓一个第三方回调的 HTTPS 请求看看到底传了什么。他试过用 curl 加-v,但 POST body 是加密的,日志里也看不全。最后我丢给他一个免安装版的 fiddler 压缩包,解压、双击、配一下证书,十分钟搞定。这就是免安装版最直接的价值:不写注册表、不依赖安装程序、不污染系统环境,解压即用,用完删掉整个目录就行。它适合三类人:需要临时抓包但没管理员权限的开发者、要在多台机器之间来回切换调试环境的测试、以及不想因为装一个工具就把系统搞出一堆残留的运维。fiddler 本身是老牌 HTTP/HTTPS 抓包代理,免安装版保留了完整功能,只是把部署方式从“安装”变成了“绿色启动”。
2. 免安装版 fiddler 的目录结构与启动逻辑
2.1 解压后你会看到什么
拿到压缩包后,解压到一个不含中文和空格的路径下,比如D:\tools\fiddler_green。目录里通常包含这几个关键部分:
Fiddler.exe:主程序,双击就能跑,不需要安装。FiddlerCore.dll:核心代理引擎,所有流量转发和解析都靠它。CertMaker.dll和makecert.exe:用来生成根证书,HTTPS 解密必须用到。Scripts文件夹:里面是CustomRules.js,fiddler 的脚本扩展入口。Responses和Templates:内置的响应模板和会话模板。
免安装版和安装版在文件层面几乎一样,区别在于安装版会往注册表写配置、往系统证书库塞根证书,而免安装版把这些动作都留在当前目录里。你第一次启动时,它会在同目录下生成FiddlerSettings.xml和FiddlerPreferences.xml,所有个性化设置都写在这里,不会跑到%APPDATA%去。
2.2 启动时的三个关键动作
双击Fiddler.exe后,它做了三件事:
第一,在本机启动一个 HTTP 代理服务,默认监听127.0.0.1:8888。所有走这个代理的流量都会被它截获。
第二,检查当前用户证书库里有没有 fiddler 的根证书。如果没有,它会弹窗问你要不要生成并信任。免安装版在这里有个坑:它生成的证书是绑定当前 Windows 用户的,换用户登录后需要重新生成。
第三,加载CustomRules.js。这个脚本文件决定了哪些请求会被断点、哪些响应会被修改、哪些 URL 会被过滤。免安装版默认的脚本和安装版一致,但你可以直接编辑这个文件,改完保存后 fiddler 会自动重载,不需要重启。
注意:解压路径里如果有中文,
makecert.exe生成证书时可能报错,现象是弹窗提示“无法创建根证书”,但没有任何详细日志。这是血泪经验,别问我是怎么知道的。
3. 抓 HTTPS 的完整配置流程与证书信任链
3.1 配置代理和证书生成
fiddler 默认只抓 HTTP,要抓 HTTPS 必须手动开启解密。步骤不复杂,但顺序不能错。
第一步,打开Tools→Options→HTTPS标签页,勾选Capture HTTPS CONNECTs和Decrypt HTTPS traffic。如果你只想抓特定域名的 HTTPS,可以在下面的Skip decryption for the following hosts里填例外,比如*.apple.com,避免抓一些系统更新流量。
第二步,点击Actions按钮,选择Trust Root Certificate。这时候会弹出一个 Windows 安全警告,点“是”就行。这一步的本质是把 fiddler 生成的根证书装进当前用户的“受信任的根证书颁发机构”存储区。
第三步,验证证书是否生效。在浏览器里访问一个 HTTPS 网站,fiddler 的会话列表里应该能看到解密后的请求和响应。如果看到的是Tunnel to加域名,说明解密没成功,证书没被信任。
3.2 用命令行验证证书安装状态
如果你不确定证书到底装没装,可以用 PowerShell 查一下:
# 查询当前用户受信任根证书里有没有 fiddler 相关条目 Get-ChildItem Cert:\CurrentUser\Root | Where-Object { $_.Subject -like "*fiddler*" } | Select-Object Subject, Thumbprint, NotAfter这段命令的逻辑是:遍历当前用户根证书存储区,筛选主题里包含fiddler的证书,输出主题、指纹和过期时间。如果输出为空,说明证书没装上,需要回到 fiddler 里重新点Trust Root Certificate。参数说明:Cert:\CurrentUser\Root是 PowerShell 的证书驱动器路径,-like "*fiddler*"是模糊匹配,因为证书主题可能是CN=DO_NOT_TRUST_FiddlerRoot之类的名字。
3.3 移动端抓包的代理设置
免安装版 fiddler 同样可以抓手机流量。手机和电脑连同一个 Wi-Fi,然后在手机 Wi-Fi 设置里手动配代理:主机名填电脑的局域网 IP,端口填8888。然后在手机浏览器访问http://电脑IP:8888,会看到一个 fiddler 的证书下载页面,下载并安装证书。
Android 从 7.0 开始,用户安装的证书默认不被应用信任,只有系统证书才被信任。这意味着你抓不了大部分 App 的 HTTPS 流量,只能抓浏览器。解决办法要么 root 后把证书挪到系统分区,要么用 App 的调试版本。iOS 相对宽松,装完证书后去“设置 → 通用 → 关于本机 → 证书信任设置”里手动开启完全信任即可。
注意:手机代理配好后,如果 fiddler 没开,手机就连不上网。调试完记得把代理关掉,否则会以为手机坏了。
4. 免安装版 fiddler 的避坑与常见问题排查
4.1 启动报错“无法加载 FiddlerCore.dll”
现象:双击Fiddler.exe后弹窗提示找不到FiddlerCore.dll或加载失败。
原因:解压不完整,或者杀毒软件把FiddlerCore.dll当可疑文件隔离了。fiddler 的代理引擎需要注入到系统网络栈,某些安全软件会误报。
解决:先看目录里FiddlerCore.dll在不在。不在就重新解压,解压前把杀毒软件实时防护暂时关掉,或者把整个目录加入白名单。如果文件在但还是报错,右键Fiddler.exe→ 属性 → 兼容性,勾选“以管理员身份运行”。免安装版在某些系统上需要管理员权限才能绑定8888端口。
4.2 HTTPS 解密后浏览器提示“证书无效”
现象:fiddler 里能看到 HTTPS 请求了,但浏览器地址栏显示红色警告,提示证书不受信任。
原因:fiddler 的根证书没有被装进浏览器的信任链。Chrome 和 Edge 用 Windows 证书库,Firefox 用自己的证书库。
解决:Chrome/Edge 的话,重新在 fiddler 里点Actions→Trust Root Certificate,然后重启浏览器。Firefox 需要手动导入:选项 → 隐私与安全 → 证书 → 查看证书 → 证书颁发机构 → 导入,选择 fiddler 目录下的FiddlerRoot.cer,勾选“信任由此证书颁发机构来标识网站”。
4.3 抓包时部分请求显示“Tunnel to”
现象:会话列表里大量Tunnel to xxx:443,看不到具体的请求头和响应体。
原因:这些请求的 HTTPS 解密没生效。可能是证书没信任,也可能是该域名在Skip decryption列表里,还可能是客户端用了证书固定(certificate pinning)。
解决:先确认证书信任状态。如果证书没问题,检查Tools→Options→HTTPS里的跳过列表。如果是 App 的证书固定,fiddler 无能为力,只能换用其他调试手段,比如让开发在代码里临时关闭校验。
4.4 免安装版换电脑后配置丢失
现象:把整个目录拷贝到另一台电脑,启动后发现之前的过滤规则、断点设置全没了。
原因:免安装版的配置写在FiddlerSettings.xml和FiddlerPreferences.xml里,但证书是绑定当前用户的,换电脑后证书需要重新生成。另外,如果拷贝时只拷了Fiddler.exe,没拷这两个 xml 文件,配置自然丢失。
解决:迁移时把整个目录打包拷贝,包括所有 xml 和CertMaker.dll。到新电脑后,重新点一次Trust Root Certificate,因为证书存储区是每台机器独立的。
4.5 脚本修改后不生效
现象:编辑了CustomRules.js,保存后抓包行为没变化。
原因:fiddler 默认在脚本保存后自动重载,但如果你用了一些不规范的编辑器,保存时可能改了文件编码或加了 BOM 头,导致 fiddler 解析失败。
解决:用记事本或 VS Code 编辑,保存为 UTF-8 无 BOM 格式。改完后在 fiddler 里按Ctrl+Shift+R手动重载脚本,或者重启 fiddler。如果还是不行,看CustomRules.js里有没有语法错误,fiddler 的日志窗口会报出来。
5. 用 CustomRules.js 做请求拦截与响应篡改的进阶技巧
免安装版 fiddler 最被低估的能力是CustomRules.js。这个脚本文件让你在请求发出前和响应返回后插入自定义逻辑,相当于给抓包工具装了一个可编程的钩子。我平时用得最多的三个场景是:给请求统一加 Header、把线上 JS 替换成本地文件、以及模拟慢网络。
5.1 给所有请求加一个自定义 Header
假设你要给所有发往某个测试域名的请求加一个X-Debug: 1的头,方便后端识别调试流量。在CustomRules.js里找到OnBeforeRequest函数,加入以下代码:
// 在请求发出前触发,oSession 是当前会话对象 function OnBeforeRequest(oSession) { // 判断请求的 Host 是否包含 test.example.com if (oSession.HostnameIs("test.example.com")) { // 给请求头里加一个自定义字段 oSession.oRequest["X-Debug"] = "1"; } }逻辑说明:OnBeforeRequest是 fiddler 在请求发出前调用的钩子函数,oSession封装了当前请求的所有信息。HostnameIs是精确匹配主机名的方法,也可以用oSession.url.Contains("test")做模糊匹配。oRequest["X-Debug"]是直接操作请求头字典,赋值后 fiddler 会把新头写进实际发出的请求里。参数说明:X-Debug是自定义头名称,值1可以换成任意字符串。
5.2 把线上 JS 替换成本地文件
前端调试时经常需要改一行 JS 看效果,但线上文件是压缩过的,直接改不方便。用 fiddler 可以把线上请求重定向到本地文件:
// 在响应返回前触发,用于替换响应体 function OnBeforeResponse(oSession) { // 匹配线上 JS 的 URL if (oSession.url.Contains("app.min.js")) { // 读取本地文件内容 var localFile = "D:\\debug\\app.js"; var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.OpenTextFile(localFile, 1); var content = file.ReadAll(); file.Close(); // 替换响应体,并修改 Content-Type oSession.utilSetResponseBody(content); oSession.oResponse["Content-Type"] = "application/javascript"; } }逻辑说明:OnBeforeResponse在响应到达 fiddler 但还没发给浏览器时触发。utilSetResponseBody是 fiddler 提供的工具方法,直接替换响应体内容。ActiveXObject是 Windows 脚本宿主的能力,用来读本地文件。参数说明:localFile换成你自己的本地路径,注意反斜杠要双写。Content-Type必须改成application/javascript,否则浏览器可能不执行。
注意:
utilSetResponseBody会改变响应体长度,fiddler 会自动更新Content-Length,但如果你同时改了Content-Encoding,可能会出问题。建议替换前先把Content-Encoding删掉。
5.3 模拟慢网络和断点调试
fiddler 内置了网络限速功能,在Rules→Performance→Simulate Modem Speeds里可以一键开启。但如果你想自定义延迟,可以在CustomRules.js里改:
// 在 OnBeforeRequest 里加延迟 function OnBeforeRequest(oSession) { // 只对特定域名生效,避免所有请求都变慢 if (oSession.HostnameIs("slow.example.com")) { // 延迟 2000 毫秒 oSession["request-trickle-delay"] = "2000"; } }逻辑说明:request-trickle-delay是 fiddler 内置的会话标记,单位是毫秒,表示请求体每发送一个块后延迟多久。类似还有response-trickle-delay控制响应延迟。参数说明:2000可以根据需要调整,但别设太大,否则浏览器会超时。
断点调试更简单:在Rules→Automatic Breakpoints里选Before Requests或After Responses,所有匹配的请求都会暂停,你可以在右侧面板里直接改请求头、请求体、响应码、响应体,改完点Run to Completion放行。这个功能在排查“后端到底收到了什么”时特别有用。
5.4 验证脚本是否生效
改完脚本后,怎么确认它真的在跑?最直接的办法是在脚本里加一行日志:
// 在 OnBeforeRequest 开头加日志 FiddlerObject.log("OnBeforeRequest triggered for: " + oSession.url);逻辑说明:FiddlerObject.log会把消息输出到 fiddler 左侧的日志面板。参数说明:日志内容可以拼接任意变量,oSession.url是当前请求的完整 URL。如果日志面板里能看到输出,说明脚本加载成功;如果看不到,检查脚本有没有语法错误,或者文件编码是不是 UTF-8 无 BOM。
从那以后我每次改完CustomRules.js,都强制先在日志里打一行确认脚本已加载,再去做具体的拦截逻辑。这个习惯帮我省掉了无数次“改了没生效”的自我怀疑。希望帮到你。
本文还有配套的精品资源,点击获取