恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
免安装版Fiddler抓包实战:HTTPS解密与CustomRules.js脚本进阶
首页
资讯中心
/
免安装版Fiddler抓包实战:HTTPS解密与CustomRules.js脚本进阶
免安装版Fiddler抓包实战:HTTPS解密与CustomRules.js脚本进阶
发布时间:2026/10/18 14:57:11
简介这是一份面向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.jsfiddler 的脚本扩展入口。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*是模糊匹配因为证书主题可能是CNDO_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 里按CtrlShiftR手动重载脚本或者重启 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都强制先在日志里打一行确认脚本已加载再去做具体的拦截逻辑。这个习惯帮我省掉了无数次“改了没生效”的自我怀疑。希望帮到你。本文还有配套的精品资源点击获取