douyin-downloader 抖音批量下载完全指南:去水印、批量抓取与快速上手
2026/9/15 13:51:14 网站建设 项目流程

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 编写的抖音内容抓取工具,覆盖"单条下载"到"整站批量"的完整链路:

能力说明适合谁
单条视频/图文/合集/音乐下载粘贴/video/note/collection/music链接偶尔存一两条的个人用户
作者主页批量下载支持post/like/mix/music多种模式想完整备份某博主的人
无水印优先 + 最高清挑选自动选无水印源,按码率选最高档对画质有要求的人
评论采集按作品抓取评论(可含二级回复)做数据分析/舆情的人
热搜榜 + 关键词搜索--hot-board/--search导出 JSONL做内容选题的人
直播录制live.douyin.com房间流需要留存的直播
SQLite 去重 + 增量下载数据库 + 本地文件双重去重长期跑批量任务的人
REST API 服务模式以 HTTP 接口提交下载任务想集成到自己系统里的人

它也有明确的边界(后面"避坑"和"边界与规范"会讲),比如收藏夹模式只支持当前登录账号、部分模式主要靠 API 分页。

一句话概括:单条下载它够用,批量备份它更省心。下面从最省事的方式讲起。

快速上手:从安装到第一次下载

环境要求是 Python 3.8+,macOS / Linux / Windows 都支持。整个过程分四步。

第 1 步:拿到代码

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader

预期结果:当前目录下出现run.pyconfig.example.yml等文件。

第 2 步:装依赖

pip install -r requirements.txt

如果需要"浏览器兜底"(后面讲的风控救场)或自动抓 Cookie,再补装一次:

pip install playwright python -m playwright install chromium

预期结果:依赖安装完成,无红色报错。

第 3 步:建配置

cp config.example.yml config.yml

打开config.yml,至少改两处:把link换成你要下载的链接,确认path是你想存放的目录。

第 4 步:配 Cookie(可选但推荐)

python -m tools.cookie_fetcher --config config.yml

会弹出浏览器,登录抖音后回到终端按 Enter,Cookie 自动写回配置。公开的单条视频其实不强依赖 Cookie,但批量抓主页时配上更稳。

第 5 步:跑起来

python run.py -c config.yml

预期结果:终端出现进度条,path目录下生成作者名/post/日期_标题_作品ID/结构,里面是无水印视频和可选的封面、音乐、JSON。

跑通第一条后,就可以放心往link里塞整批链接了。

配套桌面版(Douzy)把同一套后端做成了图形界面:粘贴抖音链接即可识别并下载,右侧任务中心可跟踪进度。

关键机制拆解:它凭什么稳定

工具好不好用,往往看它怎么处理"平台反爬"和"重复劳动"这两件事。这里挑三处最能体现工程含量的地方。

1. 翻页被风控时,浏览器兜底接住

问题:抖音对连续翻页有风控,批量抓主页时经常出现"只能抓到前 20 条就停了"的现象。

方案:项目内置浏览器兜底(core/ 之外的 browser_fallback 配置)。当 API 翻页受限时,启动一个真实浏览器(Playwright)模拟人工滚动翻页,遇到验证码会暂停等你手动过,过完继续。

browser_fallback: enabled: true headless: false # 有头模式,便于手动过验证 max_scrolls: 240 wait_timeout_seconds: 600

效果:原本卡在 20 条的任务能继续往下抓。注意兜底目前主要对post模式完整验证,like/mix/music仍以 API 分页为主。

2. 数据库 + 文件双重去重,跑一次不多下一遍

问题:批量任务重跑、网络中断续跑时,最怕把已下载的内容再拉一遍,白耗带宽还覆盖文件。

方案:项目用 SQLite 记录下载历史,同时扫描本地文件名里的aweme_id,两个来源交叉判断"是否已下载"。跨模式还会去重——同一个作品在postlike里都不会重复落盘。

效果:重复运行同一配置,已存在的作品会被跳过;increase增量开关还能只抓"新作品",适合定时任务。

3. 限速 + 指数退避重试,把请求节奏压下来

问题:并发太高或失败后疯狂重试,都会加剧触发风控。

