ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Fiddler中文版抓包实战:从配置到脚本扩展的完整指南

Fiddler中文版抓包实战:从配置到脚本扩展的完整指南 简介Fiddler中文版本.zip 面向Web开发、测试与接口调试人员尤其适合刚接触抓包分析、希望降低英文界面门槛的中文用户。它解决的是HTTP(S)通信过程难以观察、请求响应难以复现与修改的问题可用于接口联调、性能排查、HTTPS解密分析等日常场景。压缩包为zip格式大小约6.02MB文件总数与类型明细上游暂未提供故不展开说明。该版本在保留Fiddler原有能力的基础上提供中文界面涵盖会话捕获、请求与响应实时修改、断点调试、脚本扩展、HTTPS流量解密、性能时间线分析、会话过滤、数据导入导出及Web Sessions管理并可与Visual Studio、Chrome DevTools等工具配合使用。目前已有1988人学习下载适合需要快速上手抓包、对照中文菜单理解各项设置并提升调试效率的开发者参考使用。1. 抓包这件事为什么我最后还是回到了 Fiddler 中文版刚入行那会儿我总觉得浏览器 F12 够用了直到遇到一个只在 App 内嵌 WebView 里复现的登录态丢失问题——浏览器里一切正常真机上就是拿不到 Cookie。那会儿才意识到你需要的是一个能站在客户端和服务器中间、把每一帧 HTTP(S) 会话都摊开给你看的工具。Fiddler 就是干这个的它在本机起一个代理客户端流量从它这里过请求头、响应头、请求体、响应体、时间线全都能抓下来还能实时改。这次拿到的 Fiddler 中文版本.zip核心价值就一句话——把原本全英文的界面本地化了菜单、选项、提示都变成中文对刚接触抓包的人少了一层翻译成本。它适合谁前端调接口对不上参数的、测试做弱网和异常场景的、后端排查线上请求到底发了什么的以及需要抓手机 App 流量的移动端同学。下面我按「装好能用 → 抓得到 → 改得动 → 不翻车」的顺序拆一遍。2. 装完先别急着抓代理、证书、端口三件事的配置逻辑2.1 解压即用与首次启动的代理绑定Fiddler 中文版是绿色解压包解压到非中文、非空格的路径下再启动这是我踩过坑之后的固定习惯——路径里有中文或空格某些脚本扩展加载会直接报错。启动后它默认监听本机 8888 端口并自动把系统代理指向127.0.0.1:8888。这一步是它「能抓到浏览器流量」的根本原因浏览器发出的请求先到 FiddlerFiddler 转发给真实服务器再把响应回给浏览器。打开工具 → 选项 → 连接你会看到监听端口。默认 8888 一般不用改但如果本机已经有别的服务占了 8888比如某些本地开发服务器就得换一个比如 8899。改完端口后系统代理也要跟着变Fiddler 通常会自动同步但偶尔抽风需要手动去系统网络设置里确认。# 确认 8888 端口有没有被占用Windows netstat -ano | findstr :8888 # 如果被占用看是哪个进程 tasklist | findstr 上一步查到的PID逻辑说明netstat -ano列出所有监听端口和对应进程号findstr过滤出 8888。如果发现被占用要么在 Fiddler 里换端口要么干掉占用进程。参数上-a显示所有连接-n以数字形式显示地址和端口-o显示进程 ID这三个组合是排查端口冲突的标配。2.2 HTTPS 解密根证书信任是绕不过去的一步Fiddler 默认只能看到 HTTPS 的 CONNECT 隧道看不到里面的明文。要解密必须让它做中间人Fiddler 用自己的根证书给每个 HTTPS 站点动态签一张证书客户端信任了 Fiddler 的根证书才会接受这些动态证书。操作路径工具 → 选项 → HTTPS勾选「捕获 HTTPS 连接」「解密 HTTPS 流量」。第一次勾选会弹窗让你安装根证书点「是」装到「受信任的根证书颁发机构」。装完最好重启一次 Fiddler。# 验证证书是否装到了正确位置Windows certutil -store Root | findstr /i fiddler逻辑说明certutil -store Root列出受信任根证书存储里的所有证书过滤 Fiddler 相关项。如果这里能看到说明证书位置对了如果只在「个人」存储里浏览器依然会报证书不受信任。这一步是 HTTPS 抓包失败最高频的原因没有之一。2.3 抓手机流量把手机代理指到本机移动端抓包是 Fiddler 的高频场景。核心就两步手机和电脑连同一个局域网手机 WiFi 设置里手动填代理主机名填电脑的局域网 IP端口填 Fiddler 的监听端口。然后在手机浏览器访问http://电脑IP:8888下载并安装 Fiddler 根证书。# 查本机局域网 IPWindows ipconfig | findstr /i IPv4逻辑说明ipconfig输出所有网卡信息过滤 IPv4 拿到局域网地址。注意别填成127.0.0.1那是手机自己。手机装证书时Android 高版本需要在「设置 → 安全 → 加密与凭据 → 安装证书」里选「CA 证书」iOS 则要在「关于本机 → 证书信任设置」里手动打开完全信任开关否则抓 HTTPS 依然是一片隧道。3. 会话列表怎么读从请求行到时间线的排查路径3.1 会话面板的字段含义与过滤语法抓到的每一条会话在左侧列表里就是一行包含状态码、协议、主机、URL、Body 大小、耗时等列。新手最容易犯的错是抓了一大堆无关请求然后在里面肉眼找。正确做法是用过滤器Filters标签页里可以按主机、按进程、按响应类型过滤也可以在会话列表上方的Filter输入框里直接写表达式。# 常用过滤表达式Fiddler 会话列表过滤框 400 # 只看状态码大于 400 的 api # URL 中包含 api 的 mydomain.com # 只看某个域名的逻辑说明按状态码过滤按 URL 子串匹配按主机名匹配。这几个是日常排查用得最多的。比如线上报错先 400把错误请求筛出来再逐条看响应体里的错误信息比从头翻到尾快得多。3.2 时间线视图定位性能瓶颈选中一条会话右侧Statistics标签页会给出这条请求的详细耗时分解DNS 解析、TCP 连接、TLS 握手、发送请求、等待响应、接收响应。如果某个接口慢先看是慢在服务端处理等待响应时间长还是慢在网络传输接收响应时间长这直接决定你该找后端还是找运维。# 典型耗时分布判断 DNS Lookup : 0ms → DNS 没问题 TCP Connect : 15ms → 连接正常 TLS Handshake: 80ms → 握手偏慢考虑会话复用 Request Sent: 1ms Waiting : 2300ms → 服务端处理慢找后端 Content Download: 120ms逻辑说明Waiting是发出请求到收到第一个响应字节的时间这段基本就是服务端处理耗时。如果它占了大头前端和网络都别背锅直接拿这条会话去跟后端对。TLS Handshake偏大通常是没启用会话复用或证书链太长属于优化项而非故障。3.3 断点调试在请求发出前和响应返回前动手Fiddler 的断点分两种请求前断点Before Requests和响应后断点After Responses。工具栏上那两个箭头按钮就是开关。打上请求前断点后请求会停在 Fiddler 里你可以改 URL、改 Header、改 Body再点Run to Completion放行。# 命令行快速给特定请求打断点 bpu /api/login # 请求前断点只拦 URL 含 /api/login 的 bpafter /api/user # 响应后断点 bpu # 不带参数则清除所有请求前断点逻辑说明bpu是 before-request-update 的缩写bpafter是响应后。带 URL 参数时只拦截匹配的请求不带参数则清除。这个用法在测试异常场景时特别顺手——比如把登录接口的响应状态码从 200 改成 500看前端有没有做兜底提示不用改一行代码。4. 改包与脚本扩展把重复调试动作自动化4.1 手动改包的三类高频操作第一类是改请求参数在Inspectors → Request → WebForms里直接改表单字段或者切到Raw改原始报文。第二类是改响应体Inspectors → Response → Transformer里可以把响应解压后修改再放行。第三类是改状态码和 Header直接在Raw视图里改第一行或 Header 区。# 把某个接口的响应统一替换成 mock 数据 # 在 AutoResponder 标签页操作 1. 勾选 Enable rules 2. Add RuleURL 填 regex:.*/api/config.* 3. 下方选一个本地文件作为响应 4. 保存后该接口就返回本地 mock逻辑说明AutoResponder 是 Fiddler 里做接口 mock 最省事的功能不用写脚本。regex:前缀表示用正则匹配 URL匹配到的请求直接返回你指定的本地文件请求根本不会发到服务器。这在后端接口还没好、前端要联调时非常实用。4.2 用 JScript.NET 写自定义规则Fiddler 内置脚本引擎入口在Rules → Customize Rules打开的是一个.js文件。里面OnBeforeRequest和OnBeforeResponse两个函数是主要钩子。// 在 OnBeforeRequest 里给所有请求加一个自定义 Header static function OnBeforeRequest(oSession: Session) { // 只对特定域名生效避免污染其他流量 if (oSession.HostnameIs(api.example.com)) { oSession.oRequest[X-Debug-Token] fiddler-trace; } // 把某个慢接口的响应延迟 3 秒模拟弱网 if (oSession.uriContains(/api/slow)) { oSession[request-trickle-delay] 3000; } }逻辑说明oSession.HostnameIs精确匹配主机名避免给所有请求都加 Header。oRequest是请求头集合直接赋值即可新增或覆盖。request-trickle-delay是 Fiddler 内置的弱网模拟参数单位毫秒表示发送请求时每字节延迟多久配合response-trickle-delay可以模拟上下行慢速。参数改完保存即生效不用重启。4.3 弱网测试的参数组合弱网测试是 Fiddler 被搜得最多的场景之一。核心就是两个参数request-trickle-delay和response-trickle-delay分别控制请求和响应方向的延迟。再配合oSession[ui-color]给慢请求标个颜色一眼就能从会话列表里认出来。// 模拟 3G 弱网上行 500ms下行 800ms static function OnBeforeRequest(oSession: Session) { oSession[request-trickle-delay] 500; oSession[response-trickle-delay] 800; // 给被限速的会话标红方便观察 oSession[ui-color] red; }逻辑说明这两个参数是全局生效的所以调试完记得注释掉否则正常请求也会被拖慢。ui-color支持颜色名或十六进制值标色后会话列表里对应行会变色适合在大量会话里快速定位被限速的那些。5. 避坑与排查那些让我重装过三次的坑5.1 现象HTTPS 全是 CONNECT 隧道看不到明文原因根证书没装到「受信任的根证书颁发机构」或者装了但没重启 Fiddler或者浏览器有自己的证书存储没同步。解决先certutil -store Root | findstr /i fiddler确认证书位置不对就删掉重装装完重启 FiddlerChrome 系浏览器如果还不行去设置 → 隐私和安全 → 安全 → 管理证书里确认。另外部分 App 做了证书绑定SSL PinningFiddler 的动态证书会被客户端拒绝这种就不是配置问题得靠客户端开发配合关掉绑定或换测试包。5.2 现象手机连上了代理但一个包都抓不到原因手机和电脑不在同一网段或者电脑防火墙拦了 8888 端口或者 Fiddler 的「允许远程计算机连接」没开。解决先ping一下电脑 IP 确认连通然后在工具 → 选项 → 连接里勾选「允许远程计算机连接」最后检查 Windows 防火墙给 Fiddler 放行入站规则。这三步按顺序走基本能解决九成手机抓不到包的问题。5.3 现象改了脚本保存后没生效或者 Fiddler 直接报错原因脚本语法错误JScript.NET 对大小写和括号匹配比较敏感或者改错了函数名比如把OnBeforeRequest拼错。解决保存时 Fiddler 会弹编译错误提示按提示行号定位如果没提示但没生效去Rules → Customize Rules重新打开确认改动在实在不行把脚本恢复默认再逐段加。血泪经验是改脚本前先备份一份原始文件出问题直接还原。5.4 现象抓包导致某些网站打不开或提示证书错误原因Fiddler 解密了不该解密的流量或者某些站点做了 HSTS 强制 HTTPSFiddler 的证书链不被接受。解决在工具 → 选项 → HTTPS的「跳过解密」列表里把这些域名加进去让它们走隧道不解密。常见要加的是银行、支付类站点以及一些用了证书绑定的 App 接口。5.5 现象会话列表越抓越多Fiddler 卡到没法用原因长时间抓包没清理会话堆积占用内存。解决定期按Ctrl X清空会话列表或者在工具 → 选项 → 常规里设置「会话列表上限」超过自动丢弃旧的。另外抓包时尽量用过滤器缩小范围别什么都抓。6. 进阶技巧把 Fiddler 当成可编程的调试中间件用熟之后你会发现 Fiddler 真正的价值不在「看」而在「改」和「自动化」。我现在的习惯是任何需要反复构造的异常场景都不手动改而是写进 Custom Rules 里用开关控制。比如测试登录失败分支我会在OnBeforeResponse里判断登录接口按一个全局变量决定返回 200 还是 401这样切场景只需要改一个变量值。// 用全局开关控制登录接口的返回状态码 public static var mockLoginFail: boolean false; static function OnBeforeResponse(oSession: Session) { if (oSession.uriContains(/api/login) mockLoginFail) { oSession.responseCode 401; oSession.utilSetResponseBody({code:401,msg:mock fail}); } }逻辑说明public static var定义了一个可在脚本里随时改的全局开关responseCode直接改状态码utilSetResponseBody替换响应体。这样前端拿到的就是真实的 401 响应能完整走一遍错误处理逻辑比在代码里写死 mock 更接近真实链路。另一个高频进阶用法是导出会话做离线分析。文件 → 导出会话 → 所有会话 → 作为 HTTPArchive (.har)导出的 har 文件可以直接拖进 Chrome DevTools 的 Network 面板回放也可以写脚本解析。我一般会在排查完一个线上问题后把相关会话导出存档下次遇到类似问题直接对比请求差异比重新抓一遍快得多。还有一个容易被忽略的点Fiddler 的Find功能Ctrl F支持在会话列表里搜 URL、搜 Header、搜响应体。排查「某个参数到底有没有传」这类问题时直接搜参数名比逐条点开看快一个数量级。我现在的固定动作是抓完包先Ctrl F搜关键词定位到目标会话再看时间线再决定要不要打断点改包。从那以后我每次抓包都强制走一遍「过滤 → 搜索 → 时间线 → 断点」这个顺序基本不会再在一堆会话里迷路。希望这套流程能帮到你。本文还有配套的精品资源点击获取
返回列表