☰
手把手拆解 douyin-downloader:3 步跑通抖音无水印批量下载全流程
2026/10/5 6:30:42 网站建设 项目流程

手把手拆解 douyin-downloader:3 步跑通抖音无水印批量下载全流程

【免费下载链接】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 记录下载历史,支持增量下载和失败重试。CLI 之外还配套一个叫 Douzy 的桌面端,日常下载用它,脚本集成用 CLI。

能力图谱

先说清楚它的边界:CLI 版只支持抖音;2026-08 起抖音的接口风控(Argus 门禁)拦截了 CLI 对单个视频、合集、音乐、点赞和收藏的直连接口请求,主页作品可以走 Playwright 浏览器兜底,但不保证成功。日常下载官方建议用 Douzy 桌面端。

无水印下载视频、图文与音频

它不重新编码,直接获取原始视频文件,水印自然不存在。画质可以按档选择,默认取最高转码档,也可以探测上传原片。

  • 抓原始视频文件 → 得到无水印、无转码损失的成片
  • 打开music、cover、json开关 → 额外保存背景音乐、封面和作品原始数据
  • 设video_quality: original→ 探测上传原片,失败自动退回最高转码档

批量抓取用户主页作品、合集与音乐

mode字段决定抓什么,link放主页链接或合集链接,number按模式分别限数,0表示不限。

  • 设mode: [post]配主页链接 → 批量拉取该博主发布的所有作品
  • 设mode: [like]、[mix]或[music]→ 改抓其点赞作品、合集或使用的音乐
  • 设number.post为具体数字 → 每次运行只下载前 N 条,控制磁盘占用

增量下载与去重

每个作品先检查磁盘上的主文件,dy_downloader.db记录作品明细和下载历史,download_manifest.jsonl逐行追加下载清单,三套记录各司其职。

  • 保持increase.post: true→ 已下载的作品直接跳过,不重复占流量
  • 保持redownload_missing_files: true→ 文件被误删或为空时自动补下
  • 打开database: true→ 作品明细和每次任务结果写入 SQLite,可查询可回溯

失败重试与限速并发

下载链路内置了并发队列、速率限制和重试器,参数都在配置里,也可以在命令行临时覆盖。

  • 设thread: 5→ 5 个任务并发下载
  • 设retry_times: 3→ 单文件失败后自动重试 3 次
  • 填proxy字段 → 全部请求走代理
  • 加-t 10参数 → 不改配置,本次运行临时把并发调到 10

两个版本的关系可以一张表说清:

维度CLI 命令行版Douzy 桌面版
平台仅抖音抖音、TikTok、YouTube、Telegram、X
交互YAML 配置 +run.py粘贴链接、看进度、浏览档案
适用脚本化、定时任务、服务器部署日常下载、本地作品档案管理
风控应对主页作品可走 Playwright 浏览器兜底官方推荐的日常使用方式

Douzy 桌面端的抖音下载选项页,批量下载、画质与产物开关都在这里配置。

从零到跑通

第一步:装环境与依赖

整个项目是纯 Python,一次装完依赖后面就不用再动环境。

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

跑完无报错即可;最后一条会下载 Chromium 内核,后面取 Cookie 和浏览器兜底都用它。要求 Python 3.9+,Windows、macOS、Linux 都行。

第二步:扫码登录拿 Cookie

抖音需要登录态才返回作品数据,官方的cookie_fetcher会启动真实浏览器,你只管登录,它负责把msToken、ttwid等必要键导出成 JSON。

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

浏览器窗口弹出后登录抖音,回终端按 Enter,Cookie 保存进config/cookies.json,config.yml会自动引用它。

第三步:跑第一个下载任务

第一次建议拿一个博主主页链接、小数量跑,验证整条链路。

link: - https://www.douyin.com/user/博主sec_uid mode: [post] number: post: 10
python run.py -c config.yml

终端会出现 rich 渲染的进度条,./Downloaded/作者名/post/下按日期_标题_aweme_id结构生成文件,全部参数用python run.py --help查。

同一个仓库还带 Douzy 桌面端,与 CLI 共享后端逻辑,装好环境后两套入口都可用。

按任务拆的操作手册

把某博主主页作品全量拉下来

适用情境:你要归档某个博主的全部内容,含视频和图文,之后不再手动补。

你该怎么做:

  1. 在浏览器打开博主主页,从地址栏复制/user/开头的完整链接
  2. 粘进config.yml的link,mode设为[post]
  3. number.post设0不限数量,或填目标条数
  4. 加-v运行:python run.py -c config.yml -v,出问题看详细日志

跑完长这样:

Downloaded/ └── 作者名/ └── post/ └── 2026-03-18_作品标题_aweme_id/ ├── 2026-03-18_作品标题_aweme_id.mp4 ├── 2026-03-18_作品标题_aweme_id_cover.jpg └── 2026-03-18_作品标题_aweme_id_data.json

日期取作品发布时间而不是下载时间,开cover: true、json: true才会有后两个文件。

桌面端以任务列表展示批量抓取状态,CLI 侧对应的是终端进度条与汇总统计。

持续跟踪某个博主的新增作品

适用情境:长期跟踪某个创作者的更新,每天只拉新增部分,老作品不重复下。

你该怎么做:

  1. number.post: 0全量扫描,increase.post: true保持增量
  2. redownload_missing_files: true保持开启,误删的文件能自动补
  3. 用系统定时器每天跑一次
  4. 第二次起,已有作品跳过,只有新增作品进下载队列

