☰
抖音无水印下载:douyin-downloader 单条到批量完整实操手册
2026/9/30 7:10:24 网站建设 项目流程

抖音无水印下载: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

从场景说起:把一个博主的作品存成本地 MP4

你想把某个博主最近的 50 条作品全部存成本地 MP4,每条都手动点"保存视频"不现实,水印要去掉,重跑时还要自动跳过已经下过的。douyin-downloader 就是干这件事的 Python 工具(MIT 协议):粘贴一条链接,拿到无水印 MP4;支持视频、图文、合集、音乐,既能单条下载,也能批量下载抖音主页视频,内置并发控制、失败重试、SQLite 去重和浏览器兜底。

⚠️ 先亮一个边界:2026 年 8 月起,抖音边缘风控(Argus)开始对非浏览器请求返回 403,CLI 直连的多条下载路径已受限。哪些还能用、哪些没解,下面按流程讲清楚。

环境准备与首次跑通:五条命令

结论:克隆、装依赖、复制配置、扫码取 Cookie、运行主程序,最少五条命令,后续所有调整都在 config.yml 里做。

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader # 获取代码 cd douyin-downloader pip install -r requirements.txt # 核心依赖,需 Python 3.9+ cp config.example.yml config.yml # 基于官方示例建自己的配置,不覆盖原文件 python -m tools.cookie_fetcher --config config.yml # 打开浏览器扫码,Cookie 自动写回 config.yml python run.py -c config.yml # 启动下载,终端用 Rich 进度条展示状态

cookie_fetcher 启动后会弹出一个浏览器窗口,你在里面扫码登录抖音,登录完成后回到终端按 Enter,程序就把 Cookie 写回config.yml的cookies段,不用手动翻开发者工具。若之后要用浏览器兜底,再补装 Playwright:pip install playwright后执行python -m playwright install chromium。

跑起来后,文件写入Downloaded/目录,同时维护 SQLite 库dy_downloader.db做去重和历史记录;跳过配置文件临时跑一条链接,可以追加命令行参数(见下节)。桌面版 Douzy 与 CLI 共用同一套后端,多了一个可视化配置面板,且通过内置登录窗口代发请求——这是绕开当前风控的实际路径。

按场景走:三种入口参数

结论:单条用命令行参数,主页批量用 mode + number,热搜/搜索是独立子命令。

单条视频、图文、短链

入口是链接本身。不碰配置文件的最快方式:

python run.py -u "https://www.douyin.com/video/7604129988555574538" -t 8 -p ./Downloaded

v.douyin.com短链会自动解析后下载;-t指定并发数,-p指定落盘目录。产物出现在Downloaded/下,按"作者名/模式/日期_标题_id"归档。

从批量场景切回来也一样:link填单条链接、mode留空,跑python run.py -c config.yml即可。

批量下载抖音主页视频

入口是/user/{sec_uid}主页链接加mode与number。mode决定下哪类内容,number决定每类下多少条:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 换成目标博主的主页链接 mode: [post] # post=作品 like=点赞 mix=合集 music=音乐 number: post: 50 # 每模式独立限额,0 = 不限 increase: post: true # 增量:跳过库里已记录的作品 start_time: "2025-01-01" end_time: "2025-06-30" # 按发布时间过滤,YYYY-MM-DD

上图是桌面版 Douzy 的链接任务配置界面,与 CLI 的mode/number一一对应。

诚实说明:主页作品翻页接口目前被风控拒绝,只能靠 Playwright 浏览器兜底(browser_fallback.enabled: true且headless: false,弹窗里手动完成验证),该兜底未针对当前门禁实测,成功不保证。

特殊场景:热搜、关键词搜索、直播

python run.py --hot-board 30 # 导出前 30 条热搜为 JSONL 快照 python run.py --search "关键词" --search-max 50

live.douyin.com/{room_id}房间链接可录制直播(FLV/HLS),属实验功能:主播下播时已录字节仍会保留,但 HLS 源只存播放列表,不是可直接播放的视频。

影响体验的关键参数速查

结论:只挑 6 个"不读 README 就会踩坑"的参数,其余保持默认。

