docs: API接口文档v8fix - 20260518_135615

This commit is contained in:
2026-05-18 21:56:16 +08:00
parent 6628d4d266
commit f81bca57b6

View File

@@ -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}`
> **注意**当前实现写入本地DBWCDB消息在本地可见。真正网络发送需要找到微信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提取 |