diff --git a/开发文档/5、接口文档/API接口文档_v8fix.md b/开发文档/5、接口文档/API接口文档_v8fix.md new file mode 100644 index 0000000000..592a90a614 --- /dev/null +++ b/开发文档/5、接口文档/API接口文档_v8fix.md @@ -0,0 +1,493 @@ +# 工作手机 SDK API 接口文档 v8-fix +> 版本:v8-fix | 更新时间:2026-05-18 | 账号:游条姐 (wxid_5g37snchpv8e22) + +## 概述 + +本文档描述工作手机SDK的所有HTTP REST API接口,基于Frida无感注入微信8.0.56实现。 +所有接口均为**纯后端无界面操作**,通过直接读写微信加密数据库(WCDB)实现数据获取和写入。 + +### 服务地址 +``` +http://localhost:8899 +``` + +### 认证 +``` +X-API-Key: workphone-sdk-2026 +``` + +--- + +## 真实数据汇总(2026-05-18 验证) + +| 指标 | 真实数值 | +|---|---| +| 微信账号 | wxid_5g37snchpv8e22 | +| 昵称 | 游条姐-游戏教学辅助看我朋友圈 | +| 真实好友(type=3)| **4,991 人** | +| 总联系人记录 | **8,076 条** | +| 群组 | **50 个** | +| 标签 | **165 个** | +| 图片 | **83,069 张** | +| 视频 | **792 条** | +| 文件 | **4 条** | +| 24小时消息 | **156 条** | +| 收藏 | **10 条** | +| 红包记录 | **1 条** | +| 视频号联系人 | **2 个** | +| 小程序 | **54 张表** | +| DB实例 | **26 个** | + +--- + +## 接口列表 + +### 1. 系统接口 + +#### 1.1 健康检查 +``` +GET /api/v1/ping +``` +返回:`{"status": "ok", "version": "v8-fix", "timestamp": 1716038400000}` + +#### 1.2 初始化所有DB +``` +POST /api/v1/init +``` +返回:`{"status": {"main": true, "sns": false, "wallet": true, ...}, "total_dbs": 26}` + +#### 1.3 列出所有DB +``` +GET /api/v1/dbs +``` +返回:所有26个已加载DB的名称和路径 + +--- + +### 2. 账号接口 + +#### 2.1 获取账号信息 +``` +GET /api/v1/account +``` +返回: +```json +{ + "wxid": "wxid_5g37snchpv8e22", + "nickname": "游条姐-游戏教学辅助看我朋友圈", + "phone": "Lytiao1", + "region": null, + "sex": null +} +``` + +--- + +### 3. 联系人接口 + +#### 3.1 获取联系人列表 +``` +GET /api/v1/contacts?limit=100&offset=0 +``` +- `limit`: 每页数量(默认100) +- `offset`: 偏移量(默认0) + +返回:好友列表(type=3,真实好友4,991人) + +#### 3.2 获取联系人数量 +``` +GET /api/v1/contacts/count +``` +返回:`{"friends": 4991, "total": 8076}` + +#### 3.3 搜索联系人 +``` +GET /api/v1/contacts/search?keyword=游 +``` +返回:匹配的联系人列表(最多50条) + +#### 3.4 获取联系人详情 +``` +GET /api/v1/contacts/{wxid} +``` +返回:单个联系人完整信息 + +--- + +### 4. 消息接口 + +#### 4.1 发送消息(写入本地DB) +``` +POST /api/v1/messages/send +Content-Type: application/json + +{ + "to_user": "filehelper", + "content": "消息内容" +} +``` +返回:`{"success": true, "msgId": 1779112302800, "db_verified": true}` + +> **注意**:当前实现写入本地DB(WCDB),消息在本地可见。真正网络发送需要找到微信8.0.56混淆后的网络类名(持续研究中)。 + +#### 4.2 群发消息 +``` +POST /api/v1/messages/mass +Content-Type: application/json + +{ + "targets": ["wxid_a", "wxid_b", "filehelper"], + "content": "群发内容" +} +``` +返回:`{"results": [...], "total": 3, "success_count": 3}` + +#### 4.3 获取指定会话消息 +``` +GET /api/v1/messages/{talker}?limit=50 +``` + +#### 4.4 获取最近消息 +``` +GET /api/v1/messages/recent?hours=24 +``` +返回:24小时内的消息(当前156条) + +--- + +### 5. 会话接口 + +#### 5.1 获取会话列表 +``` +GET /api/v1/conversations?limit=30 +``` +返回:最近会话列表(含未读数、最后消息) + +--- + +### 6. 群组接口 + +#### 6.1 获取群组列表 +``` +GET /api/v1/groups?limit=50 +``` +返回:50个群组(含群名、成员数、群主) + +#### 6.2 获取群组数量 +``` +GET /api/v1/groups/count +``` +返回:`{"total": 50}` + +#### 6.3 获取群成员 +``` +GET /api/v1/groups/{chatroom_id}/members +``` +返回: +```json +{ + "chatroomId": "xxx@chatroom", + "members": ["wxid_a", "wxid_b"], + "count": 12, + "owner": "wxid_owner", + "announcement": "群公告内容", + "myName": "我的群昵称", + "memberCount": "12" +} +``` + +#### 6.4 设置群备注(我的群昵称) +``` +PUT /api/v1/groups/{chatroom_id}/remark +Content-Type: application/json + +{"remark": "新的群昵称"} +``` + +#### 6.5 设置群公告 +``` +PUT /api/v1/groups/{chatroom_id}/announcement +Content-Type: application/json + +{"announcement": "群公告内容"} +``` + +--- + +### 7. 标签接口 + +#### 7.1 获取所有标签 +``` +GET /api/v1/labels +``` +返回:165个标签ID及使用人数 + +#### 7.2 按标签获取联系人 +``` +GET /api/v1/labels/{label_id}/contacts +``` +返回:该标签下的联系人列表(最多100人) + +--- + +### 8. 朋友圈接口 + +#### 8.1 获取朋友圈DB信息 +``` +GET /api/v1/moments/dbinfo +``` +返回:SnsMicroMsg.db 和 sns_star_info.db 的状态 + +#### 8.2 获取朋友圈内容 +``` +GET /api/v1/moments?limit=20 +``` +> **注意**:需要先打开微信朋友圈界面触发SnsMicroMsg.db加载,否则返回空。 + +#### 8.3 发布朋友圈(写入本地DB) +``` +POST /api/v1/moments +Content-Type: application/json + +{"content": "朋友圈内容"} +``` +返回:`{"success": true, "snsId": 1779112302800, "db_verified": true}` + +> **注意**:写入本地DB,真正发布到服务器需要找到SnsUploadUI的真实方法名。 + +--- + +### 9. 视频号接口 + +#### 9.1 获取视频号DB信息 +``` +GET /api/v1/finder/info +``` +返回:FinderMM029/FinderMessage006/FinderAccounts_01 的表结构 + +已发现的视频号表: +- `FinderMsgContactStorage`:2个视频号联系人 +- `FinderFeedItem`:视频号内容 +- `FinderConversation`:视频号会话 +- `FinderAccount`:1个视频号账号 +- `FinderLiveChargeInfo`:直播打赏信息 +- `FinderLiveGiftInfo`:直播礼物信息 + +#### 9.2 获取视频号联系人 +``` +GET /api/v1/finder/contacts?limit=20 +``` +返回:2个视频号联系人 + +#### 9.3 获取视频号媒体缓存 +``` +GET /api/v1/finder/media?limit=20 +``` + +#### 9.4 获取视频号账号 +``` +GET /api/v1/finder/accounts +``` + +--- + +### 10. 收藏接口 + +#### 10.1 获取收藏列表 +``` +GET /api/v1/favorites?limit=20 +``` +返回:10条收藏记录(FTS5MetaFavorite表) + +--- + +### 11. 钱包/支付接口 + +#### 11.1 获取钱包信息 +``` +GET /api/v1/wallet/info +``` +返回:WalletCoreDB-2.db 的表结构(WalletLedgerRecord表) + +#### 11.2 获取钱包账单 +``` +GET /api/v1/wallet/ledger?limit=20 +``` +返回:转账/支付记录(含transferId/tradeUser/tradeAmount/tradeType) + +#### 11.3 获取红包记录 +``` +GET /api/v1/wallet/lucky-money?limit=20 +``` +返回:1条红包记录 + +> **注意**:微信支付有TEE安全区保护,Frida无法绕过支付密码验证,**不支持发起付款**。 + +--- + +### 12. 媒体接口 + +#### 12.1 获取图片列表 +``` +GET /api/v1/media/images?limit=20 +``` +返回:图片信息(共83,069张) + +#### 12.2 获取图片数量 +``` +GET /api/v1/media/images/count +``` +返回:`{"total": 83069}` + +#### 12.3 获取视频列表 +``` +GET /api/v1/media/videos?limit=20 +``` +返回:视频信息(共792条) + +#### 12.4 获取文件列表 +``` +GET /api/v1/media/files?limit=20 +``` +返回:4条文件记录 + +--- + +### 13. 小程序接口 + +#### 13.1 获取小程序列表 +``` +GET /api/v1/appbrand +``` +返回:AppBrandComm.db 的54张表信息 + +--- + +### 14. 搜索接口 + +#### 14.1 全局搜索 +``` +GET /api/v1/search?keyword=游 +``` +返回:联系人+消息+群组的综合搜索结果 + +--- + +### 15. 原始SQL接口(高级) + +#### 15.1 执行查询SQL +``` +POST /api/v1/raw/query +Content-Type: application/json + +{ + "db": "main", + "sql": "SELECT COUNT(*) FROM rcontact WHERE type=3" +} +``` + +#### 15.2 执行写入SQL +``` +POST /api/v1/raw/write +Content-Type: application/json + +{ + "db": "main", + "sql": "UPDATE rcontact SET conRemark='新备注' WHERE username='wxid_xxx'" +} +``` + +#### 15.3 获取表信息 +``` +GET /api/v1/raw/table?db=main&table=rcontact +``` + +#### 15.4 列出所有表 +``` +GET /api/v1/raw/tables?db=main +``` + +--- + +## 可用DB名称 + +| DB名称 | 文件 | 说明 | +|---|---|---| +| `main` | EnMicroMsg.db | 主数据库(联系人/消息/群组/图片/视频等)| +| `sns` | SnsMicroMsg.db | 朋友圈(需先打开朋友圈界面)| +| `sns_star` | sns_star_info.db | 朋友圈缓存 | +| `wallet` | WalletCoreDB-2.db | 钱包账单 | +| `finder` | FinderMM029.db | 视频号 | +| `finder2` | FinderMessage006.db | 视频号消息 | +| `finder3` | FinderAccounts_01.db | 视频号账号 | +| `fts5` | FTS5IndexMicroMsg_encrypt.db | 全文搜索/收藏 | +| `appbrand` | AppBrandComm.db | 小程序 | + +--- + +## 启动服务 + +```bash +# 1. 确保手机ADB连接 +adb connect 192.168.110.80:5555 + +# 2. 确保frida-server在手机上运行 +adb shell "su -c '/data/local/tmp/frida-server &'" + +# 3. 设置ADB端口转发 +adb forward tcp:27042 tcp:27042 + +# 4. 启动API服务 +PHONE_IP=192.168.110.80 PHONE_PORT=27042 python3 workphone_server_v7.py + +# 5. 测试 +curl -H "X-API-Key: workphone-sdk-2026" http://localhost:8899/api/v1/ping +``` + +--- + +## 存客宝对接示例 + +```python +import requests + +BASE_URL = "http://localhost:8899" +HEADERS = {"X-API-Key": "workphone-sdk-2026", "Content-Type": "application/json"} + +# 获取好友列表 +contacts = requests.get(f"{BASE_URL}/api/v1/contacts", headers=HEADERS).json() +print(f"好友数: {contacts['count']}") + +# 发送消息 +r = requests.post(f"{BASE_URL}/api/v1/messages/send", + headers=HEADERS, + json={"to_user": "filehelper", "content": "你好!"}) +print(r.json()) + +# 群发消息 +r = requests.post(f"{BASE_URL}/api/v1/messages/mass", + headers=HEADERS, + json={"targets": ["wxid_a", "wxid_b"], "content": "群发内容"}) +print(r.json()) + +# 获取群列表 +groups = requests.get(f"{BASE_URL}/api/v1/groups", headers=HEADERS).json() +print(f"群组数: {groups['count']}") +``` + +--- + +## 当前限制与后续计划 + +| 功能 | 当前状态 | 说明 | +|---|---|---| +| 消息发送 | ✅ 写入本地DB | 网络发送需找到混淆类名 | +| 朋友圈发布 | ✅ 写入本地DB | 网络发布需找到SnsUploadUI真实方法 | +| 添加好友 | 🔄 开发中 | 需要找到ContactManager网络类 | +| 付款 | ❌ 不支持 | TEE安全区保护,无法绕过 | +| 朋友圈读取 | ⚠️ 需先打开朋友圈 | SnsMicroMsg.db需要界面触发加载 | +| 视频号 | ✅ 可读取 | 2个联系人,1个账号 | +| 收藏 | ✅ 10条 | FTS5MetaFavorite表 | +| 钱包账单 | ✅ 可读取 | WalletLedgerRecord表 | +| 群管理 | ✅ 读取+修改 | 群公告/群昵称/成员列表 | +| 标签管理 | ✅ 165个标签 | 从rcontact.contactLabelIds提取 |