douyin-video-downloadlisted
Install: claude install-skill 3378925604-a11y/douyin-video-distiller
# 抖音视频下载
解析抖音分享链接 → 下载无水印视频 / 图集。**唯一可行路径是下面的 CDP 登录态提取法**——抖音 2025 年中起对纯 HTTP 解析全面上反爬,任何"直接请求页面拿 `_ROUTER_DATA`"或"yt-dlp + cookie"的做法都会失败或拿到壳页,不要浪费时间尝试。
## 前置条件
- 用户电脑上 Edge 或 Chrome **网页版抖音(www.douyin.com)处于登录状态**
- 本机有 Python(含 `websockets` 库)、curl、ffmpeg(图集/Live Photo 不需要 ffmpeg)
- 需要关闭现有浏览器进程(会向用户说明后再执行);不绕过验证码、登录墙或风控,只使用用户自己的已登录会话
## 执行流程(CDP 登录态提取法,已验证)
1. **解析短链**:`https://v.douyin.com/xxx/` 用 **GET**(HEAD 会 404)跟随重定向,拿到 `www.douyin.com/video/<id>` 或图集地址。
2. **强杀浏览器进程**(Edge 为例:`Stop-Process -Name msedge -Force`),否则调试参数不生效。
3. **带调试端口重启并打开目标页**(端口避开常被屏蔽的 9222,用 9333;参数含空格时不要带 `--user-data-dir`):
```
msedge.exe --remote-debugging-port=9333 --remote-allow-origins=* "https://www.douyin.com/video/<id>"
```
⚠️ **Chromium/Edge 136+ 起禁止在默认 user-data-dir 上开调试端口**(参数会被静默忽略)。绕过法(2026-09-21 同学机 Edge 153 验证):`mklink /J C:\edgeprof "%LOCALAPPDATA%\Microsoft\Edge\User Data"` 建一个**无空格 junction** 指向真实 profile,再带 `--user-data-dir=C:\edgeprof` 启动即可保留登录态;**收尾必须 `rmdir C:\edgeprof` 只删联接**,原 profile 完好。
4. 等 14~20 秒,访问 `http://127.0.0.1:9333/json` 拿 page target 的 `webSocketDebuggerUrl`。
5. CDP `Runtime.evaluate` 执行 `document.querySelector('video').currentSrc` → 得到 `douyinvod.com` 真实流地址。
6. 若 `currentSrc` 是 `blob:`(MSE 分段流):改用 CDP **Network 域**监听收集 `douyinvod.com` 的 media 请求(视频、音频是分离的两条流),分别下载后 `ffmpeg -c copy` 合并。
7. 下载时带浏览器 UA + `Referer: https://www.douyin.com/`;下完用 ffprobe 核对分辨率/时长/编码。
8. **收尾**:关闭调试实例并正常重启浏览器;把保存路径告知用户;不输出、不留存签名直��和 Cookie。**用了 junction 的,收尾必须 `rmdir