4. 断点与篡改:请求/响应断点设置、动态修改请求参数、模拟后端错误响应(500/403/超时)、重放攻击测试

断点与篡改,说白了就是让流量在客户端和服务端之间「停一下」,然后你动手脚。我刚开始用抓包工具时,觉得能看看请求响应已经很牛了。直到有一次线上出了个诡异的Bug,前端死活不弹错误提示,我抓了半天包才发现——问题不在请求发没发,而在后端返回了一个我完全没预料到的状态码。

从那以后,我就养成了一个习惯:不光要看,还要改,还要模拟各种极端情况。这一章,我就把断点、篡改、模拟错误和重放测试这几个硬核技能,一次性讲透。

核心能力:断点不是让你看数据的,是让你「介入」数据的。篡改不是让你搞破坏的,是让你验证系统健壮性的。

4.1 请求/响应断点设置

断点分两种:请求断点和响应断点。请求断点是在数据发出前拦截,响应断点是在数据回来前拦截。你想想看,这两种场景分别对应什么需求?

  • 请求断点:你想修改发送的参数、Header、Cookie,或者干脆阻止这个请求发出去。
  • 响应断点:你想修改后端返回的数据、状态码、响应头,看看前端怎么处理异常情况。

以我常用的工具为例,设置断点通常有两种方式:

  1. 全局断点:拦截所有请求/响应。适合调试初期,但流量大时会疯掉。
  2. 条件断点:只拦截匹配特定URL、参数或Header的请求。我强烈建议你用这种方式。

我的习惯:先设一个宽松的条件,比如只拦截某个域名下的所有请求。等定位到具体接口后,再缩小范围到精确的URL+方法。这样不会漏掉,也不会被刷屏。

设置断点后,工具会暂停在拦截点。这时候你可以:

  • 查看完整的请求/响应数据
  • 修改任意字段
  • 选择「放行」、「丢弃」或「继续编辑」

4.2 动态修改请求参数

这是断点最常用的场景。我遇到过很多次,前端写死了某些参数,或者参数加密了,你想测一个边界值却改不了代码。这时候断点修改就是救命稻草。

常见的修改场景包括:

参数类型 修改示例 测试目的
URL参数 ?page=1 → ?page=-1 测试后端参数校验
请求体 {"id": 100} → {"id": "abc"} 测试类型转换异常
Header Authorization: Bearer xxx → 删除 测试鉴权缺失处理
Cookie session_id=valid → session_id=expired 测试会话过期逻辑

操作步骤其实很简单:

  1. 在拦截到的请求上,找到你要修改的字段
  2. 直接编辑文本内容(有些工具支持可视化编辑)
  3. 点击「执行」或「放行」,让修改后的请求发出去

我曾经踩过的坑:有一次我修改了请求体里的JSON,但忘了检查JSON格式是否合法。结果放行后,后端直接返回了500,我排查了半天才发现是自己多打了一个逗号。所以,修改后务必看一眼格式对不对,尤其是JSON和XML。

4.3 模拟后端错误响应

前端开发最怕什么?怕后端不按文档返回。但你不能总指望后端配合你测试。这时候,断点篡改响应就派上用场了。

我一般会模拟这几种错误:

  • 500 Internal Server Error:测试前端是否显示「服务器繁忙」之类的提示,而不是白屏或崩溃。
  • 403 Forbidden:测试权限不足时的跳转或提示逻辑。
  • 超时:模拟网络延迟或后端无响应,测试前端的超时重试机制。

具体怎么做?以模拟500为例:

  1. 在响应断点中拦截目标请求的响应
  2. 修改状态码:200 → 500
  3. 修改响应体:可以保留原结构但改状态字段,或者直接返回一个空对象
  4. 放行,观察前端行为

注意:模拟超时稍微麻烦一点。有些工具支持「延迟响应」功能,你可以设置一个很大的延迟值(比如30秒),然后看前端在多少秒后触发超时回调。如果工具不支持,你可以直接丢弃请求,模拟「永远不返回」的场景。

我个人的经验是,模拟错误响应时,一定要同时修改状态码和响应体。只改状态码不改响应体,前端可能会因为解析失败而报另一个错误,干扰你的判断。

4.4 重放攻击测试

重放攻击,就是把之前抓到的请求原封不动(或稍加修改)再发一次。这听起来简单,但能测出很多安全问题。

常见的测试场景:

  • 幂等性测试:同一个请求发两次,会不会创建两条重复的订单?
  • Token复用测试:过期的Token还能不能成功请求?
  • 防重放机制测试:系统有没有校验时间戳或Nonce(一次性随机数)?

操作流程:

  1. 抓取一个你感兴趣的请求(比如支付接口)
  2. 在工具的历史记录中找到它,选择「重放」
  3. 可以原样重放,也可以修改参数后再重放
  4. 观察服务端的响应和业务状态变化

我的建议:重放测试最好在测试环境做,别在生产环境乱来。我曾经见过有人在生产环境重放了下单接口,结果生成了几十个重复订单,运维差点没疯掉。

另外,重放攻击测试还有一个进阶玩法:并发重放。有些工具支持同时发送多个重放请求,用来测试系统的并发处理能力和锁机制。比如,同一个优惠券码,能不能被两个人同时使用?这种场景用并发重放一测便知。

断点与篡改核心流程 客户端 请求断点 服务端 响应断点 请求断点可操作 • 修改URL参数 • 修改请求体 • 修改Header/Cookie • 丢弃请求 • 延迟发送 响应断点可操作 • 修改状态码(500/403等) • 修改响应体 • 修改响应Header • 模拟超时/延迟 • 丢弃响应

这张图把整个流程串起来了。你从客户端发起请求,先经过请求断点(你可以改),再到服务端处理,然后响应回来经过响应断点(你又能改),最后回到客户端。说白了,你在两个关键节点上都有「动手脚」的机会。

总结一下:断点与篡改不是花架子,是检验系统健壮性的利器。你模拟的每一个错误,修改的每一个参数,都是在帮你的系统「排雷」。别等到线上出了事故才后悔——那时候你连抓包的机会都没有。