用一个二进制搞定 HTTP 捕获、回放与转发
日常调 Webhook 时,常常会同时遇到抓包、重放、转发和故障复现。
如果每一步都换一套工具,切换成本很高。
ReqTap 的好处是把「采集 + 存储 + Web 控制台 + 转发」合在一个可执行文件里,开箱就能用。
这篇文章整理的是我常用的一套流程。
ReqTap 是什么
ReqTap 是一个跨平台、零外部依赖的 HTTP 请求捕获与调试工具,核心能力包括:
- CLI 实时查看请求(彩色输出、结构化日志)
- 内置 SQLite 持久化(可检索、筛选、导出)
- Web 控制台实时观察(WebSocket 推送)
- 请求回放(改目标地址、Header、Body、Query 后重发)
- 多目标异步转发(超时、重试、并发控制)
它最大的优势是简单:不用额外搭数据库或消息队列。
安装方式(推荐顺序)
Homebrew(macOS 推荐)
1 | brew tap funnyzak/reqtap |
一键安装脚本(跨平台)
1 | curl -fsSL https://raw.githubusercontent.com/funnyzak/reqtap/main/scripts/install.sh | bash |
Docker
1 | docker pull funnyzak/reqtap:latest |
5 分钟上手
默认启动
1 | reqtap |
默认监听地址:http://0.0.0.0:38888/reqtap
发一个测试请求
1 | curl -X POST http://localhost:38888/reqtap \ |
打开 Web 控制台
默认访问:http://localhost:38888/web
登录后可以:
- 实时看流量
- 按方法/路径/关键词筛选
- 导出 JSON/CSV/TXT
- 发起请求回放
常用命令组合
修改端口与路径
1 | reqtap --port 8080 --path /reqtap/ |
开启文件日志
1 | reqtap --log-file-enable --log-file-path ./reqtap.log |
转发到多个下游
1 | reqtap \ |
控制存储策略
1 | reqtap \ |
实战里最关键的几个点
配置优先级
配置覆盖顺序是:
- 命令行参数
- 环境变量
- 配置文件
- 默认值
实操上很顺手:基础配置写 config.yaml,环境差异放环境变量,临时排查时再用命令行覆盖。
Path Strategy(转发路径策略)
入口路径和下游路径不一致时,ReqTap 提供三种策略:
append:保留原始路径拼接转发strip_prefix:先移除监听前缀再转发rewrite:按规则重写路径(支持前缀/正则)
做路由迁移或多环境联调时,这个能力很实用。
Web 控制台账号安全
项目示例里会带默认账号,只适合本地体验。
实际使用时记得改掉默认凭据,并限制暴露范围。
适用场景建议
ReqTap 特别适合这些场景:
- Webhook 开发调试(GitHub / Stripe / Zapier / n8n)
- 服务入口流量采样与故障复现
- CI 里一次性流量捕获(配合
--json) - 设备或 SDK 上报数据的离线回放
如果你经常需要反复重放和对比 HTTP 请求,ReqTap 值得常驻工具箱。
参考
- 项目仓库:funnyzak/reqtap

