douyin-downloader:把抖音博主主页的无水印作品批量下载到本地磁盘
你盯着一个博主主页上的 300 条视频,打算用鼠标一条条右键保存?douyin-downloader 是一个用 Python 写的抖音批量下载工具:把主页链接填进配置文件,它会翻完全部作品,跳过的跳过、失败的自动重试,最后按文件夹整理好落盘。
douyin-downloader 能替你干哪几件事
先看看它能给你什么,再决定要不要往下装:
- 主页作品整页批量落盘
- 已保存的跳过,只做增量
- 下载失败自动重试
- SQLite 记账,不重复存
- 接口被风控时走浏览器兜底
- 可选评论采集、文字转写
两步从零跑通抖音下载器
知道它能干什么之后,让它跑起来。需要 Python 3.9 以上,Windows、macOS、Linux 都行。
拉代码 + 装依赖
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader
cd douyin-downloader
python -m pip install -r requirements.txt
拿到登录态
Cookie 是下载的前提。自动方式会打开浏览器到抖音首页,你手动登录,结束后回终端按 Enter 保存;手动方式适合手里已经有 Cookie 字符串的情况(比如从浏览器开发者工具复制),直接填进 config.example.yml 里的 cookies 字段(先把这个文件复制为 config.yml):
cookies: { msToken: "YOUR_MS_TOKEN", ttwid: "YOUR_TTWID" }
自动方式需要先装一个本地浏览器内核:
python -m pip install playwright && python -m playwright install chromium
然后跑采集工具,登录完成后按 Enter 保存:
python -m tools.cookie_fetcher --config config.yml
两步都齐了,执行下载:
python run.py -c config.yml
上图是配套桌面版 Douzy 的下载选项页,作品、喜欢、合集、音乐几类内容可以可视化勾选,还能给每种模式设数量上限。
按你的需求选用法
同一个工具,三种常见场景,对号入座。
存整个主页
用户主页批量下载是目前最稳的场景。把博主主页链接写进 config.yml 的 link 字段,mode 保持默认的 [post],只想要某段时间的作品就补上 start_time / end_time(格式 YYYY-MM-DD,包含结束当天)。默认只保存视频本体,想连音乐、封面、JSON 元数据一起留,把配置里对应开关改成 true。
python run.py -c config.yml
只存一条链接
说句实话:抖音接口风控目前会拦截单个视频/图文、合集、音乐、喜欢和收藏的直连下载,主页作品可以试 Playwright 浏览器兜底,但不保证成功。如果你主要想存单条作品,桌面版 Douzy 更省心:链接贴进输入框,它自己识别是单作品还是主页。命令行这边 -u 参数也能追加链接,同样受风控约束:
python run.py -u "https://www.douyin.com/user/YOUR_SEC_UID"
上图是 Douzy 桌面版的链接任务页,粘贴链接后会自动判断内容类型再提交下载。
盯直播
链接指向直播间(live.douyin.com/{room_id})时会进入直播录制,这是实验功能:HLS 源只保存播放列表,不是能直接播放的视频。live.max_duration_seconds 设 0 会一直录到主播下播,代码里另有直播回放模块可以对照着看。
python run.py -c config.yml
配置文件里值得动的 3 个开关
配置里十几个字段,真正影响日常使用的主要是这三个:
thread→ 默认 5 → 失败偏多时先降到 2~3,网络稳、带宽足再调高number.post→ 0 表示不限量 → 只想要最近 50 条就改成 50increase.post→ 默认 true 跳过已下载 → 想强制重下并覆盖时设为 false,不用清数据库
thread: 5
number:
post: 0
increase:
post: true
跑不动了先看这里
下载失败别急着重装,按这个顺序查:
- Cookie 失效、请求返回异常:重跑
python -m tools.cookie_fetcher --config config.yml,反复重试没用 - 主页只拿到少量作品:保持
browser_fallback.enabled: true、headless: false,在弹出的浏览器里手动完成滑块验证 - 大量任务失败:先把
thread降下来,还不行再检查要不要配proxy - 仍定位不到:加
-v看详细日志,python run.py -c config.yml -v
项目内部长什么样(30 秒版)
会用了之后,知道每块代码在哪也不费劲。core/ 负责各下载模式、重试和浏览器兜底;auth/ 管 Cookie 与登录态,storage/ 用 SQLite 记下载历史做去重,config/ 加载并校验配置,control/ 管限流和队列,cli/ 是命令行参数解析,入口是 run.py。仓库里还带一个 Douzy 桌面版,支持抖音、TikTok、YouTube、Telegram、X 五个平台的可视化操作。
桌面版左侧下拉框可以切换抖音、TikTok、YouTube、Telegram、X 五个平台的工作台。
用之前请知道的边界
动手前,三条边界:
- 只用于学习和个人数据管理,下载的内容别拿去商用
- 尊重版权和隐私,不二次传播他人作品,不采集涉及他人隐私的内容
- 平台风控和接口随时会变,请求量别拉满,温和一点
不用急着整理 300 条视频,复制一个博主的主页链接,把 number.post 设成 1 试跑一遍,就知道它有多快。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考






