fd抓包官网
第一次用 Fiddler 抓包,抓包是官网因为一个 App 的接口死活调不通。后端说返回正常,抓包前端说数据没收到,官网两边扯皮。抓包我夹在中间,官网只能自己上工具。抓包Fiddler 官网下载安装包,官网一路 Next,抓包装完打开,官网默认就监听了 8888 端口。抓包浏览器代理设成 127.0.0.1:8888,官网HTTPS 流量立刻出现在左侧会话列表里。抓包那一刻的官网感觉,像拿了一把钥匙,抓包打开了原本锁着的门。
官网地址是 telerik.com/fiddler。注意,Fiddler 已经被 Telerik 收购,现在归 Progress 旗下。旧版 Fiddler Classic 免费,功能足够日常抓包。新版 Fiddler Everywhere 走订阅制,跨平台,界面更现代。我两个都装了。Classic 在 Windows 上稳如老狗,Everywhere 在 Mac 上凑合用。选哪个,看你系统和你钱包。
抓 HTTPS 是绕不过去的坎。默认情况下,Fiddler 只能看到 CONNECT 请求,具体内容全是乱码。点 Tools → Options → HTTPS,勾选 Decrypt HTTPS traffic,会弹证书安装向导。装完证书,重启 Fiddler,HTTPS 请求的明文就躺在那里了。手机抓包稍微麻烦点。手机和电脑连同一个 WiFi,手机代理指向电脑 IP 加 8888 端口,浏览器访问 http://电脑IP:8888 下载证书,装完信任。iOS 还要去设置 → 通用 → 关于本机 → 证书信任设置里手动打开开关。这一步卡过很多人,包括我。
会话列表里每一行都是一次请求。点开,右侧分上下两栏。上半部分是请求,下半部分是响应。Inspectors 标签页最常用。Raw 看原始报文,Headers 看头信息,WebForms 看 POST 参数,JSON 看返回结构。我习惯先看 Headers 里的状态码和 Content-Type,再看 JSON 里的业务字段。有一次接口返回 200,但 body 里 code 是 500,这种坑只有抓包才能一眼看穿。
AutoResponder 是个好东西。可以把某个请求重定向到本地文件,模拟各种返回。测试异常分支的时候,不用求后端改代码。规则写起来简单:匹配 URL,指定本地文件,保存。刷新页面,请求就被拦截替换了。Composer 更直接,手动构造请求,改参数、改头、改 body,点 Execute 就发出去。调试第三方接口的时候,比 Postman 还顺手。
过滤器得提一嘴。默认抓所有流量,浏览器一开,几百条会话刷屏。在 Filters 标签页里勾选 Show only if URL contains,填上你的域名,世界立刻清净。我一般还会把图片、CSS、JS 这些静态资源过滤掉,只看 XHR 和 Fetch。不然找一个接口,得在列表里翻半天。
手机抓包有个坑:Android 7.0 以后,App 默认不信任用户安装的证书。系统证书需要 root 才能装。解决办法要么 root,要么用 VirtualXposed 这类工具,要么让开发在 manifest 里加 networkSecurityConfig。我遇到过几次抓不到包的情况,查半天才发现是证书信任问题。不是 Fiddler 的锅,是 Android 安全策略变了。
Fiddler 的脚本功能用的人不多。CustomRules.js 里可以写 JScript,修改请求和响应。比如给所有请求加一个头,或者把某个字段的值改掉。我写过一段,把测试环境的 token 自动替换成正式环境的,省得每次手动改。脚本编辑器有语法提示,改完保存立即生效,不用重启。这点比 Charles 方便。
最后说个实际案例。有个页面加载特别慢,前端说接口慢,后端说前端渲染慢。我开 Fiddler 抓了一次,发现某个接口返回了 2MB 的 JSON,里面 90% 的字段前端根本不用。后端把整个数据库对象序列化返回了。问题定位清楚,改起来就快。没有抓包工具,这种扯皮能扯一周。Fiddler 官网下载页面写着一句话:See what your web traffic is doing。这话不夸张。它不能帮你写代码,但能让你看清代码在网络上到底干了什么。









