软件推荐:Reqable

介绍

Reqable = Fiddler + Charles + Postman

Reqable 是一款国产的 API 抓包调试和接口测试工具,作者 Megatron King 也是 HttpCanary 的开发者。它把抓包和接口测试放进了同一个应用:一边用 MITM 代理抓 HTTP/HTTPS 流量,一边可以把抓到的请求存进集合,改完参数直接重发,不用在 Charles 和 Postman 之间来回切换。

名字的拼写是 Reqable,不是 Requable,按 Requable 搜基本找不到官网。

我在 2021 年写过软件推荐:Charles,之后抓包一直用 Charles。最近排查一个要挂很久才复现的问题,又把 Charles 翻出来长时间开着,结果被它的稳定性折腾得够呛,于是换成了 Reqable。

为什么换掉 Charles

原因很简单:Charles 挂不住。

我的用法是早上打开 Charles,让它一直在后台挂着,中间该干嘛干嘛,等那个偶发的请求自己出现。我这边的情况是,挂几个小时之后 Charles 就会崩溃:界面卡住不动,或者进程直接没了,只能重启重来。重启之后系统代理要重新确认,之前建立的连接全断,等于白等。

短时间抓包(几分钟、十几分钟)基本遇不到这个问题,所以很容易被忽略;但只要你的场景是「挂着等」,它就会稳定地找上门。我这边不是偶尔碰上一次,而是挂久了大概率能碰上。

另外还有两个日常能感觉到的问题:

  • 启动慢。双击图标到能操作要等几秒,机器上同时开着 IDE 和浏览器时更久。
  • 界面卡。请求攒到几万条以后,滚动列表、切换请求、打开大响应体都有明显延迟。

Charles 是用 Java 写的,安装目录里直接带了一套 Java 运行时。这套技术栈放在十几年前没什么问题,但界面(Swing)和代理逻辑都跑在同一个 JVM 里,长时间运行、大流量下的表现就很难让人满意。

最大的优点:挂一天也不崩

换到 Reqable 之后,最直接的感受是:它真的可以一直开着。

同样的用法,早上打开,点右上角的启动,然后就不管了。中间抓包列表涨到几万条,下午、晚上再回来看,窗口还在,代理还是通的,滚动和搜索也不卡。挂机一整天没有崩过,内存占用也没有一路往上涨。

对我来说这比任何功能都重要。抓包工具的价值在于「需要它的时候它在」,一个会自己退出的工具,功能再多也用不上。

能稳住,和它的技术栈有关系。官方在关于我们里写明 Reqable 基于 Flutter 框架开发;从安装目录也能看出来,界面是 flutter_windows.dll 加一堆 Flutter 插件,代理和协议处理则是 reqable_netbare.dll、reqable_http.dll、reqable_cronet.dll 这些原生库。

这样拆开的好处很直接:

  • 抓包列表再长,也只影响界面;界面再忙,也不挡代理转发。
  • 代理核心不依赖 JVM,不会出现 Java 堆越大、GC 越频繁,最后把整个进程拖死的恶性循环。
  • Flutter 是自绘渲染,长列表滚动、搜索、切标签页比 Swing 顺滑得多。

最直观的差别是快:启动快,点开请求快,搜索快。Charles 那套 Java 加 Swing 的界面,在列表长、数据大的时候会明显拖后腿,Reqable 的 Flutter 界面则一直很跟手。

官方首页有一组启动时间、安装空间和内存占用的对比图,和我的体感一致。安装包 30 MB 左右,冷启动和常驻内存都比 Charles 轻。

环境

  • Windows 10 22H2
  • Reqable 3.2.23

3.x 改成了账号体系,界面和设置项跟 2.x 有出入,网上一些老教程的截图对不上,建议直接看官方文档。

下载安装

官网提供安装版 Setup.exe 和免安装的压缩包,Windows 下建议用安装版,会自动配置注册表、关联 HAR 文件:

安装过程一路下一步即可,默认装在 C:/Program Files/Reqable,首次启动是中文界面(跟随系统语言)。

软件分社区版(免费)和订阅版,社区版没有商用限制,个人日常抓包够用,具体限制放在后面的「不足」里说。版本和价格以官网的定价页为准。

第一次使用

安装证书

HTTPS 抓包需要信任 Reqable 的根证书。点顶部工具栏的盾牌图标,弹窗里直接点现在安装,系统会弹权限确认,按提示确认即可。装好后盾牌是绿色的。

自动安装失败的话,弹窗里有手动安装的步骤可以照着做。证书是每台设备独立生成的,不用担心和别人的冲突。

开启代理

点右上角的启动按钮,Reqable 会自动把系统代理指向 127.0.0.1:9000(默认端口,可以改)。

