切换主题
📖 产品介绍
MockHub(Mock 一体化平台)是一个基于 Go 语言开发的一体化 Mock / 代理服务。它内置 HTTP Mock、TCP 代理 与 UDP 代理(CoAP) 三大能力,提供可视化管理后台,可覆盖接口 Mock、流量录制回放、实时抓包、断点调试、私有协议代理等开发与联调场景。
🎯 核心功能
HTTP Mock
- 多维规则匹配:基于方法、路径、请求头、Query、请求体(JSON / 表单字段)组合匹配,命中后返回 Mock 响应
- 三种响应模式:
mock:直接返回配置的响应状态码 / 响应头 / 响应体proxy:透传转发到下游服务,可同时录制请求与响应replay:重放历史上录制的真实响应
- 模板渲染:响应体 / 响应头支持
{{ .query.xxx }}、{{ .pathParams.xxx }}、{{ .body.xxx }}等变量与 20+ 内置模板函数 - 模拟延迟:按规则配置响应延迟(毫秒),模拟真实网络耗时
- 优先级控制:同路径多条规则按优先级(数值越小越优先)依次匹配
录制与回放
- 自动录制:
proxy模式下可自动录制请求 / 响应,存储到 SQLite - 一键转 Mock:将录制数据一键生成 Mock 规则,实现"流量变规则"
- 重放:按录制数据重新发送请求,验证下游服务
实时抓包与断点
- 实时抓包:请求数据实时推送(SSE),可按监听器 / 方向 / 规则过滤,支持临时抓取与持久化
- 断点调试:请求命中断点规则后挂起,可查看与修改请求内容,再放行(透传下游 / 返回配置响应)或丢弃,超时自动放行避免请求永久挂起
TCP 代理
- 监听器:任意端口 TCP 监听,转发到上游
host:port,支持上游 TLS - 多协议 Codec:内置
raw/delimiter/lengthPrefix/fixedLength/redis/mysql/mqtt/websocket/grpc分帧解析,并支持声明式自定义 Codec - 字段提取:通过定长截取、JSON 平铺、JSONPath、正则、分隔符拆分等方式从报文中提取字段,供规则匹配与模板渲染使用
- TCP 规则:按方向(request / response)+ 解析字段匹配,支持
proxy/mock/drop三种动作,可配置录制与延迟
UDP 代理(CoAP)
- 虚拟会话:每个客户端地址一个独立会话,适配 UDP 无连接语义
- CoAP Codec:内置 RFC 7252 CoAP 协议解析(4 字节头 + token + options + payload),支持 GET / POST / PUT / DELETE 等方法与 2.xx / 4.xx 等响应码
- 规则 / 录制 / 抓包:复用 TCP 的规则表与录制 / 抓包表,按监听器归属自动隔离
🏗️ 系统架构
- 管理端(默认
:9861):内嵌 Vue 管理后台,提供服务 / 规则 / 录制 / 抓包 / 断点 / TCP / UDP 的全量管理 API - HTTP 代理端(默认
:9862):接收外部 HTTP 请求,执行规则匹配 - TCP / UDP 代理端:独立于 HTTP 代理,监听各自端口
- Nacos 注册:HTTP 代理端可自动注册到 Nacos(默认独占同服务实例),控制台可查看并下线 / 上线同服务实例
- 数据存储:SQLite(
data/records.db录制数据、data/captures.db抓包数据),配置使用config.yaml
⚙️ 配置与部署
- 单二进制部署,通过
config.yaml完成全部配置(管理端 / 代理端 / TCP / UDP / 规则 / 服务) - 配置修改后可通过管理后台"重新加载配置",无需重启进程
- 支持
MOCK_HOME环境变量或-c参数指定配置目录,日志自动滚动
🌟 核心优势
- 一体化:HTTP / TCP / UDP 三种代理统一管理,一套后台、一套规则体系
- 零编码 Mock:纯界面配置即可完成 Mock、录制、回放与断点
- 声明式 Codec:无需写代码即可描述私有二进制 / 文本协议
- 协议解析可视化:抓包与录制数据自动解析为可读字段,方便调试
- 轻量部署:Go 单二进制 + SQLite,无外部依赖