docs: API接口文档v8fix - 20260518_135615
This commit is contained in:
493
开发文档/5、接口文档/API接口文档_v8fix.md
Normal file
493
开发文档/5、接口文档/API接口文档_v8fix.md
Normal 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}`
|
||||||
|
|
||||||
|
> **注意**:当前实现写入本地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提取 |
|
||||||
Reference in New Issue
Block a user