顶部有两个状态图标要看:

  • 网络图标:绿色表示系统代理已生效,黄色表示没生效,点一下可以自动设置。
  • 盾牌图标:绿色表示根证书已安装。

两个都是绿色之后,打开浏览器访问 https://reqable.com 验证一下,请求会实时出现在列表里。

用之前记得关掉 Clash 之类的代理软件,它们会和 Reqable 抢系统代理;确实需要走上游代理的,用 Reqable 的二级代理。

和 Charles 的对应关系

从 Charles 迁过来几乎没有学习成本,常用功能都能对上:

功能 Charles Reqable
开关代理 Proxy Settings 顶部 启动 / 网络图标
解密 HTTPS SSL Proxying Settings SSL 代理
远程/本地映射 Map Remote / Map Local 重写
断点 Breakpoints 断点
改写 Rewrite 重写 / 脚本
复制请求 Copy cURL 右键复制 cURL
会话文件 .chls HAR(也能读 .chls)

之前抓的 Charles 会话也不用扔:Reqable 支持打开 .chls,不过它本身不解析这个格式,而是调用 Charles 的命令行转成 HAR,所以机器上得留着 Charles 并配置好安装目录。

其他值得一提的功能

抓包和接口测试打通

这是它和 Charles 最大的功能差异。选中一条抓到的请求,右键就能存进 API 集合,改完参数直接重发;反过来,接口测试时也可以打开跟随调试,把测试请求也抓下来看。日常调接口基本不用再开 Postman。

Python 脚本

和 Charles 的 Rewrite 类似,但 Reqable 支持用 Python 写脚本,在请求发出前、响应返回后改数据。脚本能直接操作请求头、请求体、状态码,调一些加密参数时比配一堆 Rewrite 规则灵活。

筛选和搜索

支持按应用、域名、状态码、数据类型、关键词组合过滤,搜索条件可以保存。列表大了以后,比 Charles 的 Filter 好用不少。

对比

可以把两条请求加进对比池,直接看请求头、请求体、响应的差异,排查「同样的接口为什么这次返回不一样」很快。

移动端协同

手机装 Reqable,扫码连上电脑,不用手动设 Wi-Fi 代理,手机流量会自动转到电脑端显示。Android 用 VPN 模式抓本机流量,证书可以在电脑上通过 ADB 一键装到手机(需要 Root),没有 Root 就手动装用户证书。

极速模式

如果只是挂着等某个请求,可以开极速模式:列表不实时刷新,但重写、断点、脚本、网关这些规则照常生效,资源占用更低。长时间挂机时我一般会打开它。

与 Charles 对比

Reqable Charles
技术栈 Flutter + 原生核心 Java(Swing + JVM)
长时间挂机 一天不崩(我的环境) 挂几小时后崩溃
启动 / 响应 快 慢半拍
抓包 + 接口测试 一体 只有抓包
平台 Windows / macOS / Linux / Android / iOS Windows / macOS / Linux
界面语言 原生中文 英文
价格 社区版免费,订阅版 ¥99/年 买断 $50,30 天试用

Charles 依然有它的价值:老牌、资料多、功能成熟,短时间抓包没什么问题。但如果你和我一样需要长时间挂着,或者受不了它的启动速度和界面延迟,Reqable 是更合适的选择。

不足

  • 闭源。社区版免费,但代码不可见,对开源有硬性要求的可以选 mitmproxy。
  • 社区版有限制:单窗口、重写/脚本/断点等规则各有 3 条、历史记录只保留 30 天、只能 1 台设备在线。重度使用需要订阅,¥99/年。
  • 抓包不支持 HTTP/3(QUIC),只有接口测试支持。目标流量如果走 QUIC,得让客户端回退到 TCP。
  • 移动端不提供重写、断点、脚本这些调试功能,要改数据还得用桌面端。
  • 相对年轻,网上教程和问答比 Charles 少,冷门问题要翻官方文档(中文文档质量不错)。
  • 迭代很快,3.x 的版本号跳得勤,小 bug 不算少(看更新日志就知道),不过核心抓包我没遇到过问题。

总结

如果你的抓包场景是「打开、挂着、等它出现」,稳定性就是第一位的,Reqable 在这件事上明显强过 Charles:我这边挂一整天没崩过,启动和界面响应也快一个档次。

如果你只是偶尔抓几分钟包,Charles 照样能用;但如果你已经被它的崩溃、卡顿折腾过,或者想顺手把接口测试也放在一个工具里,可以直接下个社区版试试,免费,迁移成本也就是装个证书。

版权声明:
作者:倾城
链接:https://www.techfm.club/p/239131.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>