Fiddler 断点调试实战:拦截并修改请求与响应
AutoResponder 适合"整条请求都用假数据替换",但很多时候我们只想改一点点——把某个参数改大、把响应里的一个字段从 false 改成 true。这时候用断点(Breakpoint)更合适:它让请求/响应在半路暂停,你手动改完再放行。本文讲清楚断点的两种类型、精确设点的方法,以及几个真实的调试与测试场景。
一、两类断点,先分清"在哪一步暂停"
HTTP 的一次往返是:客户端发出请求 → 服务器处理 → 返回响应 → 客户端接收。断点可以卡在两个位置:
- 请求前断点(Before Requests):请求还没发给服务器时暂停。此时改的是"你要发出去的东西"——URL、Header、Cookie、Body 参数。用于伪造客户端行为、测试服务端的参数校验。
- 响应后断点(After Responses):服务器已经返回、但客户端还没拿到时暂停。此时改的是"服务器返回给你的东西"——状态码、响应头、响应体。用于伪造后端返回、测试前端对各种数据的处理。
搞混这两者是新手最常见的困惑:"我想改接口返回的数据,却设了请求前断点,改了半天没效果。"——记住口诀:改发出去的用请求前,改收回来的用响应后。
二、别用菜单全局断点,用命令精确设点
菜单 Rules > Automatic Breakpoints > Before Requests 会对所有请求打断点,页面上几十个请求全被拦下,你得一个个放行,非常痛苦。正确做法是用 QuickExec(左下角命令行)精确到某个接口:
bpu api/order/create—— 只对 URL 含api/order/create的请求设请求前断点。bpafter api/order/create—— 只对该接口设响应后断点。bps 500—— 只对状态码 500 的响应断点,用于捕获偶发错误的现场。bpu/bpafter(不带参数)—— 清除对应类型的所有断点。调完务必执行,否则请求会一直被拦,页面像"卡死"。- 误开断点导致页面卡住时,敲
g(go)一键放行所有被拦请求救急。
三、场景一:修改请求参数,绕过前端限制
前端限制"每次最多买 5 件",你想测服务端是否也做了校验(安全测试的经典场景)。
- QuickExec 敲
bpu api/order/create。 - 在页面正常下单,请求被拦下——列表里该会话图标变成红色。
- 选中它,右侧 Inspectors 面板切到可编辑视图(WebForms 看表单参数、Raw 看原始报文、JSON 看结构化 body)。
- 把数量
quantity从 5 改成 9999。 - 点会话上方的 Run to Completion 放行。
- 看服务端响应:如果成功了,说明后端没做数量校验,是个漏洞;如果返回错误,说明校验到位。
四、场景二:篡改响应,测前端各种边界
要测"VIP 用户和普通用户界面不同",但你的测试账号不是 VIP,也不方便改数据库。用响应断点直接改返回:
- QuickExec 敲
bpafter api/user/profile。 - 刷新页面,接口返回后被拦下。
- Inspectors 切到响应侧,把 JSON 里的
"vip": false改成"vip": true。 - Run to Completion 放行,前端就以为你是 VIP 了,VIP 专属 UI 全部渲染出来。
类似地,你可以:把列表数据删到 0 条测空状态;把分页 hasMore 改成 true 测加载更多;把 code 改成非 0 测错误提示;把状态码从 200 改成 500 测兜底页面。这些在真实后端下很难构造的场景,用响应断点几秒钟就能造出来。
五、场景三:捕获偶发错误的现场
某接口偶尔报 500,出现时机不定,等你发现列表早刷过去了。用 bps 500 让 Fiddler 替你盯着:一旦有任何响应是 500,它就自动暂停,把现场(完整请求参数 + 错误响应体)保留下来,你回头慢慢分析是哪种入参触发的。
六、常见问题排查
- 改了没生效? 检查断点类型:改请求用 bpu、改响应用 bpafter,别设反。
- 页面所有请求都卡住? 多半是用菜单开了全局断点,或
bpu参数写太宽(比如只写api命中了所有接口)。敲g放行,再用更精确的 URL 重设。 - HTTPS 请求断不下来? 确认已开启 HTTPS 解密(Tools > Options > HTTPS 勾选 Decrypt HTTPS traffic 并信任证书),否则 Fiddler 看不到加密内容,自然无法断点。
- 改 JSON 后前端报解析错误? 注意别改坏 JSON 语法(漏引号、多逗号),也留意如果响应是 gzip 压缩的,要在 Raw 视图先解压再改,Fiddler 一般会自动处理,但手改原始字节时要当心。
七、小结
断点是 Fiddler 里"外科手术刀"式的工具:AutoResponder 换整条数据,断点则精修某一处。用好它只需记住三件事——分清请求前/响应后、用 bpu/bpafter 精确设点、调完用 g 和空命令清点、HTTPS 要先开解密。掌握之后,无论是接口联调、前端边界测试还是安全验证,你都能自由地拦截和改造每一次网络往返。