ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

douyin-downloader 教程:从扫码登录到抖音主页作品批量去水印下载

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 数据库记录已下载内容,重复运行只补新作品。适合想把自己常看的账号存档、或定期追更某个博主的用户。按本文操作,你可以完成环境安装、扫码登录,并跑通一次批量下载任务。

先看适用场景

  • 能做什么:识别单条视频/图文链接、博主主页、合集、音乐页等多种地址,批量下载无水印 mp4 和图片;下载历史记入dy_downloader.db,重跑时自动跳过旧内容。
  • 要提前知道:官方 README 明确说明,抖音接口风控目前会拦截 CLI 对单条视频、图文、合集、音乐的请求;主页作品批量下载可以借助 Playwright 浏览器兜底,但不保证一次成功。如果只是偶尔下几条,README 建议直接用同源的 Douzy 桌面版。
  • 不能做什么:它不是直播回放完整解决方案(直播录制为实验功能,HLS 源只保存播放列表),也不能绕过验证码——遇到风控时需要你自己在弹出的浏览器里完成验证。

同一套后端也封装成了 Douzy 桌面版(见仓库 README),粘贴链接即可下载;本文只讲命令行版的配置与使用。

准备清单

需要准备的东西为什么需要没准备好会怎样
Python 3.9 及以上整个工具基于 Python 编写,Windows/macOS/Linux 均可启动run.py时语法或依赖直接报错
requirements.txt里的依赖提供aiohttp、rich、pyyaml等运行必需的库import失败,命令行无法启动
Playwright + chromium 浏览器内核扫码取 Cookie 和风控兜底都靠它驱动真实浏览器cookie_fetcher无法弹出登录窗口
抖音账号(手机或扫码)Cookie 是登录凭证,接口靠它返回数据登录态缺失,所有请求被拒
配置文件config.yml存放链接、开关和 Cookie运行时报Config file not found

最短验证路径

下面这条路径的目标只有一个:让一条无水印 mp4 落到本地,确认环境没问题。

第 1 步:拉代码装依赖。装完后可用python -c "import aiohttp, yaml, rich"自检,没有任何输出就说明核心依赖齐了。

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 下载完成即成功;这一步同时满足了登录和风控兜底两个用途。

第 2 步:复制配置并扫码登录。先把模板复制成正式配置,再运行取 Cookie 脚本,它会弹出浏览器让你登录抖音。

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

在弹出的浏览器里完成登录,回终端按 Enter。成功的信号有两个:终端提示配置已更新,且打开config.yml后cookies段不再是YOUR_XXX占位值。Windows PowerShell 下复制文件请用Copy-Item config.example.yml config.yml。

第 3 步:小批量跑一次。把config.yml里的link换成目标博主主页,number.post保持模板里的1(只下 1 条),然后运行:

python run.py -c config.yml

成功的信号:结尾汇总里“成功”为 1,./Downloaded/博主昵称/post/下出现按日期+标题命名的文件夹。如果这一步卡住,先看终端最后的报错行,再对照文末的排错清单。

按任务选择用法

任务一:主页整页批量下载

目标:一次把博主全部(或指定条数)作品攒到本地。操作:link填博主主页地址,number.post改为0(不限数量),mode保持post。作品多的账号建议压低并发,降低被风控盯上的概率:

number: post: 0
python run.py -c config.yml -t 2

判断成功:汇总里“成功”数大于 0,且与博主作品量级大致相符;下载目录按博主昵称/post/日期_标题_id层级铺开。

任务二:临时救急,只下一条链接

目标:不改配置文件,快速保存单条视频或图文,跑完不留痕。操作:用-u直接传链接(可重复传多条,v.douyin.com短链会自动解析成真实地址)。命令行传入的链接只对当次运行生效,不会写回config.yml:

python run.py -u "https://v.douyin.com/xxx/" -c config.yml

判断成功:./Downloaded/下出现新的 mp4(图文则为图片文件)。注意:官方 README 提示 CLI 单条请求目前容易被风控拦截,多次失败时改回批量入口或用桌面版更稳。

任务三:长期归档,增量追更

目标:定期重跑同一份配置,只补博主新发的作品。操作:database: true和increase.post: true模板里默认就是开的,什么都不用改,把number.post保持0重跑即可。工具会先查数据库再查本地磁盘上的非空主文件,已下过的自动跳过。

python run.py -c config.yml -t 2

判断成功:汇总里“跳过”数明显大于 0、“成功”只有新增的几条——这就是增量逻辑在工作的标志。

常用参数调整

只列出日常大概率会动的项,其余保持默认即可。

参数默认值什么时候改改完的效果
number.post模板示例为1,代码默认0只想先试跑时设小数字;全量归档设0控制每个链接最多下载多少条,0表示不限
thread5主页作品多、被风控时并发数。配合-t参数可临时覆盖,请求越慢越不容易触发风控
retry_times3网络不稳、经常中断单条失败的自动重试次数,中断的下载会按此补下
video_qualityhighest(最高转码档)想存原片改original;省流量指定720p等original每条多一次探测请求找上传原片,找不到自动退回最高档;指定分辨率匹配不到时降级到最接近档
increase.posttrue想强制重下某范围作品时改falsefalse会重下并覆盖当前筛选范围的文件,无需手动清数据库
start_time/end_time空只归档某个时间段时格式YYYY-MM-DD,包含结束日期当天
music/cover/json均为false需要原声、封面或作品数据时单独打开附带产物文件数和请求量都会翻倍,确认需要再开
browser_fallback.enabledtrue保持默认即可翻页被拦时自动拉起真实浏览器,headless: false保证你能手动过验证

排错清单

你看到的现象可能原因处理动作
提示“登录态失效,需要重新登录”Cookie 过期(通常只有几天有效期)重跑python -m tools.cookie_fetcher --config config.yml重新扫码
主页只抓到少量作品就停接口风控拦截了翻页确认browser_fallback.enabled: true且headless: false,在弹出的浏览器窗口里手动完成验证,再等它继续
单条链接反复失败CLI 单条请求被风控拦截换批量入口、用-t 2降并发重跑;仍失败则考虑 Douzy 桌面版
下载中断或速度骤降网络波动或并发偏高用-t 2或-t 3降并发重跑,未完成文件按retry_times自动补
重跑时旧文件被反复覆盖increase.post被改成了false改回true,让增量跳过逻辑生效
目录里找不到 mp3 原声music默认关闭配置里改music: true后重跑该博主
不知道卡在解析还是下载默认控制台只显示错误级日志加-v重跑:python run.py -c config.yml -v

下一步与边界

建议的落地顺序:先用任务二跑通一条链接,确认./Downloaded/里出现无水印文件;再上任务一做主页整页批量;最后把number.post保持0,固定周期重跑做增量追更。两点提醒:config.yml里的 Cookie 等于你的登录凭证,只留本地,不要随配置一起外发;下载内容建议仅用于个人存档和研究,注意版权与平台规则。

需要深入时看这几个入口:完整配置示例与全部开关注释在 config.example.yml,默认值定义在 config/default_config.py,下载器实现在 core/,中文说明见 README.zh-CN.md。

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进