API抓包调试工具API抓包调试工具Reqable
Reqable是一款跨平台的专业HTTP开发和调试工具,在全平台支持HTTP1和HTTP2协议,简单易用、功能强大、性能高效,助力程序开发和测试人员提高生产力!
本站下载:Reqable
1. 介绍
Reqable的特点是简洁美观,基本功能免费,无需登录,安装即用。
- 20M左右的安装包体积。
- 跨平台,基于Flutter和C++开发。
- 支持亮色和暗色两种主题模式。
- 支持11种不同的强调色。
- 支持Atom One主题代码高亮配色。

Reqable桌面端支持 Windows/Mac/Linux 三大主流平台,具备抓包调试和API测试两大基本功能,可以将其看成是 Fiddler/Charles + Postman。
Reqable打通了API调试和测试之间的壁垒,例如可以从抓包数据中创建API进行测试,也可以在API测试时进行流量抓包分析。
- [x] 支持HTTP/1.x, HTTP2协议版本,HTTP3(QUIC)暂不支持。
- [x] 支持HTTP/HTTPS/Socks4/Socks4a/Socks5代理方式。
- [x] 支持HTTPS,TLSv1.1、TLSv1.2和TLSv1.3加密协议。
- [x] 支持基于HTTP1升级的WebSocket协议。
- [x] 支持HTTP/HTTPS二级代理(调试境外流量)。
- [x] 搜索筛选:提供书签、域名、快捷筛选栏和多条件等高级搜索方式。
- [x] 网关功能:对指定请求或响应进行屏蔽,挂起等操作。
- [x] 重写功能:预设规则对指定请求或响应进行重定向、替换或者修改。
- [x] 断点功能:对请求或响应进行实时断点操作,比如屏蔽,挂起或修改替换数据等。
- [x] 脚本功能:支持编写Python脚本处理实时请求或响应。
- [x] 镜像功能:对指定域名和端口配置镜像映射。
- [x] 测试联动:支持从调试列表创建API进行测试。
- [x] 历史记录:自动保存抓包的流量数据,方便回溯查看。
- [x] 重发回放:支持单个或多个请求进行回放测试。
- [x] 自动高亮:支持设定自定义规则对请求进行多种颜色高亮。
- [x] HAR支持:自动关联HAR格式文件,并支持HAR导出和导入。
2. 安装证书
Reqable使用经典的中间人(MITM)技术分析HTTPS流量,当客户端与Reqable的代理服务器(下文简称中间人)进行通信时,中间人需要重签远程服务器的SSL证书。为了保证客户端与中间人成功进行SSL握手通信,需要将中间人的根证书(下文简称CA根证书)安装到客户端本地的证书管理中心。
如果目标客户端是PC应用程序,CA根证书需要安装到PC的证书管理中心;如果目标客户端是移动端App应用程序,CA根证书则需要安装到手机的证书管理中心。如果没有流量分析的需求,可以忽略这一步。
Reqable会为每个用户自动生成完全不同的CA根证书,并使用随机的证书密钥,所以不必担心此证书会被第三方利用。
2.1 桌面端安装
不同的桌面端平台(这里主要是Windows/MacOS/Linux),证书安装方式有所不同,为了简化安装过程,Reqable提供了一键安装证书的功能。
证书的安装入口位于顶部操作栏,点击盾牌图标打开弹窗。

直接点击现在安装:

点击后系统会弹出确认弹窗或者输入账户密码进行授权,按照提示操作确认即可。不出意外的话,证书会自动安装成功;如果自动安装失败,可以切换到手动安装的Tab按照步骤手动安装。

注意,在Linux设备上Chrome和Firefox浏览器有内置的证书管理系统,还需要将CA根证书安装到浏览器的证书管理系统中,请按照Reqable内的提示进行操作。
CA根证书未安装或安装失败时,盾牌图标显示为黄色;安装成功后,盾牌图标显示为绿色。
2.2 移动端安装
如果有分析移动端应用的需求,必须在移动端安装CA根证书。Reqable中内置了Android和iOS证书安装的指引,请切换到Android和iOS的Tab按照步骤进行安装。

