dsh-whale-dive:在 DSH 内读取 Bilibili 与抖音的只读联网工具

前言

在 DeepSeek Harness(DSH)里让模型查 B 站或抖音,常见做法是手写 HTTP 或挂一层搜索。B 站新接口要带 WBI 签名,请求过猛还会触发按 IP 维度的 HTTP 412;抖音侧则依赖页面内 VM 算出的 a_bogus、X-Bogus 等参数,纯客户端往往 403 或空体。社区插件 dsh-whale-dive(维护者 nisew2,SkillHub 分类为联网工具)把两条链路封装成九个面向模型的只读工具:B 站走带限速的 HTTPS,抖音走本机 Edge/Chrome 经 CDP 渲染 DOM。下面介绍其定位、能力与安装配置要点。

这是什么

dsh-whale-dive 是 DSH 社区插件,当前包版本 0.1.0(MIT)。它在 Harness 进程内提供 Bilibili 与 Douyin 的只读读取面:不发帖、不点赞、不关注、不写数据。B 站侧优先调用无需 WBI 的公开路由,必要时再回退签名接口,并内置按主机的令牌桶、并发上限与熔断冷却;抖音侧因无法靠普通 HTTP 复现签名,插件会启动独立用户数据目录下的真实浏览器,经 Chrome DevTools Protocol 读渲染结果。

核心功能:九个工具

README 列出的模型可调工具如下(名称即 DSH 中的 tool id):

whale_dive_status            pacer health, cool-downs, cookie presence, WBI key age
whale_dive_bili_video        one video: metadata, parts, uploader, counters
whale_dive_bili_feed         the popular board, or one video's related rail
whale_dive_bili_search       keyword search: video / user / article / bangumi
whale_dive_bili_author       uploader profile plus a page of their uploads
whale_dive_bili_comments     a comment page with each thread's top replies
whale_dive_bili_danmaku      the danmaku track of one part
whale_dive_bili_subtitles    subtitle tracks per part, bodies when a cookie allows
whale_dive_douyin            hot / feed / video / search / status / close

whale_dive_status 用于查看限速层健康度、冷却状态、是否配置 cookie、WBI 密钥年龄等。B 站工具覆盖单视频元数据、热门/相关推荐、关键词搜索(视频/用户/专栏/番剧)、UP 主资料与投稿列表、评论页、弹幕、字幕轨道(部分字幕正文需 cookie)。whale_dive_douyin 聚合抖音的热榜、推荐流、单视频、搜索、状态与关闭浏览器等动作。

B 站:为何需要 pacing

资料中的实测说明:B 站在持续突发请求下会对 IP 返回 HTTP 412,且封锁可延续数分钟。插件因此不是裸 fetch,而是每主机令牌桶、maxConcurrent 并发 cap,以及连续触发后冷却时间翻倍的熔断器。同时按路由是否需 WBI 签名选择接口,例如 x/web-interface/view、popular、related、x/v2/reply、x/player/v2、弹幕与 UP 主相关路由等多为无签名路径;搜索与部分投稿排序则走 WBI 路由作为必要时的回退。

抖音:为何用真实浏览器

抖音 API 参数在混淆 VM 内运行时生成,无头环境也常遇验证码。插件选择本机 Microsoft Edge 或 Google Chrome,独立 profile,经 CDP 驱动。单次调用耗时可达数秒;窗口若被系统判定为遮挡,Chromium 可能停止绘制导致 DOM 为空,因此启动参数包含 --disable-backgrounding-occluded-windows、--disable-renderer-backgrounding、--disable-background-timer-throttling。热榜与推荐流无需登录;关键词搜索对匿名用户有登录墙,需按 README 用 action: "video" 唤起浏览器扫码,会话保存在插件专用 profile,而非日常浏览器目录。

输出约定

各工具遵循两条规则:字段只省略、不捏造;受门禁限制时仍返回成功并在 note 中说明如何解锁。数值统一做类型规整(含上游 null、缺失键、"1.2万" 等)。触及平台风控限速时抛出 HttpError,code: "RISK"、risk: true,并携带冷却窗口,便于模型停止对该主机重试。

环境与依赖

  • DSH:>= 0.2.0-rc.1 且 < 0.3.0-0
  • Node:>= 20(抖音路径使用全局 WebSocket)
  • 抖音路径需要本机 Edge 或 Chrome;仅 B 站路径不需要浏览器

安装与启用

官方安装命令(desktop profile):

dsh plugin --profile desktop add dsh-whale-dive

包内自带 cordis.patch.yml,加载时会插入对应 loader 行,不替换 base 配置、不注册搜索 provider,README 称因此不易与其他选 provider 的插件冲突。安装后需重启 DSH,profile 变更在启动时生效。

配置项

配置位于插件 settings 段,每次工具调用都会读取,改完即对下一次调用生效,无需重载。默认值与含义如下(摘自 README):

Key Default Meaning
requestsPerSecond 4 每主机请求速率;资料称实测安全区间约 5–10 req/s,默认 4 留余量
burst 8 令牌桶容量
maxConcurrent 3 同时进行的请求数
cooldownMs 120000 风险信号后主机暂停时长,连续触发则翻倍
maxCooldownMs 600000 冷却翻倍上限
timeoutMs 20000 单次请求超时
cookie "" SESSDATA=...;字幕正文及部分需会话的路由
douyinBrowser "" Edge/Chrome 路径,空则自动探测
douyinPort 47821 辅助浏览器 DevTools 端口
douyinUserDataDir "" profile 目录,空则用临时目录
douyinKeepAliveMs 900000 空闲时浏览器保活时间
douyinWaitMs 11000 Douyin loadEventFired 后的等待,用于异步 hydrate
danmakuLimit 500 弹幕默认条数上限
commentPageSize 20 评论页默认大小

典型用法思路

  1. 安装并重启 DSH 后,可先调用 whale_dive_status 确认限速与 cookie、WBI 状态。
  2. 查 B 站:按任务选用 whale_dive_bili_video、whale_dive_bili_feed、whale_dive_bili_search 等;需要字幕全文时在 settings 填入 cookie。
  3. 查抖音:热榜/推荐可直接走 whale_dive_douyin 对应 action;搜索前按 README 完成可选扫码登录。
  4. 长时间不用抖音浏览器时可调用 whale_dive_douyin 的 close,或依赖 douyinKeepAliveMs 自动回收。

具体参数以 Harness 内工具 schema 为准;README 未给出完整 JSON 调用示例时,不宜臆造字段名。

适用场景与注意

适合需要在 DSH 对话或智能体流程中只读引用 B 站视频元数据、评论、弹幕、字幕,或抖音热榜/流/单条内容的开发者。插件以当前 DSH 进程权限运行,会发起外网请求并可能启动本机浏览器;安装前应在 GitHub 仓库 查阅源码与 MIT 许可证,并自行评估合规与账号风险。DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-whale-dive 把 B 站签名与限速、抖音 CDP 渲染两条差异很大的传输问题收敛到九个只读工具,并附带可调的 pacing 与抖音浏览器生命周期配置。若要安装或查 issue,见目录页 skillhub.cn/plugins/nisew2/dsh-whale-dive 与源码 github.com/nisew2/dsh-whale-dive。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