账号分析技能红线强化:身份标识禁从MCP账号库回填 + 新增视频列表/账号信息获取执行避坑规则
This commit is contained in:
1 parent
26c707c357
commit
ccdd79ea40
7 files changed
+131
-6
No files matched your search
@@ -89,6 +89,21 @@
|
||||
|
||||
**数据提取方式:** 通过遍历页面上 `a[href*="/video/"]` 元素的 React Fiber,向上查找 `awemeInfo` 对象,获取完整的视频数据(含 stats、video、textExtra 等字段),而非仅从 DOM 文本解析。
|
||||
|
||||
**提取方法优先级(2026-08-31 实测纠正):**
|
||||
|
||||
1. **首选:列表组件 Fiber `defaultDataList`(一次拿全,含 createTime)**——08-26 旧梦留声机 36 条、08-31 俊希 136 条均实测通过:
|
||||
- 从 `#root` 的 `__reactContainer$` / `__reactFiber$` 键向下遍历(child/sibling 链),找 `memoizedProps.defaultDataList` 数组,每条含 `awemeId / desc / createTime / stats(diggCount 等驼峰) / textExtra`
|
||||
- **`createTime` 只有这个来源可靠**:逐卡片 `awemeInfo` 的 createTime 在列表页可能缺失(undefined 被 JSON.stringify 省略),`defaultDataList` 是全量组件数据,136/136 含 createTime
|
||||
- 统计字段是**驼峰式**:`stats.diggCount / commentCount / shareCount / collectCount / playCount`(不是 snake_case 的 `digg_count`)
|
||||
2. **兜底:卡片 Fiber `awemeInfo`**——逐卡片提取 `awemeInfo.video.duration`(毫秒)等 defaultDataList 可能缺的字段;两者按 awemeId 合并:defaultDataList 提供 createTime/stats,卡片提供 duration
|
||||
3. **禁止**:逐条打开 `/video/{id}` 视频页抓发布时间——15 次跳转是明显爬虫特征,且低效;正确路径是主页一次滚动 + Fiber 一次提取
|
||||
|
||||
**访问账号主页(2026-08-31 实测纠正):**
|
||||
|
||||
- **必须走搜索路径**:`https://www.douyin.com/search/{账号ID}?type=user` → 搜索结果中定位用户卡片 → **模拟点击进入主页**(CDP `Input.dispatchMouseEvent` mouseMoved→mousePressed→mouseReleased,或 `click_at_xy`),**禁止直接构造 `/user/{sec_uid}` 地址跳转**
|
||||
- 搜索结果卡片链接带完整参数(如 `/user/{sec_uid}brjmRxiM9i`),直接构造缺后缀的地址会访问异常;且频繁直达地址 = 爬虫特征
|
||||
- 标签页复用:先在已有标签页上导航,不新建(见 5.5 标签页复用规则)
|
||||
|
||||
**提取的视频字段(13列标准):**
|
||||
|
||||
| 列序 | 字段 | 说明 | 数据来源 |
|
||||
|
||||
Reference in new issue
Block a user