由于Android 7.0起不再信任用户证书,需要将CA根证书安装到系统证书目录,这要求能够Root设备并解锁System分区。
3. 分析流量
在API调试中,获取流量是第一步也是最基本的操作,这里讲解下如何使用Reqable获取流量,通俗地讲就是抓包。
首先,需要启用Reqable的调试功能,点击最右上角的启动按钮进入调试状态。在调试状态下,任何HTTP请求经过Reqable的MITM代理服务器都会显示到界面上。
为了保证流量经过Reqable的MITM代理服务器并信任Reqable的CA根证书,请检查下面两项:
- 系统代理状态
如果系统代理已经设置,网络图标是绿色;如果系统代理未设置,网络图标是黄色,点击网络图标可以自动设置系统代理。
- CA根证书状态
如果CA根证书安装成功,盾牌图标是绿色;如果CA根证书未安装成功,网络图标是黄色,点击盾牌图标可以进入CA根证书安装界面,详细步骤请阅读上一节。
一切就绪后,我们可以看到如下的界面:

打开浏览器,输入地址 https://reqable.com 并回车,这里演示使用的是Chrome浏览器。回到Reqable,调试列表中已经捕获到了该网站的全部请求数据。

我们可以选择一个图片请求,双击打开详情面板,能够看到该请求的详细信息。注意,再次双击该请求,可以关闭详情面板。

点击侧边栏的工作台图标,打开调试列表的工作面板。然后展开reqable.com此域名的结构树,可以查看该域名下所有请求的目录结构,点击选择可以查看该请求的详情。

点击最右上角垃圾篓图标(快捷键 Control + Shift + R )可以清空列表。
这里,我们已经完成了获取流量最基本的操作了。
4. 开始调试
捕获到流量之后,开始使用调试功能进行数据模拟等各种测试。Reqable提供了非常强大的调试功能,主要有重写、断点和脚本功能,下面分别来进行介绍。
4.1 重写
重写是Reqable的核心调试功能之一,通过预设规则自动修改请求或者响应。重写功能可以通过四种方式启用或关闭: - 直接点击重写图标 - 右键重写图标 -> 启用/禁用 - 托盘 -> 重写 -> 启用/禁用 - 快捷键 Shift + Control + K
当重写功能开启后,快捷操作栏(Quickbar)上的重写图标将变为绿色激活状态。

Reqable的重写支持下面5种模式。
4.1.1 重定向
重写重定向提供了非常细粒度的重定向操作,例如一个客户端请求A:https://hello.com/foo,可以重定向为返回请求B:https://world.com/bar 的结果。

4.1.2 替换请求
表示整体替换请求数据,支持替换的部分包括:请求方法、请求路径、请求头和请求体。从流量列表创建重写-替换请求规则,可以自动带入原始请求数据,我们可以在其他基础上进行修改。替换的时候,也可以选择一个本地文件进行替换。

4.1.3 修改请求
相比于替换请求,修改请求提供了更加细致化的修改策略。例如删除查询参数,修改请求头中的某一项,正则替换请求体的内容,适合动态修改。

4.1.4 替换响应
基本操作同上面替换请求。
4.1.5 修改响应
基本操作同上面修改请求。
4.2 断点
断点是Reqable的核心调试功能之一,通过设定匹配规则,触发断点后实时控制和修改请求和响应。断点功能可以通过四种方式启用或关闭: - 直接点击断点图标 - 右键断点图标 -> 启用/禁用 - 托盘 -> 断点 -> 启用/禁用 - 快捷键 Shift + Control + B
当断点功能开启后,快捷操作栏(Quickbar)上的断点图标将变为绿色激活状态。

接下来新建一个断点规则:

输入规则名称和匹配的URL,URL支持简单的Wildcard * 和 ? 匹配。完成后,当请求或响应发生时,便可以进入断点操作界面。

