抖音批量下载怎么跑:无水印下载一份配置跑通主页备份与直播录制的完整指南
【免费下载链接】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就是这样一个命令行抖音批量下载工具:给它一条链接和一份 YAML 配置,视频、封面、原声会自动归档进本地目录,去重与续跑的逻辑它替你处理。
对号入座:它到底能帮你存什么
| 你要存的东西 | 入口(link + 配置) | 落到本地的产物 |
|---|---|---|
| 单条视频 | link填/video/{aweme_id} | 无水印 mp4,可选封面、原声、JSON 元数据 |
| 图文笔记 | link填/note/{note_id} | 按顺序归档的图片,原声一并保存 |
| 作者整个主页 | /user/{sec_uid}+mode | 按"作者 / 内容类型 / 单条作品"分层目录 |
| 自己的收藏夹与收藏合集 | /user/self?showTab=favorite_collection+collect/collectmix | 登录账号里收藏内容的本地副本 |
| 一整场直播 | live.douyin.com/{room_id} | FLV 文件 + 房间信息 JSON |
| 评论、热搜、关键词数据 | comments.enabled: true/--hot-board/--search | *_comments.json、JSONL 文件 |
只想存几条视频?看到"跑通第一条"那节就可以停了;要建一个能长期挂着的本地档案库,重点读后面的旋钮、保障和排障几节。
把它装起来,先拿到登录态
环境要求只有 Python 3.8+,macOS、Linux、Windows 都能跑:
git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt成功信号:终端里没有红色报错行,就是环境就绪。
接下来拿登录态。抖音大量内容只对登录账号可见,Cookie 缺失时请求基本全军覆没,所以这步是跑通前最关键的一步。项目内置浏览器自动抓取脚本,不用手动从开发者工具里复制:
pip install playwright python -m playwright install chromium python -m tools.cookie_fetcher --config config.yml浏览器窗口弹出后扫码登录,回到终端按 Enter,Cookie 会直接写进配置。
成功信号:config.yml里cookies段下的msToken、ttwid等字段不再是占位符。如果浏览器弹出后卡住,先确认playwright install chromium那步是否执行成功。脚本实现见 tools/cookie_fetcher.py。
跑通第一条无水印下载
cp config.example.yml config.ymlconfig.example.yml 里每个字段都带中文注释。打开config.yml,把link改成你想下的一条视频,确认cookies已填入:
link: - https://www.douyin.com/video/760412345678901234567 path: ./Downloaded/然后启动:
python run.py -c config.yml成功信号有两个:终端打印完成统计;Downloaded/下出现以作者名命名的目录,里面躺着无水印 mp4。
不想改文件也能临时覆盖配置:-u追加链接、-t调并发、-p换输出目录。
python run.py -c config.yml -u "https://www.douyin.com/video/760412345678901234567" -t 8成功信号:跑完在作者目录下多出这条作品,速度体感不明显变慢。
三种最常用的下载姿势
主页备份
主页链接放进link,在mode里勾要抓的内容类型,number给每种模式设上限(0不限)。post / like / mix / music 可以混着一次跑完,跨模式自动去重:
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post - mix number: post: 50 # 只抓 50 条作品 mix: 20跑完后该博主的作品与合集会分别归档进作者/post/、作者/mix/。
成功信号:终端统计里各模式数量与number一致,本地目录结构完整。一个坑要先记住:collect/collectmix(收藏夹与收藏合集)必须单独使用,不能和上面四种模式混写,且只支持当前登录 Cookie 对应的账号。
整场直播录制
直播间链接直接写进link,程序自动拉流,不用开录屏软件:
link: - https://live.douyin.com/123456789 live: max_duration_seconds: 3600 # 0 = 录到主播下播无论录满时长、主播下播还是你手动 Ctrl+C,已录字节都会保留,存为Downloaded/{作者}/live/下的 FLV,并附一份房间元数据 JSON。
成功信号:live/目录下 FLV 文件大小随直播持续增大。官方把这个接口标为 experimental,极端直播场景可能有兼容问题,重要场次建议同时人工备份一份。
只导热搜或关键词数据
不做文件下载、只收数据时,两条命令搞定:
python run.py --hot-board 30 -p ./Downloaded python run.py --search "猫咪" --search-max 100 -p ./Downloaded结果分别落在Downloaded/hot_board/与Downloaded/search/下的 JSONL 文件,可以直接喂给 pandas 或 jq 做二次筛选。成功信号:对应目录出现新的.jsonl文件,条数符合上限设置。
桌面端 Douzy 基于同一套后端:粘贴链接即下载、同步关注、任务中心统一管理,目前内测中,截图可当功能参考:
配置旋钮逐个讲:拧了会发生什么
分层看,必填的只有三项:link、path、cookies。其余按需调。
常用层:
| 旋钮 | 默认 | 拧了之后 |
|---|---|---|
mode | [post] | 决定主页抓哪几类:作品 / 喜欢 / 合集 / 音乐 |
number.post等 | 见模板 | 每种模式的数量上限,0不限 |
music/cover/avatar/json | false | 是否顺带存原声、封面、头像、元数据 |
start_time/end_time | 空 | 按YYYY-MM-DD过滤发布时间,可分段抓 |
thread | 5 | 并发数,网络稳可试 8 |
video_quality | highest | highest取最高转码档;original额外探测原画 |
进阶层:
database: true+database_path:每次下载写进 SQLite,下次运行自动跳过已下内容;increase.post等:增量下载,磁盘上已存在的媒体直接跳过,删掉文件则下次重下;browser_fallback:翻页被风控截断时自动开浏览器,headless: false时弹窗里可以手动过验证码;retry_times+ 默认 2 请求/秒限速:失败按 1s/2s/5s 指数退避自动重试;notifications:跑完推 Bark / Telegram / Webhook,适合挂机长任务;transcript:调 OpenAI 把视频转写成 txt/json,图文笔记不生成转写。
挂一夜不翻车:三个必开的保障
批量任务跑几十分钟,最怕中途崩掉白跑,或者硬盘堆出重复文件。记住这组搭配:
- 去重双保险。
database: true记历史 +increase按磁盘文件跳过。判断逻辑是"数据库记录 + 本地文件"双重检查:只删库不清文件不会触发重下,两者都清才会重新下载。想重下某条被跳过的作品,把本地文件夹和库中记录一起清掉,具体 sqlite3 命令参考 README.zh-CN.md 的"重新下载"一节。 - 重试兜底。
retry_times: 3配上内置指数退避,网络抖动不会留下缺口;下载还有 Content-Length 完整性校验,残文件自动清理并重试。 - 并发循序渐进。
thread从 5 起步,网络稳定再提到 8。一上来拉满容易触发风控,反而比慢一点更慢。
卡住了先查这张表
| 现象 | 多半是 | 先做什么 |
|---|---|---|
| 主页停在 20 条左右 | 翻页触发风控 | 确认browser_fallback.enabled: true且headless: false,在弹窗里手动过验证码;或按start_time/end_time分段抓 |
| 请求突然大面积失败 | Cookie 过期 | 重跑python -m tools.cookie_fetcher --config config.yml刷新登录态 |
| 硬盘里堆出重复文件 | 没开数据库去重 | database: true,配合increase走增量 |
| 某条被跳过,想重下 | 去重机制跳过了它 | 删本地对应文件夹 + 删库中记录,再运行 |
| 进度输出很吵 | 日志未静默 | progress.quiet_logs: true;排查时临时加-v或--show-warnings |
| 整体速度慢 | 并发与重试偏保守 | thread提到 8、retry_times给 3,逐步上调 |
现在就跑起来的 5 步
- 先用单条视频链接验证 Cookie 和网络,再上主页批量;
- 测试期把
number.post设成 1~5,跑通后再放开到 0; - 不同任务分配置(
config_test.yml、config_daily.yml),别共用一份; - Cookie 失效是常态,把它当周期性维护项,而不是故障;
- 长任务加
notifications推送,跑完手机就能收到。
本项目仅供技术学习与个人数据管理使用。请在合法合规的前提下使用,尊重内容版权与创作者权益。
【免费下载链接】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),仅供参考