抖音批量下载工具 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:一款支持视频、图文、合集、音乐、收藏夹批量下载的抖音批量下载工具,它能做到无水印优先、智能去重,特别适合内容创作者、研究者和想批量备份自己收藏的普通用户。
我决定按"真实踩坑流水账"的方式写这篇教程:下面就是我从下载、配置到最终跑通的完整过程,中间踩过的每一个坑,你都值得提前知道。
第一次运行就翻车,问题出在哪
我把项目克隆到本地,装好依赖,复制配置,满怀期待地执行了第一条命令:
python run.py -c config.yml结果屏幕上蹦出一行刺眼的报错——LoginRequiredError,翻译过来就是"你没登录"。我当时的第一反应是:完了,这工具怕不是要收费。后来才明白,抖音的接口需要携带登录凭证(Cookie)才能正常访问,这是几乎所有抖音相关开源项目都绕不开的一道门槛。而 douyin-downloader 贴心的地方在于,它内置了一个自动获取 Cookie 的工具,不用你手动去浏览器开发者工具里翻来翻去。
五分钟搞定 Cookie,这才算真正能用
Cookie 可以理解成一张"进门凭证",证明你是一个真实登录用户,而不是爬虫程序。获取方式很简单:
python -m tools.cookie_fetcher --config config.yml这条命令会自动打开一个浏览器窗口,你像平时一样扫码登录抖音,登录成功后回到终端按一下回车,程序就会把 Cookie 自动写进配置文件。整个过程不到两分钟,比我预想中顺利得多。
如果你不想用自动方式,也可以手动从浏览器复制 Cookie 填进config.yml的cookies字段。但说实话,自动方式省心太多,我强烈建议直接用上面这条命令。
第一个能跑的配置文件长什么样
跑通之后,我删掉原来的配置,从零写了一份最小配置,看起来非常清爽:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - post number: post: 50 thread: 5 retry_times: 3 database: true逐一解释一下:link填你要下载的链接,mode表示下载模式(post是作品、like是点赞、mix是合集、music是音乐),number.post是下载条数上限(0 表示全量下载),thread是并发数,database: true开启去重记录。这份配置想表达的意思是:把这个博主主页最近 50 条作品下到./Downloaded/目录里。
看到这个界面的时候,我已经从"差点卸载"变成了"真香"。Rich 渲染的进度条会把每个视频的下载状态实时刷在屏幕上,哪个成功、哪个失败、失败了几次,一目了然。
它到底能识别多少种链接,比你想象的更多
运行几次之后,我好奇地去翻了源码里的链接解析器(core/url_parser.py),发现它能识别的链接类型远超我的预期:
/video/{id}单个视频/note/{id}、/gallery/{id}单个图文/collection/{id}、/mix/{id}单个合集/music/{id}单个音乐/user/{sec_uid}用户主页(配合 mode 实现批量下载)live.douyin.com/{room_id}直播录制- 以及
v.douyin.com这类分享短链的自动解析
也就是说,你在抖音 App 里点"分享-复制链接",不管拿到的是哪种链接,几乎都能直接丢给它。短链它会在下载前自动展开成真实地址,省去你手动还原的麻烦。
批量下载模式怎么选,一次说清楚
mode是理解这个工具的关键,我整理成了一张对照表方便你抄作业:
| mode 值 | 下载内容 | 典型用途 |
|---|---|---|
post | 博主主页作品 | 追更一个创作者的全部视频 |
like | 博主点赞过的作品 | 研究竞品在关注什么 |
mix | 博主的合集 | 完整备份系列课程、连载内容 |
music | 博主的音乐/原声 | 收集配乐素材 |
collect | 你自己收藏夹 | 备份账号收藏 |
一个有意思的设计是跨模式自动去重:如果你同时勾了post和like,同一个视频不会因为两种模式都命中而下两次,数据库会替你挡住这种浪费。
无水印和高清,这两个承诺是怎么兑现的
下载工具千千万,去水印是基本操作,难的是"既要无水印,又要最高清"。douyin-downloader 的做法是:从接口返回的video.bit_rate数组里自动挑出码率最高的那个视频源来下载,而不是简单取第一个。
这意味着什么?意味着你下载下来的视频,往往比你在抖音 App 里看到的还要清晰。我在同一台设备上对比过,同一个视频用在线解析站下载的版本只有 720p 且带平台水印,用它下载的版本是源站最高清、完全无水印。对于需要拿视频做二次剪辑的人来说,这个差距直接决定了素材能不能用。
去重和增量下载,帮你省掉一半无用功
第一次批量下载 50 条作品后,我发现一个很贴心的机制:它会生成一个 SQLite 数据库文件(默认叫dy_downloader.db),把每个作品的 ID 记录在案。下次再跑同一个链接,已经下载过的作品会被自动跳过——这就是"数据库去重"。
更进阶的玩法是增量下载:
increase: post: true开启后,每次运行只下载"上次之后新增的作品"。对一个每天更新的博主,你相当于有了一个"自动追更"的管线:定时跑一次任务,新视频自动进本地文件夹,老视频绝不重复下载。配合start_time/end_time时间过滤,还能只取某个时间段的存量内容。
下载完成后,每个视频目录里除了 mp4,还有封面图、原声音乐、作者头像和一份_data.json元数据。等于说,你拥有的不只是视频文件,而是一份结构化的数字档案。
只能抓到 20 条作品?这是风控,不是 bug
我在批量下载一个几千条作品的博主时,遇到了一个典型问题:API 只翻页到 20 条就停了。查了文档才明白,这是抖音的翻页风控——连续请求触发限制后,接口不再返回更多数据。
解决办法在browser_fallback(浏览器兜底)配置里:
browser_fallback: enabled: true headless: false max_scrolls: 240 wait_timeout_seconds: 600原理很简单:API 拿不到的数据,就换真实浏览器去模拟真人滚动翻页。把headless设成false,浏览器窗口会真的弹出来,如果弹出验证码,你手动滑一下滑块,它就能继续往下翻。这个"API 为主、浏览器兜底"的混合策略,是它下载成功率高的核心原因——单一依赖 API 的工具遇到风控就废,它不会。
直播录制和评论采集,两个锦上添花的隐藏能力
如果你关注的是直播型创作者,它的live.douyin.com/{room_id}支持直接录制直播,输出 FLV 格式,主播下播或你手动中断时,已录制的部分会被完整保留,不会因为中途退出就全部丢失。
采集评论也只需要在配置里打开开关:
comments: enabled: true include_replies: false max_comments: 500每个作品旁边会多生成一份_comments.json,对做舆情分析、评论数据研究的人来说非常实用。
三个高频翻车场景的急救手册
场景一:Cookie 又失效了。抖音的 Cookie 会定期失效,这是常态。不用慌,重新跑一次python -m tools.cookie_fetcher --config config.yml即可,程序会自动覆盖旧凭证。
场景二:下载到一半卡住不动。工具默认带指数退避重试(间隔 1 秒、2 秒、5 秒递增)和下载完整性校验——如果下载中断导致文件不完整,它会自动清理掉残缺文件并重试。实在不行,把thread从 5 降到 2,减小并发压力往往立竿见影。
场景三:想重新下载某个视频,但它总被跳过。这是因为数据库和本地文件双重去重机制在起作用。想强制重下,需要同时清理本地文件(文件名里含 aweme_id)和数据库记录:
rm -rf Downloaded/作者名/post/*_<aweme_id>/ sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';"从一小时到十分钟,效率提升是真实发生的
最后说点直观的数据。我手动下载 50 条视频的旧流程是:逐条打开链接、等加载、点下载、改文件名,全程大约 45 分钟,而且有一半文件名字是乱的。用这个工具后,同样的 50 条,并发 5 线程跑完只用了不到 10 分钟,文件名自动统一成"日期_标题_ID"的格式,还附带封面和元数据。如果只是下载一个单独的短视频链接,甚至不用写配置文件,一条命令搞定:
python run.py -c config.yml -u "https://www.douyin.com/video/7604129988555574538" -p ./Downloaded如果你更习惯图形界面,项目还提供了基于同一套后端的内测桌面版(Douzy),粘贴链接即可开始,任务进度可视化管理。对于命令行有天然恐惧感的新手,这是个不错的过渡选项。
下一步,你可以这样开始
如果这篇教程让你动了下载的念头,建议按这个顺序走:
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader - 安装依赖:
pip install -r requirements.txt - 复制配置并获取 Cookie:
cp config.example.yml config.yml后运行python -m tools.cookie_fetcher --config config.yml - 从下载一个单独的短视频开始,验证整个链路通畅
- 再逐步尝试批量下载、增量追更等高级玩法
最后必须提醒一句:这个工具适合在合法合规的前提下使用——下载自己的内容、备份自己的收藏、做公开数据的研究分析都没问题,但请尊重创作者的版权和平台的规则。技术是工具,怎么用它,取决于你。希望 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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考