feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
移植自 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:
@@ -0,0 +1,126 @@
|
||||
# 2026-05-01 记忆提炼摘要
|
||||
|
||||
> 提炼时间: 2026-05-02 09:46:32
|
||||
|
||||
## 统计
|
||||
- 新增事实: 0
|
||||
- 重复跳过: 56
|
||||
- 冲突处理: 56
|
||||
|
||||
## 提取的事实
|
||||
|
||||
- 📌 **[personal-management]** `验证` → [已完成] - 完整的账号登录管理标准化流程(环境检查→状态查看→重登录→验证→切换→故障排查)
|
||||
- 📌 **[personal-management]** `更新` → [已完成] - 已更新 SKILL.md 引用该 SOP
|
||||
- 📌 **[personal-management]** `验证` → [已完成] - Phase 2a: douyin_01 Chrome ✅ 全部通过(启动→登录→蓝图→关闭→重启持久化验证)
|
||||
- 📌 **[personal-management]** `创建` → [修复] - `camoufox_manager.py` 的 `--launch` 添加了 `persistent_context=True` 和 `user_data_dir` 参数(之前创建了 profile_dir 变量但未传入 As
|
||||
- 📌 **[personal-management]** `修复` → [关键发现] 1. `switch_account.py` 的 DOM 头像检测在桌面端视口不可用,导致误报"未登录"(P0 需要修复)
|
||||
- 📌 **[personal-management]** `验证` → [关键发现] 4. Chrome Profile 持久化验证通过(关闭→重启后 Cookie 仍然有效)
|
||||
- 📌 **[personal-management]** `确认` → [修复] - 修复后用户确认扫码显示"登录 Windows" ✅
|
||||
- 📌 **[personal-management]** `完成` → [当前账号状态] - douyin_camo01: 已停止(测试完成后关闭)
|
||||
- 📌 **[personal-management]** `修复` → [已完成] 2. **switch_account.py 修复** — 登录检测从 DOM 改为 auth_manager Cookie 检测
|
||||
- 📌 **[personal-management]** `修复` → [已完成] 3. **cdp_connector.py 修复** — Camoufox 中文字体支持
|
||||
- 📌 **[personal-management]** `更新` → [已完成] 5. **全量文档更新** — SKILL.md / FULL_TEST_REPORT.md / MEMORY.md
|
||||
- 📌 **[personal-management]** `更新` → [统一升级引擎 agentos upgrade(22:00-22:15)] - CHANGELOG v2.2.0 / README 已更新
|
||||
- 📌 **[personal-management]** `创建` → [SOUL.md v3.0 升级方案(23:35)] - 4 个协议文件已创建到 `03_knowledge/20_methods/agent-protocols/`
|
||||
- 📌 **[personal-management]** `确认` → [SOUL.md v3.0 升级方案(23:35)] - **SOUL.md 本身尚未替换**,等待用户确认后执行
|
||||
- 📌 **[personal-management]** `配置` → [agentos config 配置管理(00:07 5/2)] - 新建 `config_mgr.py` — 配置管理(status/diff/apply/rollback)
|
||||
- 📌 **[personal-management]** `配置` → [agentos config 配置管理(00:07 5/2)] - 新建 `01_core/CONFIG_MANIFEST.yaml` — 配置清单(9文件,A/B/C三类)
|
||||
- 📌 **[personal-management]** `部署` → [agentos config 配置管理(00:07 5/2)] - A类6个全部部署一致:SOUL/IDENTITY/USER/HOST_ID/MAINTENANCE/CHANGELOG
|
||||
- 📌 **[personal-management]** `选择` → [agentos config 配置管理(00:07 5/2)] - B类 mcp.json 保留(待手动选择)
|
||||
- 📌 **[personal-management]** `确认` → [agentos config 配置管理(00:07 5/2)] - C类 models/settings 确认存在
|
||||
- 📌 **[personal-management]** `部署` → [SOUL.md v3.3 升级执行完成(23:41)] - ✅ 4 个协议文件部署到 03_knowledge/20_methods/agent-protocols/
|
||||
- 📌 **[personal-management]** `更新` → [SOUL.md v3.3 升级执行完成(23:41)] - ✅ 活动目录 ~/.workbuddy/SOUL.md 已更新
|
||||
- 📌 **[personal-management]** `更新` → [SOUL.md v3.3 升级执行完成(23:41)] - 关键词索引已更新(12条)
|
||||
- 📌 **[personal-management]** `配置` → [agentos init PATH 自动配置(09:38)] - `init.py` 新增 `step_check_path()` — 新机初始化时自动检测并配置 PATH
|
||||
- 📌 **[personal-management]** `name` → 13754826808
|
||||
- 📌 **[personal-management]** `username` → 为 chengzige
|
||||
- 💭 **[personal-management]** `preference` → 偏好中文交流,工作风格严谨,关注系统完整性和细节验证,提供详细的分步自动化指令并期望结构化的执行报告。遵循结构化工作流:读取历史 → 执行任务 → 汇报结果 → 更新记忆。文档需求高,要求非常详细的文档涵盖项目各个方面和文件,用于与他人讨论
|
||||
- 📌 **[personal-management]** `完成` → [提取的事实] - 📌 **[personal-management]** `验证` → [已完成] - 完整的账号登录管理标准化流程(环境检查→状态查看→重登录→验证→切换→故障排查)
|
||||
- 📌 **[personal-management]** `更新` → [提取的事实] - 📌 **[personal-management]** `更新` → [已完成] - 已更新 SKILL.md 引用该 SOP
|
||||
- 📌 **[personal-management]** `完成` → [提取的事实] - 📌 **[personal-management]** `验证` → [已完成] - Phase 2a: douyin_01 Chrome ✅ 全部通过(启动→登录→蓝图→关闭→重启持久化验证)
|
||||
- 📌 **[personal-management]** `修复` → [提取的事实] - 📌 **[personal-management]** `创建` → [修复] - `camoufox_manager.py` 的 `--launch` 添加了 `persistent_context=True` 和 `
|
||||
- 📌 **[personal-management]** `修复` → [提取的事实] - 📌 **[personal-management]** `修复` → [关键发现] 1. `switch_account.py` 的 DOM 头像检测在桌面端视口不可用,导致误报"未登录"(P0 需要修复)
|
||||
- 📌 **[personal-management]** `验证` → [提取的事实] - 📌 **[personal-management]** `验证` → [关键发现] 4. Chrome Profile 持久化验证通过(关闭→重启后 Cookie 仍然有效)
|
||||
- 📌 **[personal-management]** `确认` → [提取的事实] - 📌 **[personal-management]** `确认` → [修复] - 修复后用户确认扫码显示"登录 Windows" ✅
|
||||
- 📌 **[personal-management]** `完成` → [提取的事实] - 📌 **[personal-management]** `完成` → [当前账号状态] - douyin_camo01: 已停止(测试完成后关闭)
|
||||
- 📌 **[personal-management]** `修复` → [提取的事实] - 📌 **[personal-management]** `修复` → [已完成] 2. **switch_account.py 修复** — 登录检测从 DOM 改为 auth_manager Cookie 检测
|
||||
- 📌 **[personal-management]** `修复` → [提取的事实] - 📌 **[personal-management]** `修复` → [已完成] 3. **cdp_connector.py 修复** — Camoufox 中文字体支持
|
||||
- 📌 **[personal-management]** `更新` → [提取的事实] - 📌 **[personal-management]** `更新` → [已完成] 5. **全量文档更新** — SKILL.md / FULL_TEST_REPORT.md / MEMORY.md
|
||||
- 📌 **[personal-management]** `更新` → [提取的事实] - 📌 **[personal-management]** `更新` → [统一升级引擎 agentos upgrade(22:00-22:15)] - CHANGELOG v2.2.0 / README 已更新
|
||||
- 📌 **[personal-management]** `安装` → [提取的事实] - 📌 **[personal-management]** `安装` → [当前状态] - agentos CLI 已安装到 ~/.local/bin/agentos
|
||||
- 📌 **[personal-management]** `更新` → [提取的事实] - 💭 **[personal-management]** `preference` → 偏好中文交流,工作风格严谨,关注系统完整性和细节验证,提供详细的分步自动化指令并期望结构化的执行报告。遵循结构化工作流:读取历史 →
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0001`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0002`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0003`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0004`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0005`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0006`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0007`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0008`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0009`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0010`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0011`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0012`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0013`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0014`: **skip** — 旧事实置信度更高(0.9 >= 0.9),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0015`: **skip** — 旧事实置信度更高(0.9 >= 0.9),需用户确认
|
||||
- 📌 **[personal-management]** `确认` → [冲突记录] - `FACT-2026-05-01-0016`: **skip** — 旧事实置信度更高(0.85 >= 0.85),需用户确认
|
||||
|
||||
## 冲突记录
|
||||
|
||||
- `FACT-2026-05-01-0001`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0002`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0003`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0004`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0005`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0006`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0007`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0008`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0009`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0010`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0011`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0012`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0013`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0014`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0015`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0016`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0017`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0018`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0019`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0020`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0021`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0022`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0023`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0024`: **skip** — 旧事实置信度更高(0.9 >= 0.9),需用户确认
|
||||
- `FACT-2026-05-01-0025`: **skip** — 旧事实置信度更高(0.9 >= 0.9),需用户确认
|
||||
- `FACT-2026-05-01-0026`: **skip** — 旧事实置信度更高(0.85 >= 0.85),需用户确认
|
||||
- `FACT-2026-05-01-0027`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0028`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0029`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0030`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0031`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0032`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0033`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0034`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0035`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0036`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0037`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0038`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0039`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0040`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0041`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0042`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0043`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0044`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0045`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0046`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0047`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0048`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0049`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0050`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0051`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0052`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0053`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0054`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0055`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
- `FACT-2026-05-01-0056`: **skip** — 旧事实置信度更高(0.75 >= 0.75),需用户确认
|
||||
Reference in New Issue
Block a user