抖音无水印视频怎么批量下载?10 分钟存下整个主页作品完整指南
【免费下载链接】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是一个开源的抖音批量下载工具,属于抖音主页视频下载工具里少见的命令行方案:把博主主页链接贴进配置,无水印视频、图集、封面、原声自动落盘归档,抖音无水印视频怎么下这个问题一次解决。全文以命令行版为主线,从装环境到挂每日增量任务走一遍,顺利的话 10 分钟内你能拿到第一个无水印文件。
两条路线:先想清楚你走哪边
动手之前先分清两条路,避免装完工具发现用错场景:
- Douzy 桌面版:日常使用推荐。粘贴链接下载、查看任务进度、管理本地作品档案,覆盖抖音、TikTok、YouTube、Telegram、X 五个平台,从项目 Releases 页下载 Windows / macOS 版即可。
- 命令行版:只支持抖音,面向脚本集成和自动化场景,也就是本文主角。
有一个必须提前说清的预期问题:2026-08 起抖音接口风控收紧。目前单个视频/图文、合集、音乐、喜欢和收藏接口在 CLI 中被拦截;主页作品仍可走 Playwright 浏览器兜底(不保证成功);直播录制属于实验功能,HLS 源只保存播放列表而非可直接播放的视频。所以合理预期是:主页批量走 CLI + 浏览器兜底,其余类型以桌面版为准。更新 Cookie 或反复重试解决不了这类风控,这是平台策略,不是你的配置问题。
链接形态方面两条路线都很宽容:主页、单个视频、图文、合集、音乐、直播间链接都能贴,连v.douyin.com短链也行,工具会自动识别类型。
首跑四步:拿到第一个无水印文件
环境是 Linux / macOS 的通用流程(Windows 下复制文件的命令换Copy-Item即可)。四步走,每步都有明确的成功标志。
第一步:装依赖,Python 3.9 是门槛
核心依赖都是 requests 级别的小库(aiohttp、httpx、rich、pyyaml 等),浏览器兜底要额外装一个 Playwright:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader python -m pip install -r requirements.txt python -m pip install playwright python -m playwright install chromium看到Successfully installed即完成。playwright install chromium会下载浏览器内核,第一次跑稍慢属正常。
第二步:浏览器扫码,把 Cookie 存下来
先复制一份 config.example.yml 作为自己的配置,再启动取 Cookie 的脚本 tools/cookie_fetcher.py:
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml命令会拉起一个浏览器窗口,在里面扫码登录抖音,回到终端按 Enter 保存。判定的成功信号有三条:终端打印Saved N cookie(s) to .../config/cookies.json、Updated config file,并且config.yml的cookies字段已被自动填好。Cookie 是一次性产物,登录态会过期,失效时重跑这条命令即可。
第三步:写一份最小配置
打开config.yml,把示例link换成目标博主主页,首次试用把数量压到 1 条:
link: - https://www.douyin.com/user/MS4wLjABxxxx number: post: 1其余字段先不动,默认值已经能跑通。
第四步:运行并核对结果
python run.py -c config.yml终端会先打出Douyin Downloader v2.0.0横幅,接着是Database initialized(SQLite 历史库初始化)、Found 1 URL(s) to process,然后进度条走起。
成功标志:结尾输出
Download Summary汇总表,Total 1 / Success 1;Downloaded/下多出一个作者文件夹,post/子目录里躺着2024-xx-xx_标题_作品ID.mp4这样的无水印文件。
配置速查:12 个开关怎么调
跑通之后再回来调参。下表按"抓什么"和"存什么"两组拆开,比逐字段翻配置直观得多。
抓什么:范围、数量、并发
| 配置项 | 默认值 | 改了会怎样 |
|---|---|---|
link | 示例链接 | 待处理链接列表,主页、单作品、直播都放这里 |
mode | post | 主页抓取模式,post起步,可叠加like/mix |
number | 各项0 | 各模式数量上限,0= 不限;先试 10 再放开 |
start_time/end_time | 空字符串 | YYYY-MM-DD发布时间过滤,留空不过滤,含结束日当天 |
thread | 5 | 并发线程数,网络好可上 8,别一上来就拉满 |
retry_times | 3 | 单条失败自动重试次数 |
存什么:文件、目录、增量
| 配置项 | 默认值 | 改了会怎样 |
|---|---|---|
video/music/cover/avatar/json | 仅video: true | 封面、原声、头像、元数据默认全关,按需打开 |
path | ./Downloaded/ | 落盘根目录 |
video_quality | highest | 下载画质档位,详见下文 |
increase | 各模式true | 增量开关,跳过已下作品,长期跑保持true |
redownload_missing_files | true | 文件缺失或为空时补下 |
browser_fallback | enabled: true、headless: false | 主页翻页受限时浏览器兜底 |
database/database_path | true/dy_downloader.db | SQLite 下载历史库 |
video_quality最容易被忽略,也最影响存储空间和画质,单独说清三档行为:
highest(默认):只在转码档里挑最高的一档,不发额外请求,最稳;original:额外去探测上传原片,可比最高转码档大数倍,代价是每条作品多一次探测请求(超时 10s),探测失败自动退回最高转码档;- 直接写
1080p、720p这类分辨率:匹配不到时自动降级到最接近的可用档,适合精确控流量。
批量保存抖音作品:三个高频玩法
基础流程跑通后,下面三个配置组合覆盖了绝大多数"抖音作品批量保存"需求。
玩法一:打包某博主全部作品
主页链接丢进配置,模式只收发布页;想连喜欢页一起收就加一行like:
link: - https://www.douyin.com/user/MS4wLjABxxxx mode: - post number: post: 10跑完看Download Summary里的 Success 数。若部分条目被风控拦下,汇总表下方会列出跳过/失败原因——保持browser_fallback.enabled: true、headless: false,在浏览器里自己过一遍验证就行。确认节奏没问题后,再把number.post改成0放开全量。
玩法二:只切一个时间窗口
博主发了 800 条,你只关心最近半年的 60 条,全量下等于白烧半个硬盘:
start_time: "2025-01-01" # 只抓该日及之后发布的 end_time: "" # 填上 YYYY-MM-DD 就是限定区间,含当天结果就是该区间内发布的所有作品,number仍可叠加数量上限。
玩法三:每天只拿新作品
存量收完接着管增量。打开增量开关:
increase: post: true redownload_missing_files: true重跑时终端 Skipped 计数会涨,落盘的只有真正的新内容,挂成每日定时任务也稳。哪天要整体重下,把increase.post改回false即可,不用清数据库。
文件归档:目录、命名与两份记录
所有文件默认按"作者 → 模式 → 作品"三级归档(folderstyle: true):
Downloaded/ ├── download_manifest.jsonl # 每次下载追加一行 JSON 清单 └── 作者昵称/ # author_dir 可选 nickname / sec_uid / nickname_uid └── post/ └── 2024-02-07_作品标题_aweme_id/ ├── 2024-02-07_作品标题_aweme_id.mp4 # 无水印视频(video: true) ├── 2024-02-07_作品标题_aweme_id_cover.jpg # 封面(cover: true 才有) ├── 2024-02-07_作品标题_aweme_id_music.mp3 # 原声(music: true 才有) ├── 2024-02-07_作品标题_aweme_id_avatar.jpg # 头像(avatar: true 才有) └── 2024-02-07_作品标题_aweme_id_data.json # 元数据(json: true 才有)命名规则值得知道,免得以为文件"丢了"或"重名了":
- 文件与目录名默认走
{date}_{title}_{id}模板(filename_template/folder_template可改); - 日期取作品发布时间而非下载时间,缺失时回退当天;
- 非法字符自动替换;渲染超过 80 字符时先压缩标题;
- 模板必须至少引用一个变量(建议含
{id}),防止重名互相覆盖。
除了文件本身,还有两份记录可供查询追溯:dy_downloader.db是 SQLite 下载历史库,download_manifest.jsonl每次下载追加一行 JSON 清单。
排错 FAQ:五种常见失败怎么办
问:大面积请求失败,或提示登录态失效?Cookie 过期了。重跑python -m tools.cookie_fetcher --config config.yml扫码接着跑。经验:失败集中爆发时,先怀疑登录态。
问:主页只拿到少量作品?触发风控、翻页受限。保持browser_fallback.enabled: true、headless: false,在浏览器里自己过验证;同时别拉满thread,从 5 起步。
问:单个视频/合集/音乐链接下不了?2026-08 起接口收紧,CLI 在这些类型上被挡。该类型改用 Douzy 桌面版;批量主页仍走 CLI + 浏览器兜底。
问:文件夹里只有视频,缺封面、原声?对应开关还是false。把music/cover/avatar改成true后重跑;首跑前先确认这几个开关,省得回头补。
问:批量跑得太慢?并发保守或网络慢。thread调到 8 重跑;失败变多就退回上一档。
投产前:6 项自查清单
- 依赖装完,含
playwright install chromium这一步 - 浏览器扫码登录过一次,Cookie 已存进
config/cookies.json - 小批量试跑通过:
number.post: 1,Download Summary显示Success 1 - 数量先放开到 10 验证节奏,确认无误再改
0不限 - 按需打开
music/cover/avatar/json四个附带开关 - 挂上
increase增量开关,配成每日定时任务
最后把长期风险说透:登录态会过期,Cookie 失效重跑一遍 cookie_fetcher 即可;平台接口也在持续变化,某些类型暂时下不动属于正常现象,回头看桌面版兜底就行。
免责声明:本文仅用于技术学习与个人数据管理,请遵守平台规则,尊重内容版权与创作者权益。
【免费下载链接】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),仅供参考