您的浏览器版本过低,页面的核心功能将无法正常使用。 建议改用 EdgeChromeFirefox 最新版, 也可将当前浏览器升级到最新版后重试。

Windows 下载、安装 Bruno,开源 API 调试客户端,本地存储、Git 协作,免配置一键安装(附安装包bruno_4.1.0_x64_win.exe)

发布于 2026/9/19
BrunoAPI客户端Postman替代品接口测试开源软件GraphQLGit协作Mock Server离线开发者工具
Bruno 是本地优先的开源 API 客户端,请求集合以纯文本 Bru 格式存入文件夹,可用 Git 协作。支持 HTTP、GraphQL、gRPC、WebSocket,内置 Mock Server 与密钥管理,离线运行不上传数据。

封面.png

1. Bruno 简介

Bruno 是一款开源的 API 调试客户端,目标是取代 Postman、Insomnia 这类工具所代表的现状。它由开发者 Anoop M D 创建——据其自述,起因是在做 API 集成项目时,电脑已经装不下又一个笨重的 Electron 应用(Postman),而市面上找不到合适的替代品,于是干脆自己写一个。Bruno 这个名字来自他养的狗。项目于 2022 年 9 月以 MIT 协议开源,截至本文写作时在 GitHub 上已积累约 4.7 万颗星标,是近年增长最快的开发者工具类开源项目之一。2024 年,Bruno 背后的团队成立公司并推出商业版本,开源核心与付费增值并行的模式得以确立;同年的 ThoughtWorks 技术雷达(Vol.31)将 Bruno 列入 Adopt(建议采纳) 级别,认为它已经成为不少团队的默认选择。

Bruno 要解决的核心问题,是数据主权与协作方式。传统 API 客户端把集合放在云端账户里,团队协作只能依赖厂商的 Workspace 体系,导出导入还要过一道专有格式;而 Bruno 把 API 集合(Collection)直接存放在你文件系统的一个文件夹里,用自定义的纯文本标记语言 Bru.bru 文件)保存每一个请求的信息。于是"项目 = 集合"成了天然的一一对应关系,你可以用 Git 或任何惯用的版本控制工具去 diff、评审、派生和回滚 API 集合,和写代码的流程完全一致。

在数据隐私上 Bruno 的态度也非常明确:纯离线,永不加入云同步。没有登录、没有账户,请求直接在本地发出、不经过任何中间代理,所有内容都留在自己的设备上。这一点被写进了项目的长期愿景里,作为不会妥协的承诺。

Bruno 的核心特点:

  • 本地纯文本存储:集合以 .bru 纯文本文件保存在本地文件夹,可读、可搜、可手工编辑
  • Git 原生协作:纯文本天然适合 diff 与代码评审,配合任意版本控制系统即可完成团队协作
  • 完全离线:无登录、无账户、无云同步,请求不经中间代理,数据不出本机
  • 多形态可用:桌面应用、命令行工具 Bruno CLI(@usebruno/cli)、官方 Docker 镜像,以及 VS Code 扩展
  • 跨平台:Mac、Windows、Linux 均有原生安装包,也可通过 Homebrew、Chocolatey、Scoop、winget、Snap、Flatpak、Apt、AUR 等包管理器安装
  • 接口类型覆盖广:支持 HTTP 与 GraphQL 请求,可导入 Postman、Insomnia、OpenAPI 规范的既有集合
  • 脚本与测试:内置请求前/后脚本、断言测试、集合运行器与环境变量,可衔接 CI/CD
  • 以纯文本格式定义:集合既可用 .bru 格式,也可迁移为 YAML 格式,便于与其它工具链对接

2. v4.1.0 版本亮点

该版本汇集了 24 位贡献者129 条 变更记录。

v4.1.0 发布于 2026 年 8 月 20 日,是这个项目在 4.x 系列上的一次大版本更新。它带来了两项标志性功能(Mock Server 与富文本文档编辑器),补上了多项认证与安全加固,并对 Git 工作流、编辑器、集合运行器做了成批修复。

2.1 新增 Mock Server(模拟服务器)

v4.1.0 引入了内置的模拟服务器,让前端与客户端团队在没有后端的情况下也能联调。在 Mock Server 面板点击 Start Server 即可启动,随后可以在自己的标签页里管理:

  • 响应(Responses):新建模拟响应,可与集合中的示例同步、从 API 规范生成、或与规范保持同步;每条响应包含方法/路径、状态码与请求头、带语法高亮的期望响应体、匹配规则、自动生成的 Demo Request,以及一个可直接发真实请求的 Try 工具
  • 规则(Rules):可基于请求头、查询参数或请求体字段设置条件,支持等于、不等于、包含、正则匹配等操作符,并支持 AND/OR 组合;请求体支持点号路径访问嵌套字段
  • 路由(Routes):以只读的可搜索表格列出已注册的「方法 + 路径」组合,显示响应数量、默认响应、来源与命中次数,并可复制路由 URL
  • 请求日志(Request Log):实时列出进来的请求,包含时间、方法、路径、命中的模拟响应、状态码、延迟与耗时,并提供 Match Trace Inspector 展示每条规则是通过还是失败
  • 默认行为:默认开启 CORS,规范化结尾斜杠,未匹配的路径返回带 JSON 详情的 404,剥离传输层请求头,内容类型取自保存的示例(默认 application/json),端口冲突时会明确提示去设置里改端口

