link-resolver-engine
合法的 Bilibili/抖音视频下载工具,包含未声明的 Playwright/Chromium 安装行为和 ffmpeg 自动下载,属于中等供应链风险,但未发现恶意行为。
为什么得出这个结论
2/4 个维度触发发现 2 项声明之外的能力或越权行为。
提取到 3 个高危 IOC 或外联信号。
没有形成明确的恶意路径。
发现 6 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
bilibili_video.py:56 和 douyin_video.py:42 均调用 subprocess 安装 playwright chromium,SKILL.md 仅声明 python 二进制
video_snapper.py 通过 ffmpeg-downloader 从 gyan.dev/johnvansickle/evermeet.cx 下载二进制,未在文档中声明
ensure_package.py 安装 requests、playwright、yt-dlp 等均使用通配符版本
最关键的证据
未声明的 Playwright/Chromium 运行时安装
bilibili_video.py 和 douyin_video.py 在导入时均调用 subprocess.check_call 安装 playwright chromium,SKILL.md 仅声明 python 依赖,未提及浏览器内核下载。Chromium 二进制约 100-300MB,从 Google 官方 CDN 下载,存在供应链劫持风险。
scripts/bilibili_video.py:56 未声明的 ffmpeg 自动下载
video_snapper.py 调用 ffmpeg-downloader 从 gyan.dev(Windows)、johnvansickle(Linux)、evermeet.cx(macOS)下载约 100MB 便携版 ffmpeg,SKILL.md 未声明此依赖。
scripts/video_snapper.py:46 pip 依赖无版本锁定
ensure_package.py 对 requests、playwright、yt-dlp、tf-playwright-stealth 等包使用无版本约束的 pip install,可能安装到存在已知漏洞的版本。
scripts/ensure_package.py:1 硬编码占位 IP 地址
预扫描发现 bilibili_video.py:131/278 和 douyin_video.py:85 存在硬编码占位 IP(120.0.0.0、125.0.0.0、134.0.0.0),经审查这些 IP 均未被用于实际网络请求,可能是开发期占位符代码。
scripts/bilibili_video.py:131 fix_setuptools_for_legacy_packages 强制重装打包工具
ensure_package.py:27 强制降级重装 packaging、setuptools、wheel,可能影响系统其他 Python 工具的稳定性。
scripts/ensure_package.py:27 声明能力 vs 实际能力
bilibili_video.py:102-179 bilibili API 请求; douyin_video.py:77-142 douyin API/页面请求 bilibili_video.py:220-260 写入 downloads 目录; douyin_video.py:157 写入文件 bilibili_video.py:56 subprocess 安装 chromium; douyin_video.py:42 同; video_snapper.py:46 subprocess ffmpeg-downloader douyin_video.py:71-142 使用 playwright.chromium 无头浏览器 可疑产物与外联
120.0.0.0 scripts/bilibili_video.py:131
125.0.0.0 scripts/bilibili_video.py:278
134.0.0.0 scripts/douyin_video.py:85
https://api.bilibili.com/x/web-interface/nav scripts/bilibili_video.py:102
https://www.bilibili.com/ scripts/bilibili_video.py:132
https://www.bilibili.com scripts/bilibili_video.py:133
https://api.bilibili.com/x/web-interface/view?bvid= scripts/bilibili_video.py:144
https://api.bilibili.com/x/player/wbi/playurl scripts/bilibili_video.py:177
https://www.bilibili.com/video/BV1GYXKBzEvM/ scripts/bilibili_video.py:479
https://www.douyin.com/video/ scripts/douyin_video.py:77
https://www.douyin.com/ scripts/douyin_video.py:138
https://v.douyin.com/ezOqxZPY3kc/ scripts/douyin_video.py:224
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| playwright | * | pip | 否 | 无版本锁定;安装时自动下载 chromium(约 100-300MB) |
| tf-playwright-stealth | * | pip | 否 | 无版本锁定 |
| yt-dlp | * | pip | 否 | 无版本锁定 |
| requests | * | pip | 否 | 无版本锁定 |
| pydub | * | pip | 否 | 无版本锁定 |
| ffmpeg-downloader | * | pip | 否 | 无版本锁定;运行时从 gyan.dev/johnvansickle/evermeet.cx 下载 ffmpeg 二进制 |
文件构成
scripts/bilibili_video.py scripts/douyin_video.py scripts/video_snapper.py scripts/ensure_package.py scripts/env_manager.py