一个干净优雅的短视频下载工具,粘贴即用。
支持 抖音、TikTok、YouTube、Bilibili、快手 等 1000+ 平台
自动提取混合文案中的链接,播放级画质保存
| 特性 | 说明 |
|---|---|
| 🧠 智能提取 | 直接粘贴抖音分享文案,自动识别并提取视频链接,无需手动清理 |
| 🎯 多引擎驱动 | yt-dlp 覆盖 1000+ 平台;Playwright 真实浏览器专攻抖音/TikTok 反爬 |
| 🎨 清爽界面 | 响应式设计,移动端/桌面端体验一致,渐变色 + 毛玻璃质感 |
| 📥 流式下载 | 后端直传浏览器,不落盘,大文件无压力 |
| 🏷️ 无水印 | 抖音视频优先获取无水印版本,自动替换 watermark CDN |
| 🔍 多清晰度 | YouTube / Bilibili 支持选择不同分辨率,显示文件大小 |
| 🔒 隐私优先 | 本地运行,cookies 仅读取不传输 |
┌──────────────────────────────────────────┐
│ 🎬 短视频下载 │
│ 粘贴分享文案或视频链接,自动识别并下载 │
│ │
│ ✅ 已就绪 (yt-dlp v2025.10.14) │
│ │
│ ┌──────────────────────────────────┐ │
│ │ 粘贴抖音分享文案或链接... [🔍 解析] │ │
│ └──────────────────────────────────┘ │
│ 📎 识别链接:https://v.douyin.com/xxx │
│ │
│ ┌──────────────────────────────────┐ │
│ │ [视频封面缩略图] ⏱ 10:07 │ │
│ │ [抖音] │ │
│ │ 一支五毛的冷门死股... │ │
│ │ 抖娱影视 · 1920x1080 │ │
│ │ 清晰度:[最佳] [1080p] [720p] │ │
│ │ [⬇ 下载视频] 文件大小约 106 MB │ │
│ └──────────────────────────────────┘ │
└──────────────────────────────────────────┘
- Node.js >= 16.0
- Chrome 浏览器(系统自带即可,Playwright 利用它处理抖音)
- Python 3 + yt-dlp(YouTube / Bilibili 等平台需要)
# 1. 克隆仓库
git clone https://github.com/sunqichaoPHP/SQCDownloadVideo.git
cd SQCDownloadVideo
# 2. 安装 Node 依赖
npm install
# 3. 安装 yt-dlp(处理 YouTube、Bilibili 等)
pip3 install yt-dlp
# 4. 安装 Playwright 浏览器(可选,系统 Chrome 已够用)
npx playwright install chromiumnpm start浏览器打开 http://localhost:3000 即可使用。
- 复制视频链接(或直接复制抖音分享文案)
- 粘贴到输入框,工具会自动提取其中的 URL
- 点击 「解析视频」 获取视频信息
- 选择清晰度后点击 「下载视频」
抖音有较强的反爬机制,本工具使用 Playwright + 系统 Chrome 实现真实浏览器自动化,直接拦截 API 获取无水印视频地址。
| 步骤 | 操作 |
|---|---|
| ① | 确保电脑安装了 Chrome 浏览器 |
| ② | 打开 www.douyin.com 随便浏览一下(建立基础 cookies,无需登录) |
| ③ | 回到工具页面,粘贴抖音分享文案,点击解析 |
| ④ | 解析成功后点击下载 |
| 平台 | 引擎 | 备注 |
|---|---|---|
| 抖音 / TikTok | Playwright | 无水印、自动反爬 |
| YouTube | yt-dlp | 多分辨率、字幕可选 |
| Bilibili | yt-dlp | 支持 BV 号 |
| 快手 | yt-dlp | — |
| Twitter / X | yt-dlp | — |
| yt-dlp | — | |
| ... | yt-dlp | 1000+ 平台 |
┌──────────────────────────────────────────────────┐
│ Browser │
│ (HTML / CSS / Vanilla JS) │
│ │
│ 粘贴链接 → 自动提取 URL → 解析 → 选择清晰度 → 下载 │
└──────────────────────┬───────────────────────────┘
│ HTTP API
┌──────────────────────▼───────────────────────────┐
│ Express Server (Node.js) │
│ │
│ ┌─────────────┐ ┌──────────────────────┐ │
│ │ yt-dlp 引擎 │ │ Playwright 引擎 │ │
│ │ (通用平台) │ │ (抖音/TikTok 专用) │ │
│ │ │ │ │ │
│ │ • 视频信息解析 │ │ • 启动真实 Chrome │ │
│ │ • 流式下载 │ │ • 拦截 API 响应 │ │
│ │ • 多清晰度选择 │ │ • JS 数据提取 │ │
│ │ • 1000+ 平台 │ │ • HTML 正则兜底 │ │
│ └─────────────┘ └──────────────────────┘ │
│ │
│ Stream Pipeline → Browser │
└──────────────────────────────────────────────────┘
videotool/
├── server.js # Express 服务,路由、平台识别、引擎调度
├── douyin-downloader.js # Playwright 抖音专用下载器
├── package.json
├── downloads/ # 临时下载目录(yt-dlp 使用)
└── public/
├── index.html # 前端页面
├── style.css # 响应式样式
└── main.js # 交互逻辑
Playwright 引擎采用四层降级策略确保最大兼容性:
- API 拦截 — 监听
/aweme/v1/web/aweme/detail/响应,直接获取结构化数据(首选,信息最全) - 页面 JS 数据 — 读取
RENDER_DATA、__INITIAL_STATE__等全局变量 - 网络拦截 — 正则匹配通过 CDN 的视频文件 URL
- HTML 正则 — 从页面源码中匹配
playAddr字段
在 server.js 中可调整:
const PORT = 3000; // 服务端口
const USE_PLAYWRIGHT = ['douyin', 'tiktok']; // 使用 Playwright 的平台列表
// yt-dlp 检测优先级(按顺序尝试)
const candidates = [
{ cmd: 'yt-dlp', args: [] },
{ cmd: 'python3', args: ['-m', 'yt_dlp'] },
{ cmd: 'python', args: ['-m', 'yt_dlp'] },
];Q: 抖音下载报 "Fresh cookies are needed"?
这是 yt-dlp 的错误。抖音已由 Playwright 引擎接管,不会走 yt-dlp。如果你遇到此错误,说明请求错误地走到了 yt-dlp 路径。请确认 URL 中包含 douyin.com。
Q: Playwright 启动失败?
本工具配置为使用系统 Chrome(channel: 'chrome'),无需额外下载 Chromium。确保系统安装了 Chrome 浏览器即可。如需使用 Playwright 内置 Chromium:
npx playwright install chromiumQ: 下载速度慢?
下载速度取决于视频源 CDN 的带宽。工具本身采用直连流式传输,不做中转或限速。
Q: 支持 Docker 部署吗?
可以。需要注意 Docker 容器内需要安装 Chrome(用于 Playwright)和 yt-dlp。推荐使用带 GUI 的容器或配置 --no-sandbox。
MIT © 2025 sunqichaoPHP
如果这个项目对你有帮助,请给一个 ⭐ Star