方案:并发、限速、重试三件套都在 control/ 下集中管理——默认并发 5、限速约 2 请求/秒、失败按指数退避重试(约 1s/2s/5s)。

control/ ├── rate_limiter.py # 令牌桶限速 ├── retry_handler.py # 指数退避重试 └── queue_manager.py # 并发 worker 池

效果:请求节奏可控,偶发网络抖动会被重试兜住,而不是直接失败或触发封禁。

这三处合起来解释了它为什么能"跑得完、跑得稳"。接下来按人群看具体怎么用。

场景化玩法:按你的需求选配置

场景 A:只存一两条视频(个人)

config.yml里只放一条链接即可:

link: - https://www.douyin.com/video/7604129988555574538 video: true

跑完得到无水印视频。需要原声或封面时,把music: truecover: true打开。

场景 B:完整备份某博主主页(重度用户)

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 0 # 0 = 不限量

博主改名、重名会让nickname目录分裂或合并,重度用户建议把author_dir设成nickname_uid,用"昵称_sec_uid"保证目录唯一。

场景 C:多模式一次抓全

mode: - post - like - mix - music

跨模式自动去重,同一作品只落盘一次。

场景 D:做数据采集 / 内容选题(团队)

  • 评论采集:comments.enabled: true,每个作品旁生成*_comments.json,可含二级回复。
  • 热搜快照:python run.py --hot-board 30,导出hot_board/*.jsonl
  • 关键词搜索:python run.py --search "关键词" --search-max 100,导出search/*.jsonl
  • 服务化:python run.py --serve --serve-port 8000,通过POST /api/v1/download提交任务、GET /api/v1/jobs/{id}查进度,方便接入自有系统。

桌面版任务中心:按"进行中/已完成/失败"分组显示批量任务,失败项可一键重试,适合团队批量场景。

桌面版"关注"管理:同步关注的博主,筛选新作品、加备注,直接批量下载。

玩法选好后,剩下就是"出问题了怎么办"。下面把常见报错一次性讲清。

避坑与调优:现象 → 原因 → 解法

现象常见原因解法
主页只抓到 20 条就停翻页风控确认browser_fallback.enabled: trueheadless: false;弹窗出现后手动过验证,别急着关
下载失败 / 报登录相关错误Cookie 失效重跑python -m tools.cookie_fetcher --config config.yml
终端日志刷屏、进度条卡住日志未静默保持progress.quiet_logs: true;调试时临时加-v--show-warnings
想重下却跳过去重命中需同时删本地文件和数据库记录,只删其一通常不触发重下
文件太大 / 流量浪费默认下最高转码档video_quality调成720plowest;要原画则设original(每条多一次探测请求)

调优建议:并发thread默认 5,网络好可上调,但别无限加——限速和重试就是为了稳,堆并发反而更容易触发风控。想留原片用video_quality: original,代价是每条作品多一次探测(约 10s 超时)。

边界与规范:用之前要知道的事

  • 频率:内置限速与重试是"自我保护",不是让你无限制狂抓。批量任务建议分批、错峰,避免长时间高并发。
  • 版权与隐私:内容仅用于个人学习、研究与数据管理;不用于侵犯他人隐私、版权或其他合法权益,使用者自行承担相应风险。
  • 技术风险:平台接口或规则变化可能导致功能暂时失效,这属于正常技术风险,工具已尽量用重试和兜底去对冲,但无法保证 100% 可用。
  • 收藏夹模式collect/collectmix仅支持当前登录 Cookie 对应账号,且必须单独使用,不能和post/like/mix/music混用。

收尾:它值不值得用

如果你只是偶尔存一两条,它够简单;如果你想整批备份博主主页、抓评论、跑热搜搜索,它把"去水印、去重、限速、兜底、目录整理"这些脏活都替你做了——省的是重复劳动,而不是玄学。

给想上手的人下一步:先按"快速上手"跑通第一条视频,确认Downloaded/目录结构符合预期,再逐步打开modecomments--serve等进阶能力。

参考资料

  • 官方中文文档:README.zh-CN.md
  • 架构总结:PROJECT_SUMMARY.md
  • 配置模板:config.example.yml
  • 用户模式策略(策略模式实现):core/user_modes/
  • 限速 / 重试 / 并发控制:control/
  • 入口脚本:run.py

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询