Skip to content

Repository files navigation

ResponseRewriter

ResponseRewriter 图标

无需改后端、不用起 Mock 服务,直接在浏览器里拦截并改写接口响应。

Chrome MV3 MIT License 69 tests passed English


你遇到过这些情况吗?

痛点 常见做法 ResponseRewriter
后端接口挂了,前端没法继续调 等着后端修 编一条规则,直接返回假数据继续干
联调时要反复改后端返回值看效果 改代码重启、或者 Postman mock 填一行 JSON,刷新页面立刻生效
线上出 bug 想临时修一下返回值 热修复发版,流程长 写条正则匹配,脚本动态改写,关掉就恢复
想试一下某个极端数据下页面会不会崩 数据库里造数据 写条规则把某个字段改掉,马上验证
想知道某个请求到底返回了什么 切到 Network 面板翻半天 右侧面板直接列出每次请求,原始/改写内容逐行对比

一句话:你在页面里看到的接口数据,随时可以接管。


为什么选它而不是 Postman Mock / 抓包工具 / Whistle ...

  • 零切换 — 不用离开正在调试的页面,不用配代理、不用改 hosts,装好扩展就能用
  • 页面内生效 — 拦截发生在页面 JavaScript 层面,页面代码感知到的就是改写后的数据,和真实返回一样
  • Fetch 可以不出发服务器 — Mock 模式直接拦截 fetch() 调用,请求连网络层都不进,DevTools Network 里也不会出现
  • 规则即数据 — 一条 JSON 就是一条规则,导入导出、分享给同事,版本控制友好
  • 所见即所得 — 每次命中都有完整的原始/改写对比记录,改了哪里一目了然

快速上手

30 秒创建第一条规则,刷新页面立刻生效

# 1. 克隆项目
git clone https://github.com/FutaoSmile/ResponseRewriter.git

# 2. Chrome 打开 chrome://extensions/ → 开启开发者模式 → 加载已解压的扩展程序 → 选择项目目录

# 3. 点击扩展图标,打开管理页面,开始创建规则

首次安装自动带入 4 条停用的示例规则和 4 条示例日志,覆盖全部匹配方式和处理模式,不用配就能看懂用法。


四种响应处理方式,按场景选

方式 你写什么 效果 什么时候用
整段替换 {"code":0,"data":{...}} 响应完全替换成你写的内容 快速 Mock,不看原响应
JSON 合并 {"data":{"role":"admin"}} 只覆盖你指定的字段,其余保留 只想改某几个字段
JS 转换 一段脚本,可访问 originalResponsecontext 根据原响应动态计算新结果 复杂逻辑:加密、拼接、条件替换
拦截返回 一段 JSON Fetch 不发往服务器,直接返回 接口还没写好,不想看到 404
// JS 转换示例 — 根据原响应和请求信息动态改写
const data = JSON.parse(originalResponse);
data.role = "admin";
data.requestUrl = context.url;
return data;

核心亮点

拦截日志 + 命中记录,两层视角

  • 全局拦截日志:流式记录每一次拦截事件,方法、时间、规则名称一目了然
  • 单条规则命中记录:点击任意规则的命中数,只看它的每一次匹配
  • 每个日志可展开为原始 → 改写的逐行差异对比,JSON 自动格式化去噪

URL 匹配三模式

精确匹配(按路径)、包含匹配(按片段)、正则匹配(动态参数 URL),三种都会忽略查询参数,别担心 ?v=123 干扰

规则执行顺序可控

拖拽排序、Alt+↑/↓ 键盘排序,多条命中同一请求时按列表顺序依次处理

暗黑模式、四国语言

中日英韩完整翻译;点击右上角语言图标选择语言,使用太阳/月亮图标切换浅色与暗黑主题

零依赖,纯原生实现

不装 Node 也能用。node --test 直接跑 69 项测试,覆盖 UI 模块、规则模型、响应差异格式化、隐私同意与页面通信边界等


权限说明

Chrome 只申请两个权限,不读取浏览历史、不访问 cookie:

  • storage — 本地保存规则和日志
  • <all_urls> — 让注入脚本能在你要调试的页面中运行

首次启用拦截前,扩展会明确说明本地处理的数据并征得同意。只有同意后才会安装 XHR/Fetch 拦截器;命中的请求 URL、请求方法、原始响应和改写后响应仅保存在本机,不会发送给开发者或第三方。详见 隐私政策

支持 Chrome 114 及以上版本。


注意事项

  • 面向文本响应(JSON 等),不支持二进制
  • 日志保留最近 100 条,单条响应最多存 20,000 字符
  • JS 转换脚本在页面上下文执行,请只使用自己编写的可信脚本
  • 这是开发和测试工具,不建议在包含敏感数据的页面持续启用

完整说明见 注意事项和限制


参与贡献 · 许可证

欢迎提 Issue 或 PR,保持改动聚焦、延续现有原生 JS 风格。

MIT License · 规则拖拽基于 SortableJS 1.15.7(同样 MIT)

About

Chrome extension to intercept Fetch requests, mock API responses locally, and rewrite XHR/Fetch responses with configurable rules.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages