news 2026/10/31 10:53:20

douyin-downloader 抖音无水印批量下载完整教程:从单条视频到主页归档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
douyin-downloader 抖音无水印批量下载完整教程:从单条视频到主页归档

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 是一个面向抖音的无水印下载工具,覆盖视频、图集、合集、音乐(原声)四类内容,既能下单条链接,也能把整个创作者主页批量拉成本地档案。它内置进度显示、失败重试、SQLite 去重和浏览器兜底,日常使用选 Douzy 桌面版,脚本集成选 Python 命令行版。本文以命令行版为主线,带你从"第一次跑通"一路走到"批量归档、直播、转写"。

先选对入口:Douzy 桌面版与命令行版怎么选

项目提供两个入口,先搞清楚用哪个能少走弯路:

  • Douzy 桌面版(Windows / macOS):图形界面,粘贴链接即下,支持抖音、TikTok、YouTube、Telegram、X 五个平台,适合不想碰命令行的普通用户。
  • 命令行版(本文主角):纯 Python,只支持抖音,胜在可脚本化、可进 Docker、可挂 REST 服务,适合要批量、要自动化、要接进工作流的用户。

两者共享同一套 Python 后端逻辑,命令行版更轻。只是偶尔存几条视频,桌面版更快;下面是命令行版的路子。

跑通它:安装、Cookie 自动提取与首次运行

安装依赖与浏览器内核

命令行版需要 Python 3.9+。克隆后装依赖,再补一个 Playwright 浏览器内核(Cookie 提取和主页兜底都要用到它):

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader python -m pip install -r requirements.txt python -m pip install playwright && python -m playwright install chromium

Cookie 自动提取:一条命令完成鉴权

抖音的批量接口需要有效 Cookie。项目内置了浏览器工具 tools/cookie_fetcher.py,它会拉起浏览器、引导你扫码登录、自动回写鉴权信息,不用手动复制粘贴:

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

浏览器里登录完成后,回到终端按 Enter 保存即可。Cookie 会过期,失效时重跑这一条就行。

改一处配置,跑第一次下载

打开 config.example.yml,把link换成目标视频或主页链接,其余保持默认,然后:

python run.py -c config.yml

看到进度条走完、Downloaded/目录里出现文件,说明环境就通了。想临时追加链接而不改配置,用-u "链接"即可;-p指定保存目录,-t指定并发数,--help可看全部参数。

用好它:批量下载整个主页并做日期、数量筛选

单条跑通后,真正省事的是批量。命令行版按"模式"批量拉取,这是它和单条下载工具拉开差距的地方。

批量下载与模式选择

在config.yml里,mode决定拉哪一类内容,number决定每类拉多少条:

mode: [post] # post 作品 / like 喜欢 / mix 合集 / music 音乐 number: post: 10 # 0 表示不限

把link指向创作者主页(/user/{sec_uid}),mode设为[post],就会把该主页的作品按页拉下来。底层由 core/user_modes/ 里的策略模式实现,post、like、mix、music、collect各对应一个策略类,加新类型不用动主流程。

提示:上图是共享同一套配置语义的 Douzy 界面,命令行版对应的就是上面的mode与number字段。另外,抖音接口近期加强了风控,CLI 对"单视频、合集、音乐、喜欢、收藏"等直连下载的成功率不稳定;主页作品可依赖browser_fallback浏览器兜底,但不保证成功,日常高频使用建议优先 Douzy 桌面版。

按日期与数量精确筛选

只想要某段时间、某个量的内容时,两个字段就够:

start_time: "2024-01-01" # YYYY-MM-DD,含结束当天 end_time: "2024-12-31"

配合number.post限制条数,就能做"只存某博主 2024 年的前 50 条作品"这种事,避免一次拉爆磁盘。

增量下载与 SQLite 去重

反复跑同一个主页,最怕重复下载。命令行版默认开着增量(increase.post: true)和 SQLite(database: true,由 storage/database.py 管理):已下过的作品会跳过,磁盘上缺失的文件会补下(redownload_missing_files: true)。想强制重下某一批,把对应increase设为false即可,不用清库。

玩出花:直播、评论、转写与并发调优

