用户建了个抖音博主任务,两次都是 exit 1、产物目录空空。查下来是上游两处缺陷,
与我们那层监控无关 —— 但它们在别的网络上未必复现,所以社区里没人报。
1) media_platform/douyin/core.py:101 —— 首页 goto 永远等不到 load
await self.context_page.goto(self.index_url) # 默认 wait_until="load"
抖音首页的 load 事件不会触发(有长连接/埋点类请求一直挂着)。实测同一台 Chrome、
同一个地址:domcontentloaded 0.7 秒返回,load 等满 90 秒仍超时。后果是整个采集
一步没走就崩,退出码 1,看起来像「抖音不能用」。改成显式 domcontentloaded ——
上游的贴吧和知乎本来就是这么写的,抖音这个页面只是恰好属于「永远不 load」那类。
2) media_platform/douyin/login.py:266 —— 注入 cookie 后页面是陈旧的
login_by_cookies 把 cookie 塞进 context,但页面是在这之前加载的;SPA 只在加载时
读一次登录态,localStorage.HasUserLogin 还停在"未登录",紧接着 check_login_state
会对着这个陈旧值轮询到超时(600×1 秒=十分钟)再 sys.exit()。下一轮才正常,因为
那时 cookie 已在 profile 里 —— 表现是"第一次白等十分钟、第二次才行",很容易被当
偶发。修复:注入后 reload(domcontentloaded)。
与 xhs 那个 __INITIAL_STATE__ 快照问题是同一类:页面状态是加载那一刻的快照。
本仓库扫码登录与运营模块也各自踩过。
UPSTREAM.md 的第二类「上游 bug 修复」表补上这两条与成因说明(原来只有两条 xhs 的)。
验证:在服务器容器里手工复现,改完后真实采到数据 ——
Parsed sec_user_id: MS4wLjABAAAArLubjxXEcLeiqehxgk4il4AHMu0hXu6_qlmD8z5WmMs
get_all_user_aweme_posts ... video len : 1
douyin aweme id:7690458980574358513, title:中秋哪儿都堵...
产物落在 douyin/jsonl/ 下,顺带把适配器里「平台 id 是 dy、目录是 douyin」的映射
用真实输出证实了。