feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s

移植自 mac-agent-os 的 mediacrawler_adapter:不起子进程、不开页面,用浏览器里那份
登录态直接调抖音 Web 接口。产物键名照抄 store/douyin,所以 ingest 那条链路一个字不用改。

**目前能用的(真环境实测,非推断)**:

    profile/other : 200, 7075 字节  —— 博主主页指标(粉丝/获赞/作品数/昵称)
    aweme/detail  : 200, 45425 字节 —— 单条作品详情(含点赞/评论/收藏/分享)

**目前不能用的:作品列表 `aweme/post`。** 两个互相独立的原因:
  1. 这个接口被抖音单独升级成了真校验:不带 x-tt-argus 回 403「Uifid Not Found」,
     带上 dummy 值回 200 + **空 body**。也就是说「头在不在」骗得过,「真校验」过不了。
     同一套头打 profile/other 和 aweme/detail 都是通的 —— 抖音是挑着接口加保护的,
     挑中的恰好是「批量拉作品列表」这个最敏感的动作。
  2. 改走页面截获也不行:CDP 浏览器打开博主主页会落到「验证码中间页」(当天大量探测的
     代价,过几小时要重测)。

  所以现在的边界是:**已知作品的指标刷新能做,自动发现新作品做不了**。

**排查中控住变量后得到的两条事实**(都写进注释了):
  · `Accept` / `Accept-Language` / `Referer` 才是主页接口能返回真数据的原因 —— 只有
    UA+client hints+Cookie 时是 200 但仅 121 字节的空壳,补上这三个头变 7074 字节。
    (我先前猜的 sec-ch-ua 不是关键。)
  · 因此 UA 与 client hints 必须**成套地取自同一个浏览器**,所以 BrowserIdentity 一次
    从 CDP 取齐 cookie + UA + hints,而不是各自写死。

「200 + 空 body 必须当场报错」也是刻意写死的:放过去它会在下游变成「这个博主没作品」,
把一次失败伪装成一条正常结果 —— 爬虫那条路正是这么栽的,还被翻译成「账号被封」。

