抓包让你「看」,规则和断点让你「改」。本篇教你三种改流量的手法: 加一条规则——从速查表点选一个动作、填上值,保存即热生效,成千上万条流量自动改,不用写脚本; 设一个断点——把请求或响应半路拦下来,手动编辑再放行或丢弃; 写一段脚本——只有前两者都表达不了的复杂逻辑,才动用脚本兜底。改哪种、改到什么程度,你说了算。
适合你满足下面任一条:
如果你只是想把某条抓到的请求改改参数再重发一遍、或压测,那不是本篇——见 请求构造与重放、会话重放与压力测试。
<匹配> <动作>://<值>;空行和
# 开头的注释会被忽略,每行单独校验。traceeagle.com,也可带路径前缀
traceeagle.com/path*.traceeagle.com(主域 + 所有子域一起命中)regex://…$https://host/path:8080!*.example.com resHeaders://X-Debug: 1api.example.com/user mock://200|{"name":"tofu"}map-remote 示例,改成你的本地地址${url} ${host} ${port} ${method} ${status} ${now} ${random} ${randomUUID} ${req.headers.X} ${res.headers.X} 等;常用的值还能定义成
命名值
{name},一处定义、到处引用。

想改的不止 HTTP:WebSocket 帧可按方向做
old=>new替换,裸 TCP / UDP 字节流也能按方向替换;还能做 弱网模拟(请求 / 响应延迟、带宽限速,含 2G / 3G / 4G 预设)。这些同样是从速查表点选、填值。
需要逐条精细控制时,用断点在 请求发出前或 响应返回前暂停,弹出编辑框让你亲手改。两种拦法:
breakpoint:// 动作,标明拦哪个阶段——
api.example.com breakpoint://reqapi.example.com breakpoint://resapi.example.com breakpoint://both规则和断点都搞不定的逻辑,交给脚本或自己的服务:
onRequest(req) /
onResponse(resp),直接改字段就生效。内置日志、同步外呼其它服务、跨请求暂存数据(做计数器 / 缓存令牌)、Base64 与取字节、解压等常用辅助能力,够应付大多数自定义改写。plugin://name 规则把命中的请求 / 响应交给你自己的插件服务处理(以 HTTP 方式调用),插件返回改写后的内容,或直接返回一份 Mock。
语言无关——团队用任意语言实现都行。处理是有固定先后的:一条流量依次经过 请求规则 → 请求脚本 → 请求插件 → 请求断点 → 转发 / Mock → 响应规则 → 响应脚本 → 响应插件 → 响应断点。记住一句话: 先自动规则、再脚本、再插件,最后才轮到断点手动介入,各司其职、互不打架。
| 现象 | 多半是 | 怎么办 |
|---|---|---|
| 规则一点反应都没有 | 这条流量根本没走代理会话、或还是密文 | 先回 代理抓包 确认流量经过工具且 已解密,再谈改写 |
| 保存后仍不生效 | 匹配没命中,或规则所在分组被关了 | 核对匹配写法(精确 /
*. 通配 /
regex:// /
$ 整条 URL /
:端口);确认分组开关是打开的 |
| 某行标红 / 校验不过 | 该行语法不对(每行单独校验) | 从 速查表点选对应动作重新插入,照着改值,别手打整段语法 |
| 断点没弹框 |
breakpoint:// 的阶段选错,或全局拦截没开 |
只拦请求用
req、只拦响应用
res、都拦用
both;或打开会话级拦截开关 |
| 拦下的流量自己放行了 | 停留太久触发了自动放行 | 这是防卡死的兜底,及时处理即可;批量命中时用「一键全部放行」 |
| 动态值没被替换 | 变量名写错或场景不支持 | 核对
${...} 拼写;命名值
{name} 主要用于请求 / 响应改写,WebSocket 帧改写的替换值用
${...} |
| Mock 返回了但客户端报错 | body 格式或状态码不对 | 用 `mock://200 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70044672/viewspace-3176955/ ,如需转载,请注明出处,否则将追究法律责任。