3条命令跑通抖音主页无水印批量下载|douyin-downloader 上手指南
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
douyin-downloader 是一个 Python 命令行工具,做抖音无水印批量下载:粘贴作品链接或博主主页,它自动选无水印最高码率源、并发下载、按目录结构整理文件并保存完整元数据。读完这篇指南,你能用 3 条命令完成安装并下出第一个视频,再配一条增量更新的主页批量工作流。
它是什么,给谁用
技术栈是纯 Python 3.8+,异步 I/O 基于 aiohttp + aiosqlite,YAML 配置驱动,限速、重试、去重全部内置。同一套后端还长出了一个叫 Douzy 的桌面版(内测中),贴链接点按钮就能下载。
典型使用者:
- 内容创作者:把竞品主页的作品批量拉下来做拆解,替代逐条手动保存
- 研究者:按时间窗抓作品,元数据随文件落盘,直接进分析流水线
- 运营人员:给账号素材库每天自动补新,不重复下载旧内容
- 工具开发者:用
--serve跑成 REST 服务,把下载能力嵌进自己的系统
不想碰命令行时,桌面版也可以直接贴链接开始:
核心能力一览
| 能力 | 一句话说明 | 触发方式 |
|---|---|---|
| 无水印最高画质 | 自动选无水印源,从 bit_rate 档位里取最高码率 | 内置,无需配置 |
| 多模式批量 | post / like / mix / music 四种模式,0 表示全量 | 配置mode |
| 短链解析 | v.douyin.com短链、裸域名都能识别 | 链接直接贴进link |
| SQLite 历史去重 | 每个作品记元数据,数据库 + 本地文件双重判断跳过 | database: true |
| 浏览器兜底 | API 翻页被风控时切浏览器滚动,支持手动过验证 | browser_fallback.enabled: true |
| 评论采集 | 按作品存一级评论(可含二级回复)为 json | comments.enabled: true |
一个 YAML 管完所有行为。
3分钟跑通
先拉代码装依赖,需要 Python 3.8+:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt这一步拉代码、装依赖。
再复制 配置模板 为 config.yml,然后跑一次浏览器登录自动抓 cookie:
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml这一步备配置、抓 cookie。
登录完成后回终端按回车,cookie 抓取脚本 会把 ttwid、msToken 等字段直接写回配置文件。接着在 config.yml 里只保留这几个关键字段:
link: - https://www.douyin.com/video/7604129988555574538 path: ./Downloaded/ thread: 5 retry_times: 3这一步填一条链接、几个字段。
最后跑一条命令:
python run.py -c config.yml这一步开始下载。
一个完整工作流
只选一个最典型的场景:把某个博主主页的全部作品批量下完。
步骤 1,粘贴主页链接,mode选post,number.post: 0表示全量抓取:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: [post] number: post: 0步骤 2,首次运行python run.py -c config.yml,5 线程并发,进度条实时显示成功/失败计数。
python run.py -c config.yml步骤 3,运行中每个作品写入 SQLite 历史库 留档;单条失败会按 1s、2s、5s 指数退避重试 3 次,仍失败就跳过继续后面的。
步骤 4,第二天原样再跑一次命令即可,磁盘上已有的作品自动跳过,只补新增的 post。
跑完你手里有什么:
Downloaded/ └── 某博主/ └── post/ └── 2026-02-07_标题_aweme_id/ ├── 同名.mp4 (无水印正片) ├── 同名_cover.jpg (封面) ├── 同名_music.mp3 (原声音乐) ├── 同名_data.json (完整元数据) └── 同名_avatar.jpg (作者头像)Downloaded/ 根目录还会多一个download_manifest.jsonl,按行记录本次所有作品的字段,方便接脚本做二次处理。同一批任务在桌面版任务中心里也是可视化的,成功失败、重试按钮一目了然:
进阶玩法
当你需要每天只抓博主的新作品、不重下旧内容时,把跳过判断显式切到磁盘存在性:
increase: post: true # 磁盘已有主媒体文件就跳过 thread: 8设为true只看文件在不在;设false则重新下载并原子替换当前范围内的文件。
当你想录一场正在进行的直播、下播也不丢已录内容时,把直播链接交给录制器:
link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 0 = 录到主播下播产出 FLV 文件和房间快照 json;主播下播、网络空闲超时或你 Ctrl+C,已录的部分都会保留成正式文件。
避坑指南
三个高频坑,提前说 ⚠️:
现象:主页下载卡在 20 条左右,翻页再也没数据。原因:翻页触发平台风控,API 不再返回新页。解法:配browser_fallback.enabled: true和headless: false,弹窗里手动完成验证,别急着关窗口。
现象:所有任务直接报错或跳登录页,进度条不动。原因:cookie 里的 ttwid、msToken 过期了。解法:python -m tools.cookie_fetcher --config config.yml重新登录一次,cookie 会自动写回配置。
现象:删了 dy_downloader.db 数据库,重跑却什么都不下。原因:程序先扫本地文件名判断已有作品,只删数据库仍算已下载。解法:把对应媒体文件一起删掉;单条重下时再顺手清掉它的数据库记录。
使用边界
- 能做:单作品、图文、合集、音乐、主页四模式批量、直播录制、评论采集,优先选无水印源。
- 不能做:collect / collectmix 只能抓当前 cookie 对应账号自己的收藏,私密作品下不了。
- 内置保护:默认 2 req/s 限速、指数退避重试、下载做 Content-Length 完整性校验,失败自动清理残文件。
项目在 gitcode 上,克隆地址就是上文第一条命令里那个;出 bug 提建议直接去仓库 Issue 区留言。下一步建议:先用number.post: 5挑一个主页试跑,打开产出的_data.json看看元数据里有什么,再决定要不要把量拉满 📦
【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考