Reqable API 调试与测试工具技术分析
一、概述
1. 产品简介
Reqable 是一款新一代 API 调试与测试一站式解决方案。其核心定位是将 Fiddler、Charles 和 Postman 三类工具的功能深度整合,提供流量分析(抓包)和 API 测试(接口调试)两大核心能力。
2. 核心价值
A. 功能整合
传统的 API 开发工作流需要多个工具配合:使用 Fiddler/Charles 抓包分析网络流量,使用 Postman 进行 API 测试。Reqable 将这两类功能深度整合,一个应用即可完成完整工作流。
B. 跨平台支持
支持 Windows、macOS、Linux 桌面平台,以及 Android 和 iOS 移动平台,一套授权覆盖所有平台。
C. 性能优势
基于 Flutter 和 C++ 开发,相比同类产品在启动速度、内存占用和安装体积上有明显优势。
3. 技术架构
Reqable 采用经典 MITM(中间人)代理模式实现流量捕获,支持 HTTP/1.x、HTTP2 和 HTTP3(QUIC)协议。
graph TB
subgraph 客户端层
A[浏览器/App]
B[移动端 App]
end
subgraph 代理层
C[Reqable 代理]
end
subgraph 服务端层
D[目标服务器]
end
A -->|配置系统代理| C
B -->|WiFi 代理/扫码转发| C
C -->|转发请求| D
D -->|返回响应| C
C -->|返回响应| A
C -->|返回响应| B二、核心功能
1. API 调试(抓包)
A. 协议支持
- HTTP/1.x 和 HTTP2:完全支持
- HTTP3(QUIC):部分支持
- WebSocket:基于 HTTP1 的升级
- 代理协议:HTTP/HTTPS/Socks4/Socks4a/Socks5
- TLS 协议:TLSv1.1、TLSv1.2、TLSv1.3
- 网络协议:IPv4 和 IPv6
B. 流量捕获
Reqable 通过系统代理配置捕获流量,支持:
- 二级代理:支持 HTTP/HTTPS 二级代理链
- 反向代理:无需信任 CA 证书即可调试 HTTPS 流量
- 源检测:识别流量来源的应用
- 镜像映射:配置指定域名和端口的镜像映射
C. 流量分析
- 搜索过滤:多条件搜索,支持应用、域名、协议、数据类型过滤
- 高亮显示:自定义规则以多种颜色高亮请求
- Diff 工具:比较请求和响应消息,快速定位数据差异
- 历史记录:自动保存录制列表便于回顾
D. 高级功能
重写功能:
- 重定向
- Map Local(本地映射)
- Map Remote(远程映射)
- 请求或响应修改
断点功能:
- 对请求或响应执行实时断点操作
- 支持修改后继续发送
脚本功能:
- 支持 Python 脚本处理请求或响应
- 预请求脚本和后请求脚本
网关功能:
- 对请求或响应执行屏蔽、暂停等操作
E. 证书管理
- 导入自定义 SSL 证书
- 分析证书绑定
- 双向认证请求
2. API 测试
A. 协议支持
- HTTP/1.1、HTTP2 和 HTTP3(QUIC)
B. 请求构建
- 从流量列表创建 REST API
- 从 cURL 导入
- 从 API 集合创建
C. 集合管理
- 保存 API 到集合
- 导入 Postman 集合
- 导入 Hoppscotch 集合
D. 环境管理
- 全局环境
- 用户环境变量
E. 请求编辑
- 批量编辑查询参数
- 批量编辑请求头
- 编辑表单
- Text/Json/Xml 编辑
- 文件上传
F. 认证支持
- API Key
- Basic Auth
- Bearer Token
G. 代理设置
- 自定义代理
- 系统代理
- 调试代理
H. 性能分析
- 查看请求不同阶段的耗时数据
I. 其他功能
- Cookie 管理
- cURL 导入导出
- 代码片段生成(支持 Python、Java、NodeJS 等主流语言)
- 历史记录自动保存
3. 协作功能
A. 桌面与移动端协作
移动端 App 可独立使用,也可与桌面端协作:
- 独立模式:无需依赖桌面端,独立进行流量录制和 API 测试
- 协作模式:通过扫描桌面端二维码,自动将移动端流量转发到桌面端,无需手动配置 WiFi 代理
B. 跨平台授权
一套授权覆盖所有平台,包括桌面端和移动端。
三、技术实现
1. 开发技术栈
- 前端框架:Flutter
- 底层实现:C++
- 代理机制:MITM(中间人代理)
2. 性能对比
根据官方测试数据(MacBook Pro 2017,2024 年 1 月最新版本):
| 指标 | Reqable | Charles | Fiddler |
|---|---|---|---|
| 启动时间 | 约 1 秒 | 约 3 秒 | 约 2 秒 |
| 安装体积 | 约 20MB | 约 80MB | 约 5MB |
| 内存占用 | 约 100MB | 约 200MB | 约 150MB |
3. 架构设计
graph LR
subgraph UI 层
A[Flutter 界面]
end
subgraph 业务层
B[流量捕获模块]
C[API 测试模块]
D[脚本引擎]
end
subgraph 网络层
E[代理服务器]
F[HTTP 客户端]
end
subgraph 数据层
G[会话存储]
H[集合管理]
I[环境变量]
end
A --> B
A --> C
B --> E
C --> F
B --> D
C --> D
B --> G
C --> H
C --> I四、功能对比
1. 与 Fiddler/Charles 对比
| 功能 | Reqable | Fiddler | Charles |
|---|---|---|---|
| 流量捕获 | ✅ | ✅ | ✅ |
| HTTP2 支持 | ✅ | 部分 | ✅ |
| API 测试 | ✅ | ❌ | ❌ |
| Python 脚本 | ✅ | ❌ | ❌ |
| 跨平台 | ✅ 全平台 | 仅 Windows | 全平台 |
| 移动端协作 | ✅ 扫码转发 | ❌ | 手动配置 |
| Diff 工具 | ✅ | 需插件 | 需插件 |
2. 与 Postman 对比
| 功能 | Reqable | Postman | |
|---|---|---|---|
| API 测试 | ✅ | ✅ | |
| 流量捕获 | ✅ | ❌ | |
| 从流量创建 API | ✅ | ❌ | |
| Python 脚本 | ✅ | JavaScript(预请求/测试) | |
| 绑定调试代理 | ✅ | ❌ | |
| 集合导入 | ✅ Postman/Hoppscotch | ✅ |
五、应用场景
1. 前端开发
- 捕获浏览器网络请求,分析接口调用
- 从流量快速创建 API 测试
- 对比前后端接口数据差异
2. 移动端开发
- 捕获 App 网络流量
- 通过扫码自动转发流量到桌面
- 分析接口性能和错误
3. 接口调试
- 手动构造和发送请求
- 测试不同参数组合
- 验证认证和授权机制
4. 接口测试
- 创建 API 集合
- 编写脚本实现自动化测试
- 导入 Postman 集合迁移
5. 问题排查
- 使用断点拦截请求
- 使用脚本修改请求响应
- 使用 Diff 工具对比数据
六、安装与部署
1. 系统要求
A. Windows
- 下载 Setup.exe 安装包
- 按安装程序指引完成安装
- 需要写入注册表(关联 har 等文件格式)
B. macOS
- 支持 Apple 芯片和 Intel 芯片
- DMG 安装:拖拽到 Applications 文件夹
Homebrew 安装:
brew install --cask reqable
C. Linux
- 需要 GTK 库支持
提供 x64 架构 deb 安装包
sudo apt install reqable-app-linux-x86_64.deb
D. 移动端
- 从 App Store 下载 iOS 版本
- 从 Google Play 下载 Android 版本
七、工作流程
1. 流量捕获流程
sequenceDiagram
participant C as 客户端
participant R as Reqable
participant S as 服务器
C->>R: 1. 配置系统代理
C->>R: 2. 发送 HTTP 请求
R->>R: 3. 拦截请求
R->>R: 4. 执行断点/脚本
R->>S: 5. 转发请求
S->>R: 6. 返回响应
R->>R: 7. 拦截响应
R->>R: 8. 执行断点/脚本
R->>C: 9. 返回响应
R->>R: 10. 保存到历史记录2. API 测试流程
graph TD
A[开始] --> B{创建请求}
B -->|从流量| C[选择流量记录]
B -->|从 cURL| D[导入 cURL]
B -->|手动创建| E[填写请求参数]
C --> F[编辑请求]
D --> F
E --> F
F --> G{发送请求}
G --> H[查看响应]
H --> I{保存?}
I -->|是| J[保存到集合]
I -->|否| K[完成]
J --> K八、高级功能
1. 重写规则
重写功能允许修改请求或响应:
- 重定向:将请求重定向到其他 URL
- Map Local:将远程请求映射到本地文件
- Map Remote:将请求映射到其他远程地址
- 修改:修改请求头、请求体或响应内容
2. 断点调试
断点功能允许在请求发送前或响应返回前暂停:
- 请求断点:在请求发送前拦截,可修改请求参数
- 响应断点:在响应返回前拦截,可查看和修改响应
- 条件断点:设置触发条件
3. Python 脚本
支持编写 Python 脚本处理请求和响应:
# 预请求脚本示例
def before_request(request):
# 修改请求头
request.headers['X-Custom-Header'] = 'Reqable'
# 修改请求参数
request.query['token'] = 'your_token'
return request
# 后响应脚本示例
def after_response(response):
# 处理响应数据
data = response.json
# 自定义逻辑
return response4. Diff 工具
比较两个请求或响应的差异:
- 请求对比:比较请求头、请求体、参数等
- 响应对比:比较响应数据
- 并排显示:直观展示差异
5. HAR 格式支持
- 自动关联 HAR 文件
- 支持 HAR 导出
- 支持打开 HAR 文件
6. Charles 会话支持
支持导入 Charles 会话文件,方便用户迁移。
九、界面定制
1. 主题支持
- 浅色主题
- 深色主题
2. 颜色定制
- 11 种强调色方案
- 15 种代码高亮颜色
十、许可证
1. 版本对比
- 社区版:免费提供,基础功能
- 专业版:付费解锁全部功能
2. 授权方式
一套授权覆盖所有平台,包括桌面端和移动端。
十一、技术特点总结
1. 优势
- 功能整合:抓包 + API 测试一站式
- 性能优异:启动快、内存占用低、体积小
- 跨平台:全平台支持,一套授权
- 移动协作:扫码自动转发,无需手动配置代理
- 脚本能力:Python 脚本扩展能力强
2. 适用人群
- 前端开发者
- 后端开发者
- 移动端开发者
- 测试工程师
- 接口调试人员
3. 替代方案
对于已有 Fiddler/Charles + Postman 工作流的用户,Reqable 可以作为统一替代方案,简化工具链,提高工作效率。