抖音批量下载与去水印实用教程:三种方式保存整个主页,附增量与评论导出
【免费下载链接】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 是一个抖音批量下载工具,核心解决三件事:给链接就能存无水印视频、给主页就能整批保存作品、下载过的自动跳过不重复劳动。它支持视频、图文、合集、音乐、收藏夹这几类内容,也附带评论采集、热搜榜导出和 REST API 服务模式。下文按"先跑起来、再做任务、最后排障"的顺序讲。
能下载什么:六种内容类型一次列清
- 单个视频 / 图文:
/video/与/note/链接,自动选无水印源 - 单个合集、单个音乐:合集走
/collection/或/mix/,音乐优先取原声文件 - 作者主页批量下载:
/user/链接配合mode,可选 post(作品)、like(喜欢)、mix(合集)、music(音乐),同一作品跨模式自动去重 - 当前登录账号的收藏夹:
collect存收藏作品、collectmix存收藏合集 - 直播录制(实验性):
live.douyin.com房间链接,FLV 保存,中断也保留已录部分 - 数据导出:评论采集成 JSON、
--hot-board导热搜榜、--search按关键词导 JSONL
另外,桌面客户端 Douzy(内测中)基于同一套后端,粘贴链接即可开始,任务中心能看到每个任务的状态。
功能细节以仓库内的 中文文档 为准,下载主流程在 core/ 目录。
🚀 三命令装好环境
获取代码并装依赖
需要 Python 3.8+,三步装完:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt如果后面要用浏览器兜底(翻页被风控时弹真实浏览器),再补一条:pip install playwright并执行python -m playwright install chromium。
Cookie 自动获取,不用手工复制
cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml命令会打开浏览器,你登录抖音后回到终端按 Enter,Cookie 直接写进配置。工具在 tools/cookie_fetcher.py。
跑第一条下载命令
python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538"文件落在Downloaded/目录,按"作者/模式/作品"分层,文件名带作品发布日期前缀,根下还有一份download_manifest.jsonl清单。
🧩 三个高频任务的实操配置
整个主页全量保存:post 模式加增量开关
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 0 # 0 表示不限数量 increase: post: true # 已存在的跳过,下次只抓新作品number填具体数字就是限量,比如 50 条。多个作者可以一次写多个主页链接。
批量导出评论数据:每个作品一份 JSON
comments: enabled: true max_comments: 500 # 0 为不限,默认 20 条/页开启后,每个作品旁会生成{日期}_{标题}_{aweme_id}_comments.json。做话题研究时,可以配python run.py --search "关键词" --search-max 100按主题先捞一批数据。
自己的收藏夹整批保存:collect 模式
link: - https://www.douyin.com/user/self?showTab=favorite_collection mode: - collect number: collect: 0注意两个限制:collect/collectmix只认当前登录 Cookie 对应的账号,不能下别人的收藏夹;而且必须单独使用,不能和 post、like、mix、music 混在同一个 mode 里。
它如何防止重复下载和失败
去重是双重检查。database: true时,每次下载写一条记录进 SQLite 库dy_downloader.db;判断跳过时,程序同时查库和扫本地文件名(文件名里带 aweme_id),两边都说"有"才跳过。反过来,库里有记录但文件没了,就视为要重新下载。增量开关increase就是建立在这套机制上的。
容错分三层:下载失败按指数退避重试(1s、2s、5s,默认 3 次);下完用 Content-Length 校验完整性,不完整的文件自动清掉重下;下载走并发 worker 池(默认 5 线程),内置限流默认 2 请求/秒,压低触发风控的概率。相关实现在 control/ 与 storage/ 目录。
翻页被风控卡住时,browser_fallback会弹一个真实浏览器,你在窗口里手动过掉验证码,任务继续。目前这条兜底路径只在 post 模式完整验证过,like/mix/music 仍依赖接口分页。
🩹 排障:先查这三种症状
只抓到 20 条左右作品
- 症状:翻页中途停住,数量固定在 20 条附近
- 原因:接口翻页被风控限制
- 解决:确认
browser_fallback.enabled: true且headless: false,弹窗出现后手动完成验证,别急着关窗口
Cookie 失效后下载报错
- 症状:任务一开始就失败,日志提示认证问题
- 原因:Cookie 过期
- 解决:重跑
python -m tools.cookie_fetcher --config config.yml,建议定期重取
删了记录却没重新下载
- 症状:清了数据库,再跑还是跳过
- 原因:去重同时看本地文件名,只删库不够
- 解决:文件和库记录一起删,某个作品就删
Downloaded/作者名/post/*_aweme_id/目录加对应库记录
另外,没生成 transcript 转写文件时,按顺序查四件事:transcript.enabled是否为 true、下载的是否是视频(图文不转写)、OPENAI_API_KEY是否有效、response_formats是否含 txt 或 json。
适合谁,不适合谁
适合:要长期存无水印素材的个人用户、批量收集作品和评论数据的运营与研究者、想把下载能力通过--serve(默认端口 8000,需pip install fastapi uvicorn)接进自己流程的团队。
不适合:想下载别人收藏夹的用户——collect只认自己登录的账号;以及期望全程无人值守的场景——浏览器兜底需要人工过验证码,这是当前架构的硬限制。
其他已知边界:直播录制标记为实验性功能,HLS 源只保存 playlist 文件,要能播放需用 ffmpeg 后处理;increase增量只覆盖 post/like/mix/music,收藏夹模式不支持增量。完整参数查仓库里的 config.example.yml,部署可用仓库自带的 Dockerfile。项目为 MIT 协议,仅用于个人数据管理与技术研究,请遵守平台规则与版权要求。
【免费下载链接】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),仅供参考