Skip to content

v0.12.2 v0.12.2 — 抖音刷视频进不了推荐页

Choose a tag to compare

@Britneycode Britneycode released this 02 Nov 12:41
· 32 commits to main since this release

v0.12.2 — 抖音刷视频进不了推荐页

其实一直在刷,但每轮都空手而归。

根因

FEED_URL = https://www.douyin.com/?recommend=1,抖音桌面版对导航请求一律 302 到 /jingxuan 精选页。

插件抓的 [data-e2e="feed-active-video"] 只在推荐页才有。落在精选页后 scroll 每轮都空手而归,activity 里只写「这轮没刷到新视频」——看起来像没刷,其实是进错了页面。

关键发现

推荐页存在,但只能靠点击左侧栏的「推荐」tab 进入(前端路由跳转,不走服务端 302)。

而且 el.click() 不管用,必须用 Input.dispatchMouseEvent 发真实鼠标事件——抖音对 JS 合成点击免疫。

改了什么

lib/douyin-browse.js 加 ensureRecommend(b):

  1. scroll 开头先 goto(FEED_URL)(落在精选页)
  2. ensureRecommend 先用 activeVideo() 读一条判断在不在推荐页;读不到就找「推荐」按钮位置
  3. 用 Input.dispatchMouseEvent 发真实鼠标事件点进去(mouseMoved → mousePressed → mouseReleased)
  4. 等 3 秒后再 activeVideo() 验证一次;还进不去就 warn 停下来,不再空刷一轮

顺带澄清一个误判

我最初以为 data-e2e-* 选择器全挂了(抖音改版)。错:它们全都活着,只是在推荐页——精选页才是另一套 data-aweme-id / .discover-video-card-item。不是选择器坏了,是进错了页面。

验证

  • node --check lib/douyin-browse.js → 语法 OK
  • test/douyin-browser.mjs → 全过
  • test/smoke.mjs → 全过
  • test/startup-gate.mjs → 全过

真实浏览器实测(不是 mock):

起点: https://www.douyin.com/jingxuan  | feed-active-video: false
ensureRecommend 结果: true
URL: https://www.douyin.com/?recommend=1
结构: { active: 1, desc: 2, video: 3 }

待验收

没在宿主里跑过完整一轮(宿主得先重启才能加载这个改动)。真实行为待验:进推荐页 → scroll 读到视频 → 写 douyin_seen 记忆 → 主动开口说出刷到的内容。