Mock Server 目前处于 Beta 阶段,需要先在「偏好设置 → Beta」中开启,主界面才会出现「Mock Servers」入口。

2.2 富文本文档编辑器

Docs 标签页新增了基于 Markdown 的所见即所得富文本编辑器,工作区、集合、文件夹、请求四个层级都可以用。工具栏支持标题、粗体、斜体、删除线、有序/无序列表、任务列表、表格、引用、行内代码与代码块;可以随时在富文本与 Markdown 模式间切换,Markdown 始终是底层的数据源。代码块带语法高亮并自动识别语言,支持内嵌视频与图片、复制代码按钮,并对 HTML 做净化处理以防 XSS。

2.3 安全与认证改进

  • 修复重定向时 Authorization 请求头泄露给第三方服务器的问题,并单独修复了 AWS V4 签名头在跨域重定向时泄露的问题
  • 加固 IPC 层的文件写入处理器,将其限制在已知集合与 API 规范范围内(由社区成员 @IamLeandrooooo 报告)
  • 密钥(Secrets)模块阻止重名密钥,避免取值被覆盖丢失
  • 新增全局客户端证书,并允许单独禁用某一条客户端证书
  • 新增 GCP Secret Manager 支持

2.4 协作与工作流

  • 单一 monorepo 打开多个集合,工作区总览会提示打开失败的集合及其数量
  • 迁移到 YAML 的入口更加显性:集合头部新增提示标签,迁移弹窗可处理集合草稿,YAML 配置支持脚本执行流程
  • Git 能力增强:新增 Git 远程操作弹窗与分支选择界面、Git 代理环境配置,并为 Git 服务商 API 应用网络配置;在受保护分支上编辑时会给出提示
  • 集合可嵌入与共享:共享含未同步变更的工作区前会先给出警告
  • Postman 互操作:导入/导出新增「保留脚本」选项,并补全了缺失的认证映射

2.5 编辑器与界面

  • 代码编辑器新增替换与全部替换,带搜索位置与防抖
  • 环境选择下拉框新增搜索过滤;变量与密钥标签页支持拖拽与字母序排序
  • AI Assist 从悬浮层移入请求面板以及集合/文件夹设置的标签栏
  • 预设(presets)重新设计,下拉框改为菜单式,并支持配置默认环境

2.6 主要 Bug 修复

  • WebSocket:移除自动重连,在连接的中间状态禁用消息队列,修复消息搜索框重叠
  • 集合运行器:修复取消执行后加载态仍在运行、执行后缺少「再次运行」按钮、迭代次数输入未禁用等问题
  • OpenAPI:修复 $ref schema 导致解析器报错、导入时操作名称末尾多余点号、导入时未填充集合与文件夹文档
  • 请求与响应:响应头名称查找改为不区分大小写;二进制请求体文件缺失时给出警告;从 Postman 导入时二进制请求体丢失已修复
  • 生成代码:修复 URL 插值场景,启用 URL 编码时正确编码路径中的字面冒号

3. 获取安装包

如果访问 GitHub 不便,安装包及中文文档:https://hanshuixin.org/go/226M(内含 bruno_4.1.0_x64_win.exe、README 中英对照、发布说明中英对照、LICENSE 和源码)。

Bruno 其他版本https://hanshuixin.org/resource/software_integrated_package/Windows/Bruno

Windows安装bruno-v4.1.0(bruno_4.1.0_x64_win).zip
├── bruno_4.1.0_x64_win.exe
├── Windows安装bruno-v4.1.0(bruno_4.1.0_x64_win).pdf
├── README/
│   ├── README.md
│   └── README-中文版.md
├── 发布说明/
│   ├── RELEASE-NOTES.md
│   └── RELEASE-NOTES-中文版.md
├── 源码/
│   └── bruno-v4.1.0.zip
└── LICENSE

4. 安装

bruno_4.1.0_x64_win.exe 是 Bruno 官方发布的 Windows 64 位(x64)安装程序,适用于 Windows 10 及更高版本,双击后按向导完成安装即可,不需要命令行,也不需要额外的运行时依赖。

安装程序默认按当前用户安装,不需要管理员权限;如果希望为整台机器安装、或需要在企业环境里做静默批量部署,可以改用同一版本另外提供的 MSI 安装包。

