Requestly 是一款开源 HTTP 拦截与 Mock 工具。它最实用的地方,是让开发者不改业务代码、不另起一套代理服务,就能在浏览器里重定向请求、修改 Header、覆盖接口响应、注入脚本,或者模拟延迟和异常。
这类工具很适合个人调试,但进入内部团队场景后,问题会从“怎样改请求”变成“规则怎样共享、账号怎样管理、数据放在哪里”。官方项目的 Web App 与账号、Firebase、邀请和订阅体系结合得比较深,直接把源码部署起来,并不等于得到了一套真正独立的私有服务。
因此我基于 Requestly 做了一次自托管改造:用 PostgreSQL 保存团队账号和规则,以本地 Fastify 服务签发 JWT,增加超级管理员与团队 RBAC,再让浏览器插件可以指向任意自托管地址。本文记录 Requestly 的基本用法,也复盘这次改造为什么发生、方案怎样几次转向,以及最终得到了什么。
实现基于 Requestly v26.5.22-pre-restructure,完成于 2026 年 8 月。代码在 citrusjunoss/requestly 的 codex/postgres-self-hosted 分支。
Requestly 能解决什么问题
Requestly 的核心不是“抓包”,而是在请求真正到达目标之前改变它。浏览器插件适合处理当前浏览器里的流量,桌面端则可以覆盖浏览器、移动设备和其他桌面应用。
常见使用方式包括:
- 把生产或测试环境的某个接口重定向到本地服务。
- 将线上 JavaScript、CSS 替换为本地文件,快速验证修复。
- 添加、删除或覆盖请求与响应 Header,例如调试 CORS、鉴权和缓存。
- 修改请求参数、请求体或响应体,模拟后端尚未完成的字段。
- 直接返回 Mock 数据,覆盖成功、空数据、异常和边界场景。
- 注入 JavaScript 或 CSS,验证页面行为和样式。
- 增加网络延迟或失败响应,观察 loading、超时和重试逻辑。
一个典型场景是:页面原本请求 https://api.example.com/users,本地正在开发新接口,希望暂时改到 http://localhost:8080/users。在 Requestly 中创建 Redirect Rule,设置来源 URL、目标 URL 和匹配条件,启用规则并刷新页面即可。业务仓库不需要提交临时地址,也不必修改其他人的环境。
规则通常按下面的步骤使用:
- 安装浏览器插件,打开 Requestly Web App。
- 根据目标选择 Redirect、Modify Headers、Modify Response、Mock 或 Delay 等规则。
- 设置 URL 匹配范围,尽量限定域名、路径和请求方法,避免误伤其他请求。
- 填写替换内容或 Mock 响应,保存并启用规则。
- 在浏览器 Network 面板确认规则是否命中,再完成异常、回退和关闭规则的验证。
规则可以分组、开关和共享,这也是它比浏览器 DevTools 临时 Override 更适合长期开发流程的地方。