抖音无水印下载快速上手: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 开源工具,MIT 协议,覆盖单条链接无水印保存与主页批量下载两条路径,还内置并发、重试、SQLite 去重和浏览器兜底。
项目速览:抖音无水印下载能做什么
douyin-downloader 是一个命令行下载工具,Windows、macOS、Linux 都能跑。你负责贴链接,它负责把无水印文件落盘,并在受阻时尝试兜底。核心能力:
- 单条下载:视频、图文、合集、音乐,
v.douyin.com短链自动解析 - 主页批量:
mode指定范围,作品、点赞、合集、音乐可组合,同一作品跨模式去重 - 按需附加:封面、原声、头像、JSON 元数据、评论落盘、热搜与关键词搜索导出
- 直播录制:房间链接可录制直播,主播下播后已录字节保留
图为桌面版 Douzy 的抖音下载界面,与 CLI 共用同一套后端逻辑。
🚀 快速跑通:从克隆到第一个无水印文件
第一次使用按顺序执行五步,即可拿到第一个无水印文件:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml其中 Cookie 步骤会打开浏览器,扫码登录抖音后回到终端按 Enter,凭证自动写回config.yml,不用翻开发者工具。浏览器兜底与自动取 Cookie 依赖 Playwright,按需补装:pip install playwright后再python -m playwright install chromium。
接着把link填上目标链接即可启动:
python run.py -c config.yml终端用 Rich 进度条展示每个文件的下载状态,产出落在Downloaded/,按"作者名 → 模式 → 日期_标题_id"归档,同时维护dy_downloader.db做去重与历史。想跳过配置文件临时跑一条,也可以直接python run.py -u "链接" -t 8 -p ./Downloaded。
按场景使用
单条视频与图文无水印保存
视频(/video/{aweme_id})、图文(/note/、/gallery/)、合集、音乐链接直接填进link即可。默认只开video: true拿到干净的视频本体;需要封面、原声、元数据时再分别打开cover、music、json开关。
批量下载主页视频怎么设范围:mode 与 number
/user/{sec_uid}链接配合mode使用,number按模式独立限额,increase控制是否只补新作品:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 10 increase: post: truepost是作品、like是点赞、mix是合集、music是用过的音乐,限额0表示不限。注意collect/collectmix(当前登录账号的收藏夹与收藏合集)只能单独使用,不能与post混写,且只对 Cookie 对应的账号生效。
画质选 original 还是 highest
video_quality默认highest,在码率阶梯里挑最高转码档;想拿无水印高清原片就设original,它会多发一次探测请求找上传原片,探测失败自动退回最高转码档。也可以写死1080p、720p等档位。配合start_time/end_time(YYYY-MM-DD)还能只取某个时间段内的作品。
直播间录制
link填live.douyin.com房间链接即可录制直播,支持 FLV/HLS 源;live.max_duration_seconds设0表示录到主播下播。该功能属实验性质,HLS 源保存的是播放列表而非可直接播放的视频,心里有数再开。
⚙️ 配置项深拆:线程、重试、代理、去重与推送
线程数怎么设?thread默认 5,网络一般就保持默认,命令行-t可临时覆盖。
失败了会怎样?retry_times默认 3 次,按 1s/2s/5s 间隔重试,实现见 control/retry_handler.py。
代理填哪里?proxy同时作用于 API 请求与媒体下载,一个值两处生效。
去重靠什么?database: true开启 SQLite 去重与历史,增量下载依赖它;想重新下载某条作品,本地文件目录和数据库记录要一起删。
要完成推送吗?配notifications.providers即可接 Bark、Telegram、Webhook,单个通道失败不阻塞主流程。另外内置全局限速默认 2 请求/秒并带随机抖动(见 control/rate_limiter.py),这是防风控的刻意设计,不建议调高。
🛡️ 风控与限制现状:CLI 直连哪些场景受限
2026 年起抖音边缘的 Argus 风控对非浏览器请求返回 403,CLI 直连已分阶段受限,如实列出:
- 2026-08:点赞、收藏夹、收藏合集不可直连获取
- 2026-09-10:合集列表被拒
- 2026-09-14:单视频、图文、合集、音乐详情接口被拒
- 主页作品翻页:同样被拒
浏览器兜底走 Playwright,目前只对post模式完整验证,且未针对该门禁实测,成功不保证。刷新 Cookie 或反复重试无法绕过这类风控。桌面版 Douzy(同一套后端,内测中)通过内置登录窗口代发请求,可绕开该问题。
❓ 常见问题
Q:主页批量只抓到 20 条就停了?翻页风控的典型信号。确认browser_fallback.enabled: true且headless: false,浏览器弹窗出现后手动完成验证再关闭;当前风控仍可能阻止下载。
Q:大量 403 或跳转登录页?Cookie 失效。重新执行python -m tools.cookie_fetcher --config config.yml扫码即可,无需改动其他配置。
Q:删了文件却不会重新下载?去重是"数据库 + 本地文件"双检查:只删文件会被库记录拦下,只删库会被文件检查拦下。需同时删目录并执行DELETE FROM aweme WHERE aweme_id = '...'。
Q:下载速度慢?先怀疑限速与网络:内置 2 请求/秒的全局限速调高线程也不会突破,保持默认线程,换稳定网络再观察。
Q:没生成 transcript 文件?按顺序查transcript.enabled是否为true、对象是否为视频(图文不转写)、OPENAI_API_KEY是否有效。
本项目仅面向个人学习、研究等合理使用场景,请尊重原创版权与平台规则,勿用于商用或侵犯他人权益。建议先通读一遍 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),仅供参考