测试 +11:cookie 解析、请求头成套性(含 uifid 缺失/回退)、产物键名与 store 对齐、
以及 _get 的三条失败路径(空 body / 403 带网关原话 / 正常返回)。
This commit is contained in:
2026-10-10 17:12:25 +08:00
parent 21ff01b894
commit 2112c1a870
1601 changed files with 367425 additions and 0 deletions
@@ -0,0 +1,222 @@
# Matrix 矩阵养号系统
> **版本**: v5.2 | **环境**: macOS (Apple Silicon) | **引擎**: Camoufox (Firefox 内核)
> **平台**: 抖音 ✅ | 小红书 ✅ | 知乎 🔄
> **最后更新**: 2026-06-13
---
## 一句话
Matrix 是一套社交账号养号自动化系统。通过 Camoufox 控制浏览器,自动完成日常养号任务(浏览、点赞、评论、搜索),模拟真实用户行为。
代码在 `agent-sync`(Gitee + GitHub 双同步),数据在 `agent-local`(本机,不同步)。
---
## 快速上手
```bash
# 1. 进入目录
cd ~/workbuddy-agent-os/agent-sync/05_tools/07_matrix
# 2. 查看所有命令
./mc --help
# 3. 日常养号(抖音)
./mc run --accounts douyin_test --blueprints douyin_daily --rounds 3
# 4. 日常养号(小红书)
./mc run --accounts xhs_01 --blueprints xhs_daily --rounds 2
# 5. 定向评论(给链接+方向)
./mc task comment --url https://v.douyin.com/xxx --direction 称赞
# 6. 搜索浏览
./mc task search --keyword 美食探店 --rounds 5
# 7. 启动 Dashboard
open http://localhost:9988
```
---
## Dashboard 导航
| 菜单 | 功能 |
|------|------|
| **首页** | 运营数据看板(本机账号/已登录/已采集/联邦账号) |
| **身份与账号** | 短信接收、注册新账号、账号卡片(四维状态+人设)、删除/登录/采集 |
| **命令与任务** | TAB1: 批量执行 / TAB2: 定向评论 / TAB3: 定时任务 |
| **账号总览** | 多机摘要 + 全账号表格 |
| **蓝图编排** | 管理所有蓝图 |
| **原子操作** | 原子操作库 |
| **录制管理** | 录制/分析/导出操作 |
| **⚙️ 矩阵设置** | TAB1: 导入导出 / TAB2: 备份恢复 / TAB3: 语料库 |
启动 Dashboard:
```bash
cd ~/workbuddy-agent-os/agent-sync/05_tools/10_dashboard
nohup ~/.workbuddy/binaries/python/envs/agent-os/bin/uvicorn app:app --host 0.0.0.0 --port 9988 &
```
---
## 核心功能
### 日常养号
5 个核心蓝图:
| 蓝图 | 用途 | 执行 |
|------|------|------|
| `douyin_daily` | 抖音日常养号(浏览+点赞+收藏+评论) | `mc run --accounts A --blueprints douyin_daily --rounds 3` |
| `xhs_daily` | 小红书日常养号 | `mc run --accounts A --blueprints xhs_daily --rounds 3` |
| `douyin_comment` | 定向评论(打开链接→评论) | `mc task comment --url URL --direction 称赞` |
| `douyin_search` | 搜索浏览(搜关键词→随机看视频) | `mc task search --keyword K --rounds 5` |
| `douyin_collect` | 信息采集(搜博主→采主页信息) | `mc task collect --keyword 博主名` |
| `douyin_reply` | 作者回复(看评论→回复) | `mc task reply --account douyin_test` |
### 智能任务(mc task)
```bash
# 定向评论(自动识别平台、选账号、生成评论)
mc task comment --url https://v.douyin.com/xxx --direction 称赞
# 搜索浏览
mc task search --keyword 美食探店 --rounds 5
# 信息采集
mc task collect --keyword 张三说科技
# 作者回复
mc task reply --account douyin_test
# 参数说明
mc task --list
```
### 账号管理
每个账号四维状态一目了然:
```
🎵 小美养生茶 douyin_test
📱 15370103682
✅ 身份 ✅ 登录 ✅ 昵称 ✅ 同步
🎯 美食·养生·旅行 | 💬 称赞/提问 ← 人设
[🔑 登录] [👤 采集] [🗑 删除]
```
- **状态**:身份 ✅/❌ | 登录 ✅/❌ | 昵称 ✅/❌ | 同步 ✅/❌
- **操作**:🔑登录(打开浏览器扫码) | 👤采集(获取昵称/粉丝数) | 🗑删除
### 注册新账号
```bash
# 方式一:Dashboard 身份与账号 → 注册新账号
# 方式二:CLI
mc account register --platform douyin --phone 138xxxx --name 备注名
```
- 同手机号注册第二个平台时,自动复用同一份浏览器指纹
- 自动创建身份目录 → 打开浏览器 → 扫码登录
### 定时任务
```bash
# 添加定时任务
mc schedule add --id morning --account douyin_test --blueprint douyin_daily --time 09:00 --rounds 3
# 列出定时任务
mc schedule list
# 启动调度器(保持终端运行)
mc schedule start
```
### 账号人设
每个账号可配置人设,养号时自动按人设选语料方向和搜索关键词:
```json
{
"nickname": "小美养生茶",
"persona": {
"interests": ["美食", "养生", "旅行"],
"comment_style": ["称赞", "提问"],
"search_keywords": ["美食探店", "养生茶", "周末去哪"]
}
}
```
配置位置:`agent-local/tools/matrix/data/profiles.json`
---
## 新机部署
```bash
# 1. 拉取代码
cd ~
git clone [email protected]:neowoodland-art/mac-agent-os.git workbuddy-agent-os/agent-sync
cd workbuddy-agent-os/agent-sync
# 2. 运行初始化
bash 00_bootstrap/init.sh
# 3. 安装 Matrix 依赖
cd 05_tools/07_matrix
bash install.sh
# 4. 同步本机账号
# 从 accounts_registry.yaml 自动同步 assigned_machine 为本机的账号
# 5. 启动 Dashboard
cd ~/workbuddy-agent-os/agent-sync/05_tools/10_dashboard
nohup ~/.workbuddy/binaries/python/envs/agent-os/bin/uvicorn app:app --host 0.0.0.0 --port 9988 &
# 6. 第一次使用需扫码登录
./mc account login douyin_test
```
---
## CLI 命令参考
| 命令 | 用途 |
|------|------|
| `mc run --accounts A,B --blueprints X,Y --rounds N` | 批量执行养号任务 |
| `mc task comment --url U --direction D` | 智能定向评论 |
| `mc task search --keyword K` | 搜索浏览 |
| `mc task collect --keyword K` | 信息采集 |
| `mc task reply --account A` | 作者回复 |
| `mc account list` | 列出所有账号 |
| `mc account login <name>` | 扫码登录 |
| `mc schedule list` | 列出定时任务 |
| `mc schedule add --id X --account Y --blueprint Z --time HH:MM` | 添加定时任务 |
| `mc schedule start` | 启动定时调度器 |
| `mc record start --account A` | 录制原子操作 |
| `mc record list/analyze/export` | 录制管理 |
| `mc corpus list` | 查看语料库 |
---
## 数据存储
```
~/workbuddy-agent-os/
├── agent-sync/05_tools/07_matrix/ ← 代码(Git 同步)
│ ├── blueprints/ ← 任务蓝图(JSON)
│ ├── scripts/mc/ ← 核心引擎
│ ├── corpus/ ← 评论语料库
│ └── config/ ← 配置(定时任务、AI 等)
│
└── agent-local/tools/matrix/ ← 数据(本机,不同步)
├── config/accounts.yaml ← 本机账号配置
├── identities/ ← 浏览器身份目录
│ ├── douyin_test/ ← 账号A(含 cookies、指纹)
│ └── phone_138xxxx/ ← 同手机号共享身份(新注册)
├── data/profiles.json ← 昵称/人设数据
├── recordings/ ← 录制包
└── logs/ ← 运行日志
```