WeChatFerry 调研报告
调研时间:2026-05-20
调研人:瑶华
? 一、WeChatFerry 是什么
WeChatFerry(简称 WCF)是一个基于 Windows 微信的 Hook 工具,通过注入 DLL 拦截微信客户端的内部函数,实现对微信的消息收发、联系人管理、聊天记录获取等操作。
? 二、核心功能
2.1 消息收发
| 功能 |
说明 |
| 发送文本消息 |
支持发送给个人/群 |
| 发送图片 |
支持 jpg/png/gif 等 |
| 发送文件 |
支持任意文件 |
| 发送 @ 消息 |
在群内 @指定成员 |
| 撤回消息 |
撤回自己发送的消息 |
2.2 消息监听
| 功能 |
说明 |
| 监听新消息 |
实时接收微信消息(轮询 + 回调) |
| 消息类型 |
支持文本/图片/文件/语音/名片/链接等 |
| 过滤条件 |
可按发送者/群/关键词过滤 |
2.3 联系人管理
| 功能 |
说明 |
| 获取好友列表 |
返回所有好友信息 |
| 获取群列表 |
返回所有群聊 |
| 获取群成员 |
返回指定群的所有成员 |
| 搜索联系人 |
按昵称/微信号搜索 |
2.4 聊天记录
| 功能 |
说明 |
| 获取聊天记录 |
按联系人和时间范围获取 |
| 翻页加载 |
支持分页 |
| 导出记录 |
可导出为文本/JSON |
2.5 群管理
? 三、架构原理
┌─────────────────────────────────────────────┐
│ 微信 Windows 客户端 │
│ ┌───────────────────────────────────────┐ │
│ │ WeChatFerry Hook DLL (注入) │ │
│ │ - 拦截 SendMsg / RecvMsg 等函数 │ │
│ │ - Hook 聊天窗口操作 │ │
│ └───────────┬───────────────────────────┘ │
│ │ │
└──────────────┼──────────────────────────────┘
│ IPC / Shared Memory
┌──────────────▼──────────────────────────────┐
│ WeChatFerry REST API Server (Python) │
│ - FastAPI 提供 HTTP 接口 │
│ - 端口:20370(默认) │
│ - 鉴权:Token │
└─────────────────────────────────────────────┘
调用示例:
# 发送消息
curl -X POST http://localhost:20370/send_text \
-H "Content-Type: application/json" \
-d '{"wxid": "filehelper", "content": "Hello"}'
# 获取消息
curl http://localhost:20370/get_msg?wxid=filehelper&limit=10
? 四、Mac 限制 ⚠️
4.1 为什么 WeChatFerry 不支持 Mac
| 原因 |
说明 |
| 平台差异 |
WeChatFerry 使用 Windows 专属的 DLL 注入技术,macOS 无法直接使用 |
| 微信架构 |
Mac 微信使用不同的进程架构和沙盒机制,函数导出方式与 Windows 不同 |
| 系统权限 |
macOS 禁止第三方应用注入系统进程,App Sandbox 限制更严格 |
| 微信更新 |
Mac 微信更新频繁,Hook 点随时可能失效 |
结论:WeChatFerry 目前仅支持 Windows 微信,Mac 微信不在支持范围内。
4.2 Mac 上的替代方案
| 方案 |
可行性 |
复杂度 |
说明 |
| ① Windows 虚拟机 |
⭐⭐⭐⭐⭐ |
中 |
Parallels/UTM 装 Win11,跑 WeChatFerry |
| ② Mac 微信 Hook |
⭐⭐ |
高 |
社区有实验性项目,不稳定,有封号风险 |
| ③ 企业微信 API |
⭐⭐⭐ |
低 |
官方接口,稳定,但需用企业微信 |
| ④ 微信网页版 |
⭐ |
低 |
国内已不支持网页微信登录 |
| ⑤ 自定义微信客户端 |
⭐⭐⭐⭐ |
高 |
基于微信 OpenAI 重写 |
? 五、部署方案(Mac + Windows 虚拟机)
5.1 推荐架构
┌──────────────────────────────────────────────────┐
│ Mac mini (Host) │
│ │
│ ┌────────────────────┐ ┌───────────────────┐ │
│ │ OpenClaw Agent │ │ Parallels VM │ │
│ │ (瑶华) │───│ (Windows 10/11) │ │
│ │ │ │ │ │
│ │ - 任务调度 │ │ ┌──────────────┐ │ │
│ │ - 对话交互 │ │ │ WeChat 3.x │ │ │
│ │ - 主动发消息 │ │ └──────────────┘ │ │
│ │ │ │ │ │
│ │ │ │ ┌──────────────┐ │ │
│ │ │ │ │ WeChatFerry │ │ │
│ │ │ │ │ REST API │ │ │
│ │ │ │ │ :20370 │ │ │
│ └────────────────────┘ │ └──────────────┘ │ │
│ └───────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 网络:VM 与 Host 通过 localhost:20370 通信 │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
5.2 部署步骤
- 安装 Parallels Desktop 或 UTM(免费)
- 安装 Windows 10/11 虚拟机
- 在虚拟机内安装微信(版本 2.x - 3.x)
- 注入 WeChatFerry Hook
- 启动 REST API Server
- OpenClaw 通过 HTTP 调用
5.3 OpenClaw 侧调用示例
import requests
WCF_API = "http://localhost:20370"
def send_wechat_msg(wxid: str, content: str):
"""发送微信消息"""
resp = requests.post(f"{WCF_API}/send_text", json={
"wxid": wxid,
"content": content
})
return resp.json()
def listen_messages():
"""监听新消息(阻塞)"""
resp = requests.get(f"{WCF_API}/recv_msg", timeout=30)
return resp.json()
? 六、WeChatFerry API 速查
| 接口 |
方法 |
说明 |
/send_text |
POST |
发送文本消息 |
/send_image |
POST |
发送图片 |
/send_file |
POST |
发送文件 |
/recv_msg |
GET |
接收新消息(阻塞) |
/get_contacts |
GET |
获取联系人列表 |
/get_chatroom_members |
GET |
获取群成员 |
/get_msg |
GET |
获取聊天记录 |
/send_at_msg |
POST |
发送 @ 消息 |
/revoke_msg |
POST |
撤回消息 |
? 七、风险与注意事项
| 风险 |
说明 |
应对 |
| 封号风险 |
Hook 属于第三方操作,有概率触发微信风控 |
使用小号,不要大规模群发 |
| 微信更新 |
每次微信大版本更新可能导致 Hook 失效 |
锁定微信版本,或更新后重新适配 |
| 虚拟机性能 |
Mac mini 配置较低,虚拟机可能卡顿 |
分配 2-4 核 + 4-8GB 内存 |
| API 安全 |
默认无鉴权,本地测试还好,公网有风险 |
添加 Token 鉴权,限制来源 IP |
? 八、结论
| 问题 |
答案 |
| WeChatFerry 能否在 Mac 上运行? |
不能,仅支持 Windows |
| Mac 微信能否被 Hook? |
社区有实验性方案,不推荐,风险高 |
| 推荐方案? |
Windows 虚拟机 + WeChatFerry |
文档整理:瑶华 | 2026-05-20
所有内容仅供学习与交流,转载须标明链接。未经同意,禁止作为商业用途,有特殊需求请联系站长。