跑完长这样:

30 9 * * * cd /path/to/douyin-downloader && python run.py -c config.yml

这条 crontab 让任务每天 9:30 跑一轮。日志里每个作品标记为跳过或下载,SQLite 里的download_history表会留每次任务的总数和成功数,方便你核对。

增量跟踪跑久了,作品按作者和时间自动归档,桌面端可以直接翻阅本地档案。

把热搜榜和关键词搜索结果导成 JSONL

适用情境:你要做的是趋势分析而不是囤视频,需要的是结构化数据。

你该怎么做:

  1. 运行python run.py --hot-board 30拉热搜榜前 30 条
  2. 换关键词搜索:python run.py --search "关键词" --search-max 50
  3. 两个命令都把结果写成 JSONL 文件
  4. 用 Python 或 pandas 逐行读取做统计

跑完长这样:

{"date": "2026-09-14", "aweme_id": "7385xxxx", "author_name": "作者昵称", "desc": "作品标题", "tags": ["#话题"], "recorded_at": "2026-09-14T09:30:00"}

一行一个作品,字段与下载清单download_manifest.jsonl的风格一致,接任何分析管道都方便。

配置调优与进阶玩法

用产物开关控制磁盘占用

问题:第一次全量下载就塞了几十个文件,其实你只要视频本体。

video: true music: false cover: false avatar: false json: false

效果:默认配置只存视频,封面、BGM、头像、原始 JSON 全部按需打开,每个作品的请求数和文件数都降下来。这几个开关只影响新配置,config.yml里已显式写过的值不受影响。

原画与最高转码档怎么选

问题:有些作品是 4K 上传,highest拿到的仍是转码档,分辨率打了折;但original每条作品多一次探测请求。

video_quality: original # 也可以指定分辨率:1440p / 1080p / 720p / 540p / 360p

效果:original会探测上传原片,比最高转码档大才优先下载,探测失败自动回退;只关心带宽时指定1080p,匹配不到自动降到最接近的可用档。

目录结构与命名模板

问题:跑久了文件散落、博主改名后目录分裂、重名作品互相覆盖。

folderstyle: true filename_template: "{date}_{title}_{id}" author_dir: nickname_uid group_by_mode: true

效果:模板里保留{id}杜绝重名覆盖;author_dir: nickname_uid在作者目录里带上sec_uid,改名不会把档案劈成两半;group_by_mode按post/like/mix分层,不同来源不混放。注意模板变量({author}、{year}等)的完整清单在[配置文件示例](https://link.gitcode.com/i/e0dedb3c1c55dd4d9e00fe016be52733)顶部有注释。

归档跑顺之后的样子:每个博主一个目录,作品按发布日期排列,查找成本很低。

踩坑记录

单视频或合集链接下载失败,主页链接却正常

  1. 确认链接是/video/还是/collection/开头
  2. 换用主页链接 +mode: [post]走批量通道
  3. 确认真实需要单条下载时改用 Douzy 桌面端
  4. 拉取仓库最新代码,风控规则在持续变化 根因:2026-08 起抖音 Argus 风控拦截了 CLI 对详情、合集、音乐、点赞类接口的直连请求,刷新 Cookie 和重试都绕不过去。

跑了几条后全部变成登录提示或空数据

  1. 看config/cookies.json的最后修改时间
  2. 重跑python -m tools.cookie_fetcher --config config.yml
  3. 检查导出结果里msToken、ttwid、odin_tt、passport_csrf_token四个键齐全
  4. 仍失败就加-v看接口返回原文 根因:登录会话过期,旧 Cookie 被接口直接拒绝。

主页只抓到一小部分作品,博主明明发了几百条

  1. 保持browser_fallback.enabled: true
  2. 保持headless: false,弹出的浏览器里手动完成验证
  3. 观察日志确认浏览器滚动页数是否到达上限
  4. 需要更多数据时用number.post分批多跑几轮 根因:翻页接口被限流,浏览器兜底按滚动次数翻页,max_scrolls默认 240,到达即停。

重跑任务一个都不下载,但确实想重新拉

  1. 检查increase.post的值
  2. 改成false,重新下载并覆盖当前筛选范围内的文件
  3. 无需清空数据库或删dy_downloader.db根因:增量开关先查磁盘主文件,存在且非空就跳过,这是特性不是故障。

文件手动删了,任务却不再补下

  1. 检查redownload_missing_files
  2. 确认值为true
  3. 重跑任务验证补下行为 根因:开关为false时,只要数据库里还有有效下载记录,磁盘缺文件也会跳过。

录下来的直播"视频"无法播放

  1. 确认链接来自live.douyin.com
  2. 看落盘文件的实际格式,多半是 m3u8 播放列表
  3. 不要把它当视频进剪映 根因:直播录制在 CLI 里属于实验功能,HLS 源只保存播放列表,不是可播放的合并视频。

合规与红线

工具默认只用于个人观看和个人数据管理,别把下载内容二次分发或商用。尊重创作者版权与隐私,未经授权不要搬运。控制并发数和频率,别用批量任务长时间打接口。

平台风控随时会变,功能可用性也可能随之波动,这是使用这类工具必须接受的前提。

下次再刷到想留下的作品,把链接贴进link、把number.post设成 10,先跑通一条完整链路,再谈规模和自动化。

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

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

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

立即咨询