参数推荐值一句话说明
thread3~5并发下载数,默认 5,CLI 用-t可临时覆盖
retry_times3失败按 1s/2s/5s 指数退避重试
video_qualityhighest/original默认取码率阶梯最高转码档;original额外发一次探测请求找上传原片,失败自动退回,这是去水印保存高清原片的关键开关
start_time/end_timeYYYY-MM-DD按作品发布时间过滤,结束日包含当天
proxy如http://127.0.0.1:7890同时作用于 API 请求与媒体下载
databasetrueSQLite 去重与历史,增量下载依赖它
  • 全局限速硬编码为 2 请求/秒加随机抖动(见 rate_limiter.py),把thread调高不会突破它,防风控的刻意设计,不建议改。
  • collect/collectmix(当前登录账号的收藏夹、收藏合集)只对 Cookie 对应账号生效,且该接口自 2026-08 起被风控拦截。
  • filename_template里必须保留{id},否则重名作品会互相覆盖;全部字段见 config.example.yml。
  • increase设为false会重新下载并覆盖当前范围内作品,不用清库。

产物落盘与本地管理

结论:默认按"作者名 → 模式 → 日期_标题_id"三层归档,去重靠数据库加本地文件双重判断。

Downloaded/ ├── download_manifest.jsonl # 每行一条作品清单(日期、标签、文件路径) └── 作者名/ └── post/ └── 2024-02-07_作品标题_aweme_id/ ├── ..._aweme_id.mp4 # 无水印视频 ├── ..._cover.jpg # 封面(cover: true 时) ├── ..._music.mp3 # 原声(music: true 时) └── ..._data.json # 原始元数据(json: true 时)

判断"是否下过"的逻辑是:查dy_downloader.db里有记录,且本地主媒体文件非空,两者同时成立才跳过;只删文件不删库不会触发重下,只删库不删文件会被文件去重拦下。所以想强制重新下载某条作品,必须成对操作:删掉本地文件目录,再执行DELETE FROM aweme WHERE aweme_id = '...'删掉库记录。查下载历史可直接查库:

sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name FROM aweme ORDER BY download_time DESC LIMIT 20;"

踩坑与真实限制

结论:当前时间线下 CLI 的多数下载路径已被风控拦截,Cookie 和重试都救不了,先看下面再动手。

  • 大量 403 或登录跳转—— Cookie 失效。动作:重跑python -m tools.cookie_fetcher --config config.yml,其余配置不动。
  • 主页只抓到 20 条就停了—— 翻页触发风控。动作:确认browser_fallback.enabled: true且headless: false,浏览器弹窗出现后手动完成验证再继续。
  • 单视频/图文/合集/音乐详情直接失败,刷 Cookie 也没用—— 2026-09-14 起这些详情接口对非浏览器请求一律 403;点赞/收藏夹(2026-08)、合集列表(2026-09-10)同样被拦。动作:CLI 端暂无解,日常下载换桌面版 Douzy(同一后端,内置登录窗口代发请求)。
  • 没生成 transcript 文件—— 转写只针对视频对象且默认关闭。动作:依次检查transcript.enabled: true、对象是视频而非图文、OPENAI_API_KEY有效。
  • 下载速度慢—— 2 请求/秒的全局限速在起作用。动作:保持默认线程数,换稳定网络再观察,调线程数无效。

快速决策

  1. 如果你只要一条视频的无水印文件 → 直接python run.py -u "<链接>" -p ./Downloaded;但当前风控下详情接口受限,成功率不高,日常用建议桌面版 Douzy。
  2. 如果要批量下载某个博主的主页作品 → 主页链接配mode: [post]+number.post,先跑 10 条验证目录结构,再放大数量。
  3. 如果要高清原片 →video_quality改original,探测失败会自动退回最高转码档,不会卡死。
  4. 如果要"只补新作品" →increase保持true,去重按落盘那节的规则走,别手动清库。
  5. 如果要强制重下某条 → 删文件 + 删库记录成对操作,或临时把该模式increase设为false。

本项目仅面向个人学习与研究等合理使用场景,下载内容请尊重原创版权与平台规则,勿用于商业用途。

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

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

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

立即咨询