🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

鲸潜双站 nisew2/dsh-whale-dive

DeepSeek Harness
nisew217 天前有提交已提供中文文档扫描:含敏感能力

在对话里检索并读取B站与抖音的视频内容

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add nisew2/dsh-whale-dive
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · browser
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
  • 执行外部命令来自配置/变量
    lib/douyin.js:178
    this.child = spawn(binary, flags, { detached: true, stdio: "ignore" });
  • 发起网络请求
    lib/douyin.js:191
    const response = await fetch(`http://127.0.0.1:${this.port}/json/list`, { signal: AbortSignal.timeout(2000) });
  • 执行外部命令固定命令
    lib/douyin.js:258
    spawn("taskkill", ["/pid", String(child.pid), "/T", "/F"], { stdio: "ignore", detached: false });
  • 发起网络请求
    lib/http.js:105
    response = await fetch(url, {
  • 发起网络请求
    lib/http.js:187
    const response = await this.request(url, options);
  • 发起网络请求
    lib/http.js:230
    return this.request(url, {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

在 DeepSeek Harness 里读取 Bilibili 和抖音:按节奏签名调用 Bilibili API,抖音页面则通过 CDP 交给真实 Edge 浏览器渲染。

README

由 DeepSeek 最新模型翻译生成
dsh-whale-dive 在 DeepSeek Harness 里读 B站 和 抖音:九个面向模型的工具,两条完全不同的传输路线,一套只读接口。 whale_dive_status 限速器状态、冷却窗口、Cookie 是否存在、WBI 密钥剩余寿命 whale_dive_bili_video 单个视频:元数据、分P、UP主、各项计数 whale_dive_bili_feed 热门榜,或某个视频的相关推荐 whale_dive_bili_search 关键词搜索:视频 / 用户 / 专栏 / 番剧 whale_dive_bili_author UP主资料 + 一页投稿列表 whale_dive_bili_comments 一页评论,含每条热评的回复 whale_dive_bili_danmaku 单个分P的弹幕 whale_dive_bili_subtitles 各分P的字幕轨,有 Cookie 时连正文一起读 whale_dive_douyin hot / feed / video / search / status / close 为什么是两套传输 B站走普通 HTTPS —— 但它的新路由要用轮换的 w_rid 签名(即 WBI 方案),而且它对持续并发回的是一记 按 IP 计、比突发本身活得久得多的 HTTP 412。
展开完整文档(README 剩余 1 节)
dsh-whale-dive

在 DeepSeek Harness 里读 B站 和 抖音:九个面向模型的工具,两条完全不同的传输路线,一套只读接口。

whale_dive_status 限速器状态、冷却窗口、Cookie 是否存在、WBI 密钥剩余寿命 whale_dive_bili_video 单个视频:元数据、分P、UP主、各项计数 whale_dive_bili_feed 热门榜,或某个视频的相关推荐 whale_dive_bili_search 关键词搜索:视频 / 用户 / 专栏 / 番剧 whale_dive_bili_author UP主资料 + 一页投稿列表 whale_dive_bili_comments 一页评论,含每条热评的回复 whale_dive_bili_danmaku 单个分P的弹幕 whale_dive_bili_subtitles 各分P的字幕轨,有 Cookie 时连正文一起读 whale_dive_douyin hot / feed / video / search / status / close

为什么是两套传输

B站走普通 HTTPS —— 但它的新路由要用轮换的 w_rid 签名(即 WBI 方案),而且它对持续并发回的是一记 按 IP 计、比突发本身活得久得多的 HTTP 412。同一台机器上的实测:20 线程 × 10 次干净通过;8 线程混合 view+search+reply 打 30 秒(约 51 req/s),2128 次请求里吃到 1372 次 HTTP 412,且 90 秒后封锁仍在。所以这里带的是一层限速,而不是裸 fetch:按 host 计的令牌桶、并发上限、以及每次连续触发就翻倍的熔断冷却。

同一轮实测也测出了哪些路由免签可读,于是插件优先走它们、把签名路由留作兜底:

| 路由 | 需要签名 | 谁在读 |
| x/web-interface/view | 否 | bili_video |
| x/web-interface/popular | 否 | bili_feed(热门) |
| x/web-interface/related | 否 | bili_feed(相关) |
| x/v2/reply | 否 | bili_comments |
| x/player/v2 | 否 | bili_subtitles |
| x/v1/dm/list.so | 否 | bili_danmaku |
| x/web-interface/card | 否 | bili_author(资料) |
| x/relation/stat | 否 | bili_author(关注数) |
| x/series/recArchivesByKeywords | 否 | bili_author(投稿,默认排序) |
| x/web-interface/wbi/search/type | WBI | bili_search |
| x/space/wbi/arc/search | WBI | bili_author(投稿,指定排序) |

抖音则完全没法用 HTTP 读。它的接口带 a_bogus、X-Bogus、__ac_signature,三个都在页面里的混淆 VM 中实时算出;裸客户端拿到的是 403、空响应体、或验证码中间页。无头浏览器一样吃验证码。唯一可行的路线是一个真实的、有界面的 Edge/Chrome —— 页面自己算签名 —— 所以 whale_dive_douyin 会在自己的独立 profile 目录里拉起一个这样的浏览器,通过 Chrome DevTools 协议驱动它,读渲染后的 DOM。

这条路线每次调用要花几秒,而且有个不明显的坑:被挪到屏幕外的窗口会被 Chromium 判定为被遮挡,而被遮挡的窗口会停止绘制 —— feed 永远不 hydrate,DOM 一直是空的。所以启动参数里带了 --disable-backgrounding-occluded-windows、--disable-renderer-backgrounding、--disable-background-timer-throttling,正是这三个开关让挪到屏幕外的窗口真的会渲染。

安装

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

包装自带 cordis.patch.yml,装载行会自己插进去。装配里其他东西一概不动:不替换任何基础行的配置,不注册搜索 provider,所以这一层不会跟别的「选 provider」补丁打架。

装完重启 DSH —— profile 的改动在启动时生效。

配置

所有字段都在插件自己的设置区,每次工具调用时现读,所以改完下一次调用就生效,不用重载。

| 键 | 默认 | 含义 |
| requestsPerSecond | 4 | 单 host 速率。实测安全带是 5–10 req/s,4 留了余量。 |
| burst | 8 | 令牌桶容量 —— 空闲攒下的额度能一次花多少。 |
| maxConcurrent | 3 | 同时在飞的请求数。 |
| cooldownMs | 120000 | 一次风控信号把 host 停多久,每次连续触发翻倍。 |
| maxCooldownMs | 600000 | 翻倍冷却的上限。 |
| timeoutMs | 20000 | 单请求超时。 |
| cookie | "" | SESSDATA=... 字符串。只有字幕正文和少数几个回 -101 的路由需要。 |
| douyinBrowser | "" | 显式指定 Edge/Chrome 路径,空则自动探测。 |
| douyinPort | 47821 | 辅助浏览器监听 的 DevTools 端口。 |
| douyinUserDataDir | "" | profile 目录,空则用临时目录。 |
| douyinKeepAliveMs | 900000 | 空闲的辅助浏览器保活多久。 |
| douyinWaitMs | 11000 | 抖音页 loadEventFired 之后的沉降时间。不是凑数 —— feed 是异步 hydrate 的。 |
| danmakuLimit | 500 | 弹幕条数默认上限。 |
| commentPageSize | 20 | 评论默认每页条数。 |

抖音登录(可选)

hot 和 feed 不需要账号。关键词搜索需要:抖音把它挡在登录墙后面,匿名访客看到的是「登录后即可搜索更多精彩视频」。想解锁,用 whale_dive_douyin 跑一次 action: "video"(这会拉起辅助浏览器),然后在弹出的窗口里扫码。会话存在插件自己的 profile 目录里(永远不碰你日常的浏览器 profile),之后自动复用。

输出约定

每个工具都遵守两条规则:

- 字段只会缺,不会编。 某个面被墙挡住时,工具依然成功,并在 note 里说明这道墙和进去的路 —— 因为「这里被墙了,这样进去」是有用的答案,抛错不是。
- 所有数字都做类型收敛。 上游会给 null、会缺键、会给 "1.2万",这些都会让输出 schema 校验失败;所以每个值在交给 harness 校验前先投影成合法类型。

限流失败是例外:它抛 HttpError,code: "RISK"、risk: true,带上冷却窗口。这个区分是刻意的 —— 读到「被拦截了,停止调用这个 host」的模型,和读到「请求失败」然后一路重试到更长的封禁的模型,行为完全不同。

依赖

- DSH >= 0.2.0-rc.1 < 0.3.0-0
- Node >= 20(抖音那条路用全局 WebSocket)
- 抖音需要 Microsoft Edge 或 Google Chrome;B站那条路两个都不需要

边界

两条后端都是只读。这里没有任何发帖、点赞、关注、写入的能力。

许可

MIT。
预览分享卡片长什么样 ↓nisew2/dsh-whale-dive
分享 · DeepSeek Harness Hub
nisew2/dsh-whale-dive

在对话里检索并读取B站与抖音的视频内容

这是你的仓库?认领条目

回到顶部