抓包鹰抓包工具规则改写与断点拦截 改请求 Mock 数据的几种操作方式 规则改写与断点拦截抓包让你「看」规则和断点让你「改」。本篇教你三种改流量的手法加一条规则——从速查表点选一个动作、填上值保存即热生效成千上万条流量自动改不用写脚本设一个断点——把请求或响应半路拦下来手动编辑再放行或丢弃写一段脚本——只有前两者都表达不了的复杂逻辑才动用脚本兜底。改哪种、改到什么程度你说了算。一、什么时候用适合你满足下面任一条想给某些请求统一改个头 / 换个 UA / 加个参数或把线上接口映射到本地开发服务器调试。后端接口还没好想先**返回一份假数据Mock**让前端跑起来。想逐条盯着改请求发出前、或响应回来前暂停亲手改完再放行改错的直接丢弃。规则和断点都搞不定的复杂改写逻辑想用脚本或自己的服务接管。如果你只是想把某条抓到的请求改改参数再重发一遍、或压测那不是本篇——见 请求构造与重放、会话重放与压力测试。二、前置条件规则改写与断点拦截作用在代理抓包会话上——流量得先经过工具、能被解密才谈得上改。请先按 代理抓包 把会话建好、证书装好证书安装确认请求列表里能看到已解密的明文。心里有个「要改哪些流量」的范围一个域名、一批子域、某个端口或某条完整 URL。下面的匹配语法都围绕它展开。三、分步操作A. 加一条改写规则保存即生效打开会话的「规则」面板。规则一行一条形如匹配 动作://值空行和#开头的注释会被忽略每行单独校验。不用背语法面板自带一份可点击的速查表转发 / Mock / 改头 / 指纹 / 断点等点一下就把对应示例插进当前行你照着把值改成自己的即可。先写匹配决定这条规则管哪些流量常用几种精确域名traceeagle.com也可带路径前缀traceeagle.com/path通配子域*.traceeagle.com主域 所有子域一起命中正则匹配整条 URLregex://…精确整条 URL$https://host/path按端口:8080取反任意匹配前加!再写动作例如给命中的请求加一个响应头*.example.com resHeaders://X-Debug: 1直接返回假数据、不请求服务器api.example.com/user mock://200|{name:tofu}把线上域名映射到本地开发服务器用速查表里的map-remote示例改成你的本地地址一键放开 CORS、改状态码、改 UA / Referer、查找替换请求体或响应体……都能在速查表里找到对应动作。值里可以用动态变量让一条规则适配多变的流量${url} ${host} ${port} ${method} ${status} ${now} ${random} ${randomUUID} ${req.headers.X} ${res.headers.X}等常用的值还能定义成命名值{name}一处定义、到处引用。保存即热生效不用重启会话。规则多了可以组织成命名分组按组开关临时想停哪批就关哪批。想改的不止 HTTPWebSocket 帧可按方向做oldnew替换裸 TCP / UDP 字节流也能按方向替换还能做弱网模拟请求 / 响应延迟、带宽限速含 2G / 3G / 4G 预设。这些同样是从速查表点选、填值。B. 设断点拦下来手动改再放行需要逐条精细控制时用断点在请求发出前或响应返回前暂停弹出编辑框让你亲手改。两种拦法规则触发精确拦某些流量在规则里加一条breakpoint://动作标明拦哪个阶段——只拦请求api.example.com breakpoint://req只拦响应api.example.com breakpoint://res请求和响应都拦api.example.com breakpoint://both全局拦截开关拦整会话打开会话级的拦截开关默认拦全部再用拦截过滤规则收窄按域名 / 方法 / 阶段只拦你关心的。流量命中后会暂停并弹出编辑框请求阶段可改方法、URL主机跟着 URL 变、请求头、请求体。响应阶段可改状态码、响应头、响应体。改完选择怎么处置放行Resume按你改后的内容继续发 / 继续返回。丢弃Abort丢掉这条客户端会收到一个网关错误。同时命中多条时它们会排队等你逐条处理也可以一键全部放行。放着不管也不会把流量卡死——长时间未处理会自动按原样放行。C. 脚本 / 插件兜底规则表达不了时再用规则和断点都搞不定的逻辑交给脚本或自己的服务JavaScript 脚本写onRequest(req)/onResponse(resp)直接改字段就生效。内置日志、同步外呼其它服务、跨请求暂存数据做计数器 / 缓存令牌、Base64 与取字节、解压等常用辅助能力够应付大多数自定义改写。HTTP 外呼插件用plugin://name规则把命中的请求 / 响应交给你自己的插件服务处理以 HTTP 方式调用插件返回改写后的内容或直接返回一份 Mock。语言无关——团队用任意语言实现都行。处理是有固定先后的一条流量依次经过请求规则 → 请求脚本 → 请求插件 → 请求断点 → 转发 / Mock → 响应规则 → 响应脚本 → 响应插件 → 响应断点。记住一句话先自动规则、再脚本、再插件最后才轮到断点手动介入各司其职、互不打架。四、验证确认改写真的生效了规则让客户端重新发一次命中的请求在请求列表点开那条看详情——加的头 / 改的状态码 / Mock 的假数据应当已经出现在请求或响应里。改动没生效时先确认这条规则已保存、所在分组没被关掉、匹配确实命中了这条 URL。断点触发后请求列表里该条会停住等待编辑框弹出放行后它按你改的内容继续丢弃后客户端收到网关错误。对照一下最终结果和你的编辑是否一致。五、不生效 / 拦不下来逐条排查现象多半是怎么办规则一点反应都没有这条流量根本没走代理会话、或还是密文先回 代理抓包 确认流量经过工具且已解密再谈改写保存后仍不生效匹配没命中或规则所在分组被关了核对匹配写法精确 /*.通配 /regex:///$整条 URL /:端口确认分组开关是打开的某行标红 / 校验不过该行语法不对每行单独校验从速查表点选对应动作重新插入照着改值别手打整段语法断点没弹框breakpoint://的阶段选错或全局拦截没开只拦请求用req、只拦响应用res、都拦用both或打开会话级拦截开关拦下的流量自己放行了停留太久触发了自动放行这是防卡死的兜底及时处理即可批量命中时用「一键全部放行」动态值没被替换变量名写错或场景不支持核对${...}拼写命名值{name}主要用于请求 / 响应改写WebSocket 帧改写的替换值用${...}Mock 返回了但客户端报错body 格式或状态码不对用 mock://200下一步想把某条请求改改参数、整条重新发一遍见 请求构造与重放。想把一批请求批量重放、或压测接口见 会话重放与压力测试。改前改后想逐字段对比差异见 请求对比。还没把流量抓下来 / 解密先看 代理抓包、证书安装抓到之后怎么读见 数据查看与解码。