第一次运行时若出现 SmartScreen 蓝色警告窗口,点击「更多信息」再点击「仍要运行」即可——这是因为安装包未购买商业代码签名证书,属于此类开源桌面应用的常规现象,并非文件损坏。

如果需要在别的机器上核对安装包,可以比对官方发布页给出的 SHA-256 校验值;整合包内的安装包文件名与官方发布完全一致,未做任何改动。

卸载时进入「设置 → 应用 → 已安装的应用」,找到 Bruno 卸载即可。集合与配置保存在你自己建立的文件夹中,卸载程序不会删除这些数据。

5. 使用

5.1 创建集合与发送请求

Bruno 的顶层单位是工作区(Workspace),工作区下是集合(Collection),集合下是文件夹(Folder)与请求(Request)。新建集合时可以直接在磁盘上选一个文件夹——这个文件夹就是集合本身,里面会生成 bruno.json 以及各个请求的 .bru 文件。填好请求方法、URL、请求头与请求体后点击发送,右侧即可查看响应体、响应头、状态码与耗时。

一个 .bru 请求文件大致长这样,全部是可读的纯文本:

meta {
  name: 获取用户信息
  type: http
  seq: 1
}

get {
  url: {{baseURL}}/api/users/1
  body: none
  auth: inherit
}

5.2 环境变量与密钥

环境(Environment)用于管理不同部署下的变量差异,比如 {{host}}{{token}}。环境既可以存放在集合内的 .bru 文件中,也可以放在 .env 文件里,并支持在环境选择下拉框中搜索过滤、用拖拽或字母序整理变量。敏感信息建议放进 Secrets 标签页或外部密钥管理器——v4.1.0 起支持 GCP Secret Manager,同时会阻止重名密钥,避免取值被覆盖。

从 v2/v3 升级上来需要留意一处破坏性变更:v4 起原先集中存放密钥的 secrets.json 改为按环境在环境文件中管理,升级向导会提示迁移,建议迁移前先备份集合目录。

5.3 脚本与测试

每个请求都可以编写 Pre Request(请求前)Post Response(响应后) 脚本,使用 JavaScript 编写。结合内置的断言能力,可以在响应后校验状态码、响应体字段、响应时间等,把一次临时调试固化成可重复执行的测试。

5.4 集合运行器与命令行

图形界面里的集合运行器可以按顺序批量跑完整个集合或某个文件夹,并汇总每个请求的结果。要把 API 测试接进流水线,则使用 Bruno CLI:

# 全局安装
npm install -g @usebruno/cli

# 运行集合中的每一个请求
bru run

# 运行单个请求
bru run request.bru

# 针对指定环境运行某个文件夹
bru run folder --env Local

v4.1.0 为 CLI 新增了 --global-env-var 参数,可以在运行时覆盖全局环境变量,方便流水线针对不同部署环境跑同一套用例。

CLI 同时提供官方 Docker 镜像(usebruno/clighcr.io/usebruno/cli),有 alpinedebian 两种变体,覆盖 linux/amd64linux/arm64,可以在不安装 Node.js 的宿主机上直接跑集合:

docker run -v $(pwd):/bruno usebruno/cli run

桌面端与 CLI 的版本号并不同步——桌面端发布 v4.1.0 时,CLI 在 npm 上的最新版仍是 4.0.0,两者可以各自独立升级。

5.5 Mock Server

需要在不依赖后端的情况下联调时,可以启动内置的 Mock Server:按方法 + 路径注册路由,为同一路由准备多条响应,再用规则(请求头、查询参数、请求体字段)决定命中哪一条。启动后在 Request Log 里能看到每一个进来的请求,以及它为什么匹配到了某条响应,方便排查前端调用是否符合预期。路由端口从 4000 起递增,也可以在设置里指定。

5.6 导入与协作

已有 Postman、Insomnia 或 OpenAPI/Swagger 集合的话,可以直接导入,Bruno 会尽量保留认证配置、脚本与文档(Postman 导入导出可勾选「保留脚本」)。导入后集合就是磁盘上的一组纯文本文件,把它交给 Git 即可完成协作:分支、合并、评审、回滚,与代码完全一致。需要把接口文档分享给他人时,用富文本编辑器写好请求级或集合级文档,再通过生成文档功能导出即可。

联系我远程服务 · 定制开发

联系方式

微信扫码,加我咨询

我的简历 · 程序员客栈

服务

  • 远程排查问题 · 修复故障

  • 远程安装软件 · 部署系统

  • 帮你把 VibeCoding 作品上线

    服务器域名HTTPS/SSL证书数据库Nginx环境部署上线
  • 软件开发 · 按需定制 · 交付上线

有需要请随时联系我 · 备注来意更快通过