我们可以在这个页面上,修改数据然后提交。
每个断点请求(响应)有180s的时间进行操作,超时后断点会自动失效,暂停住的请求和响应会继续。
4.3 脚本
脚本是Reqable的核心调试功能之一,支持编写python脚本处理HTTP请求和响应。Reqable提供了一套基于Python的API,在脚本中,我们可以对请求和响应的数据进行修改、替换或者删除,甚至还可以中断请求和响应。除了使用Reqable内置的API,用户还可以使用自己安装的各种Python包,例如requests等。
脚本功能可以通过四种方式启用或关闭: - 直接点击脚本图标 - 右键脚本图标 -> 启用/禁用 - 托盘 -> 脚本 -> 启用/禁用 - 快捷键 Shift + Control + P
当脚本功能开启后,快捷操作栏(Quickbar)上的脚本图标将变为绿色激活状态。

脚本使用python3运行,必须使用python3的语法。脚本提供两个函数调用入口:onRequest和onResponse,顾名思义即请求和响应。

脚本修改后会自动保存,也可以手动使用快捷键 Control + S 立即保存。
下面是脚本的功能代码示例:
def onRequest(context, request): # 打印请求方法,例如:POST print(request.method) # 打印请求路径,例如:/foo print(request.path) # 打印请求参数列表,例如:[('foo', 'bar'), ('hello', 'world')] print(request.queries) # 打印请求头列表,例如:['host: reqable.com', 'content-length: 6', 'content-type: text/plain'] print(request.headers) # 打印请求体,例如 {"foo":"bar"} print(request.body) # 修改请求方法 request.method = 'GET' # 修改请求路径 request.path = '/bar' # 修改请求参数,更多API请参考下文`CaptureHttpQueries` request.queries['foo'] = 'bar' # 直接赋值请求参数 request.queries = 'foo=bar&hello=world&abc=123' request.queries = { 'foo': 'bar', 'hello': 'world', 'abc': '123' } # 删除指定请求参数 request.queries.remove('foo') # 修改请求头,更多API请参考下文`CaptureHttpHeaders` request.headers['content-type'] = 'application/json' # 直接赋值请求头 request.headers = [ 'content-type: application/json', 'foo: bar' ] # 删除指定请求头 request.headers.remove('foo') # 将文本设置给Body request.body = 'Hello World' # 将字典设置给Body,会自动转成JSON request.body = { 'foo': 'bar', 'abc': 123 } # 将二进制数据设置给Body request.body = b'\x01\x02\x03\x04' # 将本地文件设置给Body request.body.file('/User/Reqable/Desktop/test.png') # JSON类型的Body转成字典 request.body.jsonify() # 然后操作字典来修改Body request.body['foo'] = 'bar' request.body['error'] = { 'code': 1000, 'message': 'Runtime Error' } # Done return request
更多的脚本API可以参考文档:https://reqable.com/zh-CN/docs/capture/addons
5. API测试
API测试是Reqable的两大基本功能之一,帮助开发者调试接口API。Reqable目前支持HTTP1.1、HTTP2和HTTP3(QUIC)协议,核心网络库采用的是Cronet,业内技术最领先的HTTP网络请求框架。
- [x] 支持HTTP/1.1, HTTP2和HTTP3(QUIC)协议。
- [x] 多个会话:支持创建多个Tab进行API测试。
- [x] 批量编辑:支持批量编辑请求参数、请求头、表单等。
- [x] 授权设置:支持API KEY、Basic Auth和Bearer Token等授权方式。
- [x] 代理设置:支持自定义代理配置,系统代理和调试代理等。
- [x] 性能测试:可以查看请求在不同环节的耗时数据。
- [x] Cookie管理:自动保存Cookie或在请求头中自动加入关联的Cookie。
- [x] 历史记录:自动保存发送的请求和响应数据,方便回溯查看。
- [x] cURL支持:可以导入和导出cURL。
- [x] 代码生成:支持java/python/go/javascript/kotlin等主流网络框架代码生成。

Reqable支持将API请求收藏到集合中,并可以随时打开编辑。同时,Reqable还支持导入Postman等格式的API集合,并且可以将调试列表中的API保存到集合。

6. 结尾
Reqable还提供了非常多实用的功能,包括API测试、重发回放、代码生成等,最关键的是Reqable是可以免费使用的,下载即用,无需注册无需登录。
- 官网:https://reqable.com
- Github: https://github.com/reqable/reqable-app