抖音去水印批量下载完整实战: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 是一个开源的抖音下载器,主打去水印批量下载:覆盖单条视频、图文、作者主页、合集、音乐原声与直播间录制,内置并发调度、失败重试和 SQLite 去重,提供 Python 命令行版与 Douzy 桌面版两套入口。本文带你完成 Cookie 配置与首次运行,并讲清增量下载和容错细节。
为什么需要抖音批量下载工具
手动保存抖音内容的体验大家都懂:一条一条点开、复制链接、另存文件,下载结果散落在各个目录;同一批链接跑两遍,硬盘里就多出一堆重复文件。
把这件事交给脚本就顺了。你可以把目标链接写进配置文件,一次性拉取某个作者的全部作品;再配合增量机制,重复运行时已下载的内容会被跳过,实际只处理新出现的部分和磁盘上缺失的文件。项目提供两个入口:Python 命令行版负责脚本化与定时任务,Douzy 桌面版负责日常粘贴链接即用,两者共用同一套下载后端。
抖音批量下载首次运行:安装、Cookie 配置与第一条链接
环境要求Python 3.9+,Windows、macOS、Linux 均可。先把代码拉到本地并装好依赖:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader python -m pip install -r requirements.txt抖音接口需要登录态,Cookie 有三种给法,任选其一:
- 自动获取:运行 tools/cookie_fetcher.py 提供的脚本,工具会拉起浏览器引导登录,完成后回到终端按 Enter 自动保存;
- 整串粘贴:从浏览器复制完整 Cookie 字符串,直接填进配置;
- 键值对:只填
msToken、ttwid等必要字段,适合手动维护登录态。
自动获取最省心,完整流程如下:
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml在弹出的浏览器里登录抖音,回到终端按 Enter 保存。然后打开config.yml,把link换成目标链接、path指定保存目录:
link: - https://www.douyin.com/user/YOUR_SEC_UID path: ./Downloaded/最后执行启动命令,即可看到进度、线程数与成功/失败统计:
python run.py -c config.yml全部参数用python run.py --help查看,常用的是-t调并发、-v输出详细日志。
抖音去水印支持哪些下载对象
工具会先识别每条链接的类型,再走对应的下载逻辑:
| 下载对象 | 典型 URL | 行为说明 |
|---|---|---|
| 单条视频 | /video/{aweme_id} | 解析出无水印源文件直接下载;v.douyin.com短链会被自动识别 |
| 图文作品 | /note/{note_id} | 图集逐张保存,与视频共用同一套命名和去重规则 |
| 作者主页 | /user/{sec_uid} | 批量抓取作品,mode可限定 post(发布)、like(点赞)、mix(合集) |
| 主题合集 | /collection/{mix_id}、/mix/{mix_id} | 展开合集内全部作品逐条下载,可设数量上限 |
| 音乐原声 | /music/{music_id} | 提取作品引用的原声音乐文件 |
| 直播间 | live.douyin.com/{room_id} | 实时录制直播流,可设最大时长、分块大小、空闲超时 |
命令行版以抖音为主;Douzy 桌面版在同一后端上扩展了 TikTok、YouTube、Telegram、X 等平台,粘贴链接即可发起任务。
批量下载内部流程:筛选、并发与去重
一个批任务从配置到落盘,可以拆成三步看。
任务从哪来。工具按"命令行 > 环境变量 > 配置文件 > 默认值"的优先级合并配置,解析每条链接的类型后生成任务队列。主页类任务会先翻页收集作品 ID 列表,再用start_time/end_time时间区间和number数量上限做筛选,把清单收窄到真正要处理的作品。
并发怎么控。队列由thread控制的线程池消费,默认 5 个并发,配置中可上调到 8~10。每条作品走"请求接口 → 校验媒体信息 → 落盘"的路径,请求节奏受rate_limit约束,避免动作太激进触发风控。
结果落到哪。媒体文件按"作者/模式/日期_标题_ID"结构写入path目录,同时向download_manifest.jsonl追加一条 JSON 记录;开启database: true时,作品明细还会写进 SQLite 库dy_downloader.db的aweme表,方便回溯查询。
🔸去重是这套流程的亮点:每条作品先查 SQLite 里的下载记录,再核对磁盘上对应的主媒体文件是否存在且非空。两项都命中就直接跳过——所以重复跑同一批链接时,已下载的内容会被跳过,只处理新出现的部分。想强制重下,把对应模式的increase改成false就行,数据库不用动。
容错机制与抖音接口风控应对
| 场景 | 系统的处理方式 |
|---|---|
| 接口被风控或返回异常 | browser_fallback.enabled: true时自动切到 Playwright 浏览器模式继续采集,两套引擎互为备份 |
| 网络抖动、单次请求失败 | 指数退避重试,等待 1 秒 → 2 秒 → 5 秒,默认最多 3 次(retry_times: 3) |
| 某条作品持续失败 | 标记失败后跳过,队列继续消费后续任务,批次结束统一输出失败汇总 |
| 视频被删除或设为私密 | 判定源不可用,自动跳过,不阻塞整批任务 |
| 分页获取受限 | 先用浏览器兜底采集作品 ID,再回接口补全详情,尽力补齐清单 |
⚠️ 有一点要说实话:抖音近期风控明显收紧,CLI 里单视频、合集、音乐等接口都可能受限,主页作品可以靠浏览器兜底尝试但不保证成功;直播录制也属于实验功能。日常使用建议优先 Douzy 桌面版,或保持headless: false在浏览器里手动完成验证。
抖音去水印下载常用配置项速查
| 配置项 | 作用 | 默认值 / 示例 |
|---|---|---|
thread | 并发下载线程数 | 5,可上调至8~10 |
proxy | 下载与接口请求统一走代理,网络受限时使用 | http://127.0.0.1:7890 |
filename_template/folder_template | 文件与目录命名模板,支持id、title、author、date、year、mode等变量;保留{id}可防重名覆盖 | {date}_{title}_{id} |
start_time/end_time | 按发布时间过滤,YYYY-MM-DD格式,含结束日当天 | 2026-01-01/2026-06-30 |
video_quality | 画质档位,original探测上传原片失败时自动回退 | highest |
cover/music/json/avatar | 封面、配乐、元数据 JSON、头像等附带产物开关 | 默认全关,如cover: true |
increase+redownload_missing_files | 增量下载总开关;文件缺失时是否补下 | increase.post: true |
database | 是否写入 SQLite 下载历史库 | true |
live | 直播录制参数:max_duration_seconds为 0 表示录到主播下播,idle_timeout_seconds为空闲超时 | max_duration_seconds: 0 |
notifications | 完成通知,支持 Bark、Telegram、Webhook 三类 provider | enabled: true |
完整字段与默认值都在 config/default_config.py,命名变量的渲染和清理逻辑见 utils/naming.py。
Douzy 桌面版:日常管理入口与定时增量
Douzy 面向日常使用:左侧边栏管理账号、关注与订阅,任务中心跟踪每条批量任务的状态,作品档案支持本地检索。粘贴链接、勾选内容类型、提交任务,一次抖音合集抓取就开始了,全程不用碰配置文件。
同一账号的数据可在各平台之间迁移。命令行版则更适合脚本化场景:配合 cron 等定时任务按周拉取指定作者的新增作品,实现"只补新"的增量素材库;它还提供可选的 REST API 服务模式(python run.py --serve),可以把下载能力挂进自己的系统里调用。
长耗时任务的完成通知由notifications配置驱动:任务一结束就推送到手机,夜间挂机跑批不用守着终端。更多实现细节可参考 PROJECT_SUMMARY.md。
抖音下载常见问题排查
Cookie 突然失效,怎么续?登录态会过期,重新跑一次 Cookie 获取脚本覆盖保存即可,或手动更新配置里的 Cookie 字段。注意:换 Cookie 解决不了接口风控本身的限制。
速度上不去,先查哪里?第一站是thread:默认 5,提到 8~10 再看吞吐有没有起色。接着确认网络环境,必要时配上proxy走代理;仍不放心就用-v看详细日志,定位是卡在接口还是传输阶段。
个别视频反复失败?多半是作者把源视频删了或设为私密,属于源头不可用,工具会自动跳过并继续后续任务,不影响整批结果。
文件名互相覆盖了?检查filename_template里有没有{id}——唯一性靠它兜底。缺失的变量值会渲染成空串,模板写太短也容易撞名。
跑第二遍会不会重复下载?确认database: true且各模式increase为true,SQLite 记录加磁盘文件校验会让二次运行只处理新出现的作品。
适合谁用,以及合规边界
这套工具适合三类人:需要周期性收集作者内容的素材整理者(定时任务 + 增量下载)、做竞品监控的运营人员(按主页批量抓取 + 元数据 JSON 归档)、想免配置直接用的普通用户(Douzy 桌面版)。
不适合的场景也要说清:以破解付费内容为目的的用法,或要求 100% 稳定绕过平台风控的用法——接口策略一变,可用性随时受影响,README 里已明确列出当前限制。请尊重原创者的版权与劳动成果,遵守平台规则与隐私要求,把它用在合法合规的个人数据管理场景,使用责任自负。
结语:跑通你的第一个批量任务
环境装好、Cookie 存下、第一条链接填好,剩下的交给进度条。先跑一条,跑顺了再谈自动化。
【免费下载链接】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),仅供参考