基础用法之上,命令行版还藏了几个适合进阶的开关,都在 config.example.yml 里注释好了。

直播与直播回放录制

live段支持直播录制(live.douyin.com、/follow/live/链接触发),max_duration_seconds: 0表示录到流结束。直播回放走 HLS,注意它默认只保存播放列表,不是可直接播放的视频,这块属于实验性功能,更适合存档而非即时观看。

评论采集与视频转写

  • 评论采集:comments.enabled: true后,每个作品额外生成一份*_comments.json,include_replies可控制是否收楼中楼。
  • 视频转写:transcript.enabled: true会把视频里的人声转成文字(默认走 OpenAI 转写接口,可换本地 Whisper),产物落在output_dir,适合做内容研究或建立可搜索的文本库。

并发、画质与代理

thread: 5 # 并发下载数,网络稳可上调 video_quality: highest # original 原画 / highest / lowest / 指定分辨率 proxy: "" # 需要代理时填

thread默认 5;video_quality设original会先探测原片再下载,画质最好但每条多一次探测请求。请求节奏由 control/ 里的限流器统一管控,配合retry_times自动重试,避免触发风控。

下载产物怎么组织:目录结构与下载清单

默认folderstyle: true时,文件按"作者 → 模式 → 日期_标题_id"归档,视频、封面、音乐、JSON 同目录存放:

Downloaded/ └── 作者名/ └── post/ └── 2024-02-07_作品标题_aweme_id/ ├── 2024-02-07_作品标题_aweme_id.mp4 ├── ..._cover.jpg / ..._music.mp3 / ..._data.json

命名模板(filename_template)可自定义,变量含{id} {title} {author} {date}等,模板里至少留一个{id}防止重名覆盖。每次任务还会在根目录追加download_manifest.jsonl,每行一条作品的结构化元数据(日期、aweme_id、标签、文件路径),方便后续检索或二次加工。

常见卡点:Cookie 失效、主页作品少、日志排查

  • Cookie 失效 / 鉴权错误:重跑python -m tools.cookie_fetcher --config config.yml。
  • 主页只拉到少量作品:保持browser_fallback.enabled: true、headless: false,在弹出的浏览器里手动完成验证。
  • 想看详细日志:python run.py -c config.yml -v,--show-warnings可把告警打到控制台。
  • 要接自动化:装好 fastapi / uvicorn 后,python run.py --serve --serve-port 8000以 REST 服务方式调用。

想现在跑起来:克隆仓库、装依赖、cp config.example.yml config.yml、用 cookie_fetcher 登录、python run.py -c config.yml,几分钟内就能拿到第一条无水印作品。遇到接口风控或版本问题,先看 README.zh-CN.md 的"常见问题"与限制说明,再翻tests/里的对应测试用例,通常能更快定位预期行为。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 10:52:52

企业微信外部群机器人实战:突破限制,主动发送群消息全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/31 10:52:38

合同OCR提取与关键要素抽取:从纸质档案到结构化数据的实战指南

一、企业存量合同的数字化痛点凡是做过合同档案管理这件事的人, 都明白这样一个实际情况, 那就是对于一家规模处于中等水平的企业来讲, 历经十年所积攒起来的纸质合同、扫描件以及传真件, 常常会超过十万份这个数量。这些合同有的放置在档案柜里, 有的散落在各个部门的文件夹之…

作者头像 李华
网站建设 2026/10/31 10:42:29

【GATT】规范精讲[14]: 服务表的指纹——Database Hash 是怎么算出来的

前面讲过 GATT Service 里有一个叫 Database Hash 的特征,值是 16 字节,客户端拿它当服务表的指纹。一旦指纹变了,就说明服务器的服务定义改了,客户端得重新发现。但这个指纹具体怎么算?哪些属性参与、哪些不参与?字节怎么拼?规范 用一个完整的示例把这件事讲透了。 目录…

作者头像 李华
网站建设 2026/10/31 10:40:46

Qt自定义委托实现定制输入的效果

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/31 10:40:11

ESP32参考方案优先级排序:从芯片型号到认证约束的工程决策法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/31 10:39:39

IWR1642呼吸心跳数据集解析:从ADC原始数据到呼吸心率检测全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华