抖音批量下载工具 douyin-downloader 完整指南:无水印采集 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
上个月我在给一个自媒体团队搭素材库,需要把某位博主主页上四百多条作品全部存档。用浏览器逐条手动保存,一条从打开页面到另存为要 40 秒,干满四个小时,文件上还带着水印。又试了两个在线解析站,下两条就弹充值窗口。最后救我的是douyin-downloader——一个开源的抖音批量下载工具,去水印、整页采集用户主页,去重、重试、分类全自动。照下面的顺序做,10 分钟能跑通第一次批量下载。
能处理哪些抖音链接
| 内容类型 | 说明 |
|---|---|
| 单个视频 / 图文 | /video/、/note/、/gallery/链接,自动选无水印、最高码率的源 |
| 单个合集 / 音乐原声 | /collection/、/music/链接,按整组抓取;原声文件缺失时回退到该音乐下首条作品 |
| 短链 | v.douyin.com/...自动解析,不用先手动跳转 |
| 用户主页批量 | post发布作品、like点赞作品、mix合集、music原声,四种模式任选 |
| 当前登录账号收藏夹 | collect/collectmix抓收藏作品与收藏合集,必须单独使用 |
| 直播录制 | live.douyin.com/{room_id}边播边录,主播下播时已录数据保留 |
| 评论 / 热搜榜 / 关键词搜索 | 导出 JSON 或 JSONL,方便二次分析 |
一句话判断标准:凡是能复制出链接的内容,基本都能抓。
它不做的事也要说清:收藏夹模式只支持当前 Cookie 对应的那个账号,不能替别人抓私有内容;直播录制标记为实验性,HLS 源只保存 playlist 文件,要用 ffmpeg 后处理。
3 步装好环境并下载第一个视频
环境要求很低:Python 3.8+,Windows、macOS、Linux 都能跑。在项目根目录依次执行:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt cp config.example.yml config.yml第一行拉源码,第二行进目录,第三行装全部 Python 依赖,第四行从模板复制出一份可编辑的 config.example.yml。
然后解决 Cookie。推荐自动方式:
python -m tools.cookie_fetcher --config config.yml它会打开一个浏览器窗口,你登录一次抖音,回终端按回车,Cookie 就自动写进配置。如果你习惯从浏览器开发者工具里复制,也可以直接把msToken、ttwid、odin_tt这几个键填到配置的cookies字段。
下载第一个视频一行命令:
python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538"-c指定配置文件,-u追加大链接;工具自动解析并挑无水印、最高码率的源,进度条上实时显示成功、失败、跳过数。
Playwright 浏览器是可选依赖,只有翻页真的被风控卡住时才需要:
pip install playwright && python -m playwright install chromium先不装也行,被卡到时再补,来得及。
批量采集用户主页:一份配置文件拉整批
单视频只是热身。把某个博主整批端下来,配置这样写:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post - like number: post: 50 like: 0 path: ./Downloaded/ thread: 5link:要采集的用户主页链接;mode:采什么。post发布作品、like点赞作品,还能加mix(合集)、music(原声);number:每个模式各采多少条,0 表示不限量全抓;path下载目录,thread并发数,默认 5。
保存后运行python run.py -c config.yml,多个任务的进度、耗时、完成状态并行滚动刷新。
这个工具最加分的是跨模式自动去重:同一条作品在"发布"里下过,又在"合集"里出现,第二次直接跳过。配合database: true,SQLite 记录加本地文件扫描双保险,重跑任务不会重复下载。下载环节默认按 1 秒、2 秒、5 秒节奏指数退避重试,下完还会比对文件大小,不完整自动清理重下。
想做长期监控,把增量开关打开:
increase: post: true这样每次运行只补新发布的内容,跑一次顶手动盯一个月。
下载输出目录结构与长期运营玩法
文件按"作者 → 模式 → 日期_标题_aweme_id"三层落盘:
Downloaded/ └── 作者名/ ├── post/ │ └── 2024-02-07_作品标题_aweme_id/ │ ├── 作品.mp4 │ ├── ..._cover.jpg # 打开 cover 开关后出现 │ ├── ..._music.mp3 # 打开 music 开关后出现 │ └── ..._data.json # 打开 json 开关后出现 ├── like/ └── mix/默认只保存视频本体,目录很干净;需要封面、原声、头像、元数据时再逐个打开对应开关。每条作品一个独立文件夹,日期和标题都在名字里,整理素材直接按文件夹拖走。
围绕这套引擎,几个能长期跑起来的玩法:
- 增量监控:
increase打开后定时运行,只补新增作品; - 完成通知:
notifications里配 Bark、Telegram 或企业微信 webhook,人不在电脑前也知道一批跑完了; - 数据导出:
python run.py --hot-board 30拉热搜榜,--search "关键词"搜作品,结果都是 JSONL 文件,直接喂给分析脚本; - 直播录制:贴一个直播链接就边播边录,文件落在
Downloaded/作者名/live/,中断或下播已录字节都保留; - 桌面客户端 Douzy(内测中):粘贴链接即刻开始,多链接队列和任务中心可视化,背后是同一套引擎。
看输入框下方那行"已识别:单个作品":粘贴后自动判断链接类型,点下载即可。
Cookie 失效、风控卡 20 条、去重跳过:3 个高频问题
① 只抓到 20 条就不动了
现象是进度停在 20 条附近。原因是接口翻页触发了风控。修复:
browser_fallback: enabled: true headless: false浏览器弹窗后手动过一遍验证,别急着关窗口,验证完就能继续翻页。
② Cookie 失效,下载大面积报错
现象是请求连续失败。原因是 Cookie 过期,这事隔一阵就会发生一次。修复:重跑python -m tools.cookie_fetcher --config config.yml,一分钟搞定,不用改任何代码。
③ 想重新下载某条视频,程序一直"跳过"
现象是换了源或想重下,那条作品永远被跳过。原因是数据库记录 + 本地文件双重去重生效了。修复:删掉本地目录和数据库记录各一处:
rm -rf Downloaded/作者名/post/*_<aweme_id>/ sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';"只删数据库不删文件不会触发重下,程序会扫描本地文件名里的 aweme_id 做二次去重,两处都得清。
工具的价值不在"能下载",而在"不用你管":去重、重试、分类、增量这些脏活它全包了。复制一条链接、跑一条命令,回来收素材就行。现在就可以从你手边任意一条抖音链接试起 🚀
【免费下载链接】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),仅供参考