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 编写的抖音批量下载工具,支持单条与作者主页级别的视频、图文图集、合集、音乐原声下载,自动挑选无水印视频源。核心前提是有效的抖音登录态(Cookie),并发下载、指数退避重试与 SQLite 去重默认开启,整体由 YAML 配置文件和命令行驱动。
🧭 能力边界:douyin-downloader 能做什么、不能做什么
支持的内容范围
- 单条链接六类:视频、图文(
/note/或/gallery/)、合集(/collection/或/mix/)、音乐、短链(v.douyin.com、v.iesdouyin.com)、直播间 - 作者主页四种模式:
post作品、like点赞、mix合集、music音乐原声,多模式可组合,跨模式自动去重 - 收藏夹两种模式:
collect收藏文件夹、collectmix收藏合集,仅对当前登录 Cookie 对应的账号生效 - 批量任务:增量下载、时间区间过滤、评论采集(含二级回复)、热搜榜与关键词搜索的 JSONL 导出
- 可选扩展:OpenAI 视频转写、直播录制、Bark/Telegram/Webhook 完成通知、REST API 服务模式
受限的内容
- 抖音边缘风控(ArgusSecurityPlugin)自 2026-08 起对点赞、收藏夹、合集列表接口的非浏览器请求返回 403,2026-09 起扩展到单个视频、主页作品、合集与音乐接口;这些 CLI 直连路径目前不可用,主页作品只剩浏览器兜底一条路
collect/collectmix必须单独使用,不能与其他模式混用;收藏夹场景不支持增量截断- 直播录制:FLV 源可直接播放,HLS 源只保存 playlist 文件,需要 ffmpeg 后处理;webcast 接口覆盖面不全,按实验性功能对待
依赖的前提条件
- Cookie 登录态:
ttwid、msToken、odin_tt等字段需要有效,获取流程见 tools/cookie_fetcher.py - 浏览器兜底需额外安装
playwright与 chromium - 可选依赖:
ffmpeg(音频提取、回放 remux)、OpenAI 密钥(转写)、fastapi/uvicorn(服务模式)
下图为同后端桌面版的单链接下载入口(内测中),CLI 在终端呈现等价的执行状态:
最小可运行路径:从 clone 到第一条下载命令
装依赖、配登录态、写一份最小配置,然后执行:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txtpip install playwright && python -m playwright install chromium cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml最后一条命令会打开浏览器,完成抖音登录后回到终端按回车,Cookie 自动写入配置。再改一下config.yml:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - post number: post: 0 thread: 5python run.py -c config.ymlnumber.post: 0表示不限数量。只想先跑几条验证,改成正整数即可;临时追加链接而不改配置,用-u参数。
⚙️ 核心配置逐项说明:link、mode、number 等 8 个关键参数
link:下载目标。/ 字符串数组,单条作品与主页链接可混用,接受短链 / 必填mode:主页链接的抓取范围。/post/like/mix/music可组合;收藏夹用collect或collectmix单独使用 / 默认[post]number:各模式数量上限。/ 键为模式名,0表示不限或正整数 / 默认全0thread:并发下载数。/ 正整数,过高容易触发平台限流 / 默认5video_quality:视频源画质。/original原画(每条作品多一次探测请求,失败退回最高转码档)、highest、lowest或1080p等分辨率 / 默认highestincrease:各模式增量开关。/ 布尔值,true跳过已下载作品,依赖database/ 默认全truedatabase:SQLite 去重与下载历史。/ 布尔值,文件位置由database_path指定,默认dy_downloader.db/ 默认truebrowser_fallback:翻页受限时启动浏览器兜底。/enabled默认true,headless默认false(有头模式,方便人工过验证码),max_scrolls默认240
一次完整下载的流程拆解:从链接到去重落盘
以主页post任务为例,整条链路分五个阶段:
- 输入:配置文件里的
link或命令行-u参数,短链先被重定向解析成完整链接 - 解析:core/url_parser.py 从 URL 提取
sec_uid/aweme_id/mix_id,输出结构化的链接类型 - 抓取与下载:core/user_modes/ 下每个模式对应一个策略,按游标翻页拉取作品列表,命中时间边界会提前停止;下载器为每条作品挑选无水印源、按
video_quality选档,再由thread个 worker 并发拉流,单请求限速 2 次/秒,失败按 1s/2s/5s 指数退避重试;API 翻页失败时,浏览器兜底读取页面自己发出的作品列表请求,可等待人工完成验证 - 落盘:文件按
filename_template命名,写入Downloaded/{作者}/{模式}/{date}_{title}_{id}/,按需附带封面、音乐与 JSON 元数据,另有全局download_manifest.jsonl索引 - 去重:storage/database.py 的
aweme表记录与本地文件名中的aweme_id双重判断,同一轮任务内跨模式共享seen集合;只删文件不删库记录、或只删库记录不删文件,行为并不对称,具体见下表
下图是同后端桌面版的任务中心,可查看每次批量任务的成功与失败明细:
🔍 常见卡点排查:Cookie 失效、翻页限制、重复下载
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 只抓到前 20 条作品就停止翻页 | API 翻页被风控拒绝 | 确认browser_fallback.enabled: true、headless: false,浏览器弹出后手动完成验证 |
接口返回 403Blocked by ArgusSecurityPlugin | 抖音边缘风控拦截非浏览器请求(点赞/收藏/合集/单条作品等) | 重新执行 cookie_fetcher 刷新 Cookie;此类内容目前需依赖同后端桌面版 |
| 想重下某个作品却被跳过 | 本地文件与数据库记录只删了其中一份 | Downloaded/{作者}/{模式}/*_{aweme_id}/目录与aweme表记录都要删除 |
| 增量模式仍重复下载旧作品 | database: false或未开增量 | 设置database: true,并确认对应模式increase: true |
| 下载速度慢、重试频繁 | 并发过高或 IP 被限流 | 调低thread,或配置proxy走代理 |
| 进度条被日志刷屏 | 静默日志未生效 | progress.quiet_logs: true(默认已开启,调试时再临时关闭) |
合规边界
- 下载内容限于个人学习、研究与本地归档,不做二次分发或商业用途
- 不用于批量采集特定账号的私密数据,不侵犯创作者版权
- 遵守抖音平台条款与所在司法辖区的法律法规,使用行为由使用者自行负责
- 平台接口与风控策略调整导致功能降级,属于正常技术风险
适合需要构建本地抖音内容库的开发者与内容管理者;完整配置项与默认值可参考仓库根目录的 config.example.yml。
【免费下载链接】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),仅供参考