抖音视频批量下载工具怎么用: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
你是不是也经历过这种时刻:刷到一条特别想珍藏的抖音视频,想存到本地,结果网页版右键不让你下,第三方解析站不是要关注就是铺满广告,好不容易弄到手还带着创作者的水印。三五个视频手动忍一忍也就过去了,可一旦任务变成"把这个博主的几百条作品全部存下来",或者"每周自动跟一遍关注的 20 个账号有没有发新内容",纯手工操作就彻底行不通了。
今天要介绍的 douyin-downloader,正是一款开源的抖音视频批量下载工具。它用 Python 写成,能在几分钟内把一个作者主页的作品、点赞、合集、音乐批量拉取到本地,默认去除水印、自动挑选最高画质,还内置了进度展示、失败重试、数据库去重、下载完整性校验和浏览器兜底等一系列省心设计。无论你是做内容运营、搞学术研究,还是单纯想给自己的收藏夹做个备份,它都能派上大用场。
这篇文章我会按"装起来 → 跑通第一条 → 批量玩法 → 高阶能力 → 落地场景 → 底层原理 → 调优技巧 → 避坑合规"的顺序,带你把它彻底吃透。
先花十秒认识它:这是什么、能干什么、适合谁
它是什么:douyin-downloader 是一款面向实用场景的抖音内容下载器,支持 Python 3.8+,可运行在 macOS、Linux、Windows 上。你既可以下载单条链接,也可以按作者主页批量抓取。
它解决什么问题:一句话——把"抖音上的内容"变成"你硬盘里干净、有序、可检索的文件"。下完的视频默认无广告水印,封面、配乐、作者头像、原始 JSON 元数据也会一并归档。
它适合谁:
- 内容创作者:收集灵感素材、分析竞品账号
- 运营与编辑:批量积累选题、做竞品内容监控
- 研究者:采集样本数据、抓取评论做分析
- 普通用户:备份喜欢的视频、音频和图文
官方完整功能清单在项目内的 README.zh-CN.md 里维护,下面我挑干货讲。
十分钟跑通第一次下载:从零到第一条视频落地
新手最怕的环节往往是"配环境",这里我把每一步都拆开,跟着做就行。
第一步:把代码拉到本地
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader第二步:安装 Python 依赖
pip install -r requirements.txt如果你后面想用浏览器兜底功能,或者想一键自动获取 Cookie,再补装一个 Playwright 和它的浏览器内核:
pip install playwright python -m playwright install chromium第三步:生成自己的配置文件
项目自带一份示例配置,直接复制一份出来改:
cp config.example.yml config.yml第四步:搞定 Cookie(推荐自动方式)
Cookie 是访问抖音接口的通行证。项目提供了一个自动抓取脚本,会拉起浏览器引导你登录抖音,登录完回到终端按一下回车,Cookie 就自动写进配置文件了:
python -m tools.cookie_fetcher --config config.yml如果自动方式走不通,也可以手动登录抖音网页版,从浏览器开发者工具里把 Cookie 字符串拷出来,填进配置文件的cookies节点。
第五步:写一个最小配置
把config.yml改成下面这样,只保留核心项:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: - post number: post: 50 thread: 5 retry_times: 3 database: true cookies: msToken: "" ttwid: YOUR_TTWID odin_tt: YOUR_ODIN_TT passport_csrf_token: YOUR_CSRF_TOKEN sid_guard: ""几个关键参数先混个脸熟:
| 配置项 | 作用 |
|---|---|
link | 要下载的链接,可写多条 |
mode | 下载模式,post指作者发布的作品 |
number.post | 下载条数,0表示不限制全量拉取 |
thread | 并发下载数,默认 5 |
retry_times | 单个任务失败后的重试次数 |
database | 开启 SQLite 去重与历史记录 |
第六步:启动下载
python run.py -c config.yml接下来你会看到类似下面的画面:先显示时间范围、已抓取的作品数,然后逐条下载视频、封面和头像,最后汇总成功数量与耗时。
到这一步,你的第一条抖音内容已经干净地躺在./Downloaded/里了,全程可能还不到十分钟。
功能分层拆解:先单条,再批量,最后上高阶
douyin-downloader 的能力可以分成三个层次,从"随手存一条"到"自动化生产线",一层比一层猛。
第一层:单条链接,随手保存
直接在配置里丢一条链接就能下,支持的类型很全:
- 短视频:
https://www.douyin.com/video/7604129988555574538 - 图文笔记:
https://www.douyin.com/note/7341234567890123456 - 合集:
https://www.douyin.com/collection/7341234567890123456 - 音乐原声:
https://www.douyin.com/music/7341234567890123456
还有一个贴心细节:像v.douyin.com/...这种短链,工具会先自动解析出真实地址再下载,你从手机 App 分享出来的链接直接就能用,不用手动转长链。
画质方面它也很讲究:优先选择无水印视频源;在多个可用的清晰度里,会基于接口返回的video.bit_rate数组自动挑出最高码率那一路,保证你拿到的是最干净、最清晰的那份。
第二层:按账号批量,效率的真正分水岭
单条下载只是热身,批量才是这工具的看家本领。把link指向某个作者主页,再配合mode参数,就能把整个账号的内容搬回家:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post # 作者发布的作品 - like # 作者点赞过的作品 - mix # 作者的合集 - music # 作者用过的原声每种模式都可以独立设置数量:number: { post: 50, like: 0 },其中0代表"不限量,全部拉取"。多个模式还能一起开,比如同时下作品和点赞,同一个aweme_id在不同模式下会自动去重,不会重复占用磁盘。
如果你要下载的是自己账号的收藏夹,可以把链接写成/user/self?showTab=favorite_collection,配合collect或collectmix模式,收藏过的作品和合集都能批量搬走。注意这个模式需要当前登录的 Cookie,且要单独使用。
批量下载跑起来后,界面里会逐条滚动进度条,每个视频、每张封面都有独立的状态反馈:
第三层:进阶高阶能力,把工具变成生产线
如果说前两层解决"下载"本身,第三层解决的是"下载之外的所有事":
直播录制:链接指向
live.douyin.com/{room_id}即可录制 FLV/HLS 流,主播下播、网络空闲或手动中断时已录内容都会保留,还附带直播间元数据快照。评论采集:开启后每个作品会额外生成一份
*_comments.json,可选抓二级回复,做舆情分析很有用。热搜榜快照:
python run.py --hot-board 30拉取当前热搜榜,结果导出为 JSONL。关键词搜索:
python run.py --search "猫咪" --search-max 100按关键词搜索作品并落盘 JSONL。视频转写:可选调用 OpenAI 的转写接口,下载后自动生成
*.transcript.txt和*.transcript.json文字稿。REST API 服务模式:
python run.py --serve --serve-port 8000可以把它变成一个 HTTP 服务,提交链接、查询任务状态都有现成接口,方便集成进自己的系统。完成通知:下载结束后推送到 Bark、Telegram 或 Webhook,人可以离开电脑。
桌面版 Douzy:基于同一套后端打造的图形界面客户端,粘贴链接即可开始下载,还支持关注列表同步、任务中心、作品档案筛选。目前处于内测阶段,可在 Releases 页面下载。
三个真实场景复盘:别人都是怎么用它的
光看功能列表容易"懂了但不会用",我挑三个有代表性的场景,把配置和效果一起摆出来。
场景一:自媒体运营——竞品账号的"内容雷达"
需求:美食自媒体团队每天要盯 3 个竞品账号,看看他们发了什么新选题,人手不够,纯手动根本盯不过来。
做法:把三个账号都写进link,开启post和like两种模式,再打开增量开关,让它每次只下载"新增内容":
link: - https://www.douyin.com/user/美食博主A - https://www.douyin.com/user/美食博主B - https://www.douyin.com/user/美食博主C mode: - post - like increase: post: true like: true配合定时任务,每天固定时间自动跑一遍,新作品全部入库,标题、标签、互动数据都记录在案。效果是从每天 4 小时的手工搬运,压缩到十几分钟扫一眼增量清单。
场景二:学术研究——把 1 万条视频变成结构化样本
需求:社会学课题要采集特定话题下的大量短视频,还要带上评论,按时间和热度做多维分析。
做法:用关键词搜索拿作品清单,再用时间过滤收敛到目标周期,最后打开评论采集:
start_time: "2024-01-01" end_time: "2024-12-31" comments: enabled: true include_replies: false max_comments: 500作品数据会以 JSONL 形式落盘,每条都带作者、发布时间、描述、标签、文件路径等字段,后续做统计分析非常顺手。比起人工逐条记录,样本采集周期从按月计缩短到按天计,而且数据是结构化的,能直接进分析工具。
场景三:培训机构——建一个可检索的教学案例库
需求:把 1000+ 条优质教学案例视频分类归档,还要能快速检索内容。
做法:用命名模板把文件整理得井井有条,再用转写功能生成文字稿,配合通知在完成时提醒:
folderstyle: true filename_template: "{date}_{author}_{title}_{id}" author_dir: "nickname_uid" transcript: enabled: true model: gpt-4o-mini-transcribe response_formats: - txt - json下载完成后,目录结构大概长这样,每个作品一个文件夹,视频、封面、配乐、元数据、文字稿都在里面:
有了文字稿,找某节课从"凭印象翻视频"变成了"搜关键词直接命中",检索效率提升了不止一个量级。
藏在代码里的设计巧思:底层原理通俗版
用起来顺手的背后,是几个很聪明的设计。我用大白话拆给你看。
智能去重,像图书管理员一样记账:每次下载,工具都会把作品的唯一 ID 记进 SQLite 数据库,同时检查本地文件名。下次再遇到同一个 ID,直接跳过。这套"数据库 + 本地文件"双重检查,保证了重复下载不会发生,也支撑了增量模式——它知道哪些已经下过了。
并发与限速,收放自如:默认 5 个线程同时下载,但请求频率被压到大约每秒 2 次。左边踩油门右边踩刹车,目的只有一个:速度够快,又不至于因为请求太猛被平台限制。相关代码在 control/ 下的队列、限速和重试模块里。
接口降级兜底,两条腿走路:下载时优先走 API 接口,又快又稳;一旦遇到翻页风控拿不到更多数据,自动切到浏览器模拟模式,弹出真实浏览器继续抓取,甚至允许你手动完成验证码。就像开车遇到路障自动换一条备用路线,这就是它面对各种异常还能保持高成功率的底气。
下载完整性校验,宁可重来不存残品:每个文件下载完会比对 Content-Length,发现大小不对就直接清理重下,避免给你留一堆半截文件。
失败重试,带节奏地重来:失败后不是立刻疯狂重试,而是按 1 秒、2 秒、5 秒的节奏指数退避,既给了网络恢复的时间,也不至于把请求堆成风暴。
进阶调优指南:性能、命名、定时、通知
工具默认配置已经很好用,但想让它更贴合自己的场景,这几个调优点值得掌握。
性能调优:网络条件好可以把thread提到 8;网络不稳则反过来调低。retry_times可以适当加大,配合timeout设置能显著提高弱网环境下的成功率。需要代理时,proxy配置形如http://127.0.0.1:7890。
命名与归档:文件命名支持{date}{author}{title}{id}{like_count}等变量;author_dir可设为nickname_uid,既直观又不会因为重名串号;folderstyle: true则按作品维度建子目录,归档更清晰。
定时自动化:Linux/macOS 用 crontab,Windows 用任务计划程序,把命令挂上去即可:
# 每天凌晨 2 点跑一次增量下载 0 2 * * * cd /path/to/douyin-downloader && python run.py -c config.yml >> download.log 2>&1完成通知:在notifications节点配置 Bark / Telegram / Webhook 之一或全部,下载成功或失败时就会收到推送,适合"挂着跑、人不在"的长期任务。
高频故障排查与合规红线
用久了总会遇到几个经典问题,这里一次性给你答案。
只能抓到 20 条作品?这是翻页风控的典型表现。确认browser_fallback.enabled: true且headless: false,当浏览器窗口弹出时手动完成验证,别急着关窗口。
Cookie 失效了?重新跑一遍python -m tools.cookie_fetcher --config config.yml,登录后会自动更新配置。
下载速度慢?先看网络,再尝试调低thread,必要时配代理。
个别视频下失败?工具会自动跳过失败项继续后面的任务,用-v参数看详细日志就能定位原因。
想重新下载某个作品?因为去重是"数据库 + 本地文件"双重检查,需要同时清理两边:删掉本地对应目录,再用sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = 'xxx';"删掉记录。
最后必须强调合规这条红线。工具内置了频率控制,本身就是在尊重平台规则的前提下设计的。请把它用于个人学习、研究分析、内部资料整理等合法场景,不要用于商业性内容分发、侵权二次传播或大规模爬取干扰平台服务;下载他人作品时注意注明来源,尊重创作者的劳动成果。项目 README 中也有明确的免责声明,请在使用前阅读确认。
收尾:一张行动清单与一句叮嘱
到这里,douyin-downloader 的完整链路你已经摸清了。如果想立刻动手,按这个清单走:
- 克隆仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader && cd douyin-downloader && pip install -r requirements.txt - 复制配置:
cp config.example.yml config.yml - 获取 Cookie:
python -m tools.cookie_fetcher --config config.yml - 写入你要下载的链接,保存配置
- 运行
python run.py -c config.yml,见证第一条无水印视频落地 - 按需开启批量模式、增量下载、命名模板与定时任务,把它升级成你的私人内容流水线
技术是工具,怎么用取决于人。在享受高效与便利的同时,请始终守住平台规则与版权边界,让这个工具成为你内容创作、素材管理或研究工作的可靠帮手。
【免费下载链接】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),仅供参考