抖音下载器实操:5 分钟跑通无水印视频、图集与批量主页下载
2026/9/15 18:23:32 网站建设 项目流程

抖音下载器实操:5 分钟跑通无水印视频、图集与批量主页下载

【免费下载链接】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 是一个实用的抖音下载器,支持视频、图集、合集、音乐的无水印下载,也支持作者主页批量下载。默认带进度展示、指数退避重试、SQLite 去重和浏览器兜底,适合需要把抖音内容落到本地的开发者、数据分析师和内容运营。

快速上手:5 分钟跑通第一个例子

环境要求不高:Python 3.8+,macOS / Linux / Windows 均可。

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt

仓库提供了现成的 config.example.yml,复制一份即可用。部分能力(浏览器兜底、收藏夹下载)需要登录 Cookie,首次用自动获取最省事:

cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml

浏览器弹出后登录抖音,回终端按 Enter,Cookie 会自动写回 config.yml。

最小示例:下载单个视频。

python run.py -c config.yml \ -u "https://www.douyin.com/video/7604129988555574538" \ -t 5 -p ./Downloaded

✅ 跑成功的标志:终端出现 Rich 进度条;Downloaded/作者名/post/下生成以作品日期、标题、aweme_id 命名的子目录,里面有.mp4和可选的_data.jsonDownloaded/根目录多出一个download_manifest.jsonl清单文件。看到这三样,说明整条链路都通了。

核心能力拆解

单链接无水印下载

一句话:把一条链接粘进来,自动识别类型并取无水印源。 怎么触发:-u参数或配置文件link列表,支持/video//note/(图文)、/collection/(合集)、/music/(音乐,优先原声文件),v.douyin.com短链会先解析再下载。 什么时候用:只想存单条内容时,这是最轻的用法。画质由video_quality控制,默认在 API 返回的多档码率里挑最高转码档。

桌面版 Douzy 工作台(内测中):粘贴链接识别类型后一键下载。

作者主页批量下载

一句话:给定一个/user/{sec_uid}链接,按模式拉取该作者的内容。 怎么触发:配置mode列表,可选post(发布)、like(点赞)、mix(合集)、music(音乐),多个模式可叠加:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post - like number: post: 50 # 0 表示全量 increase: post: true

什么时候用:做账号内容归档、竞品账号跟踪时。同一个 aweme_id 跨模式自动去重;increase为 true 时跳过已下载作品,配合database: true生效,重跑任务只会补新内容。

登录账号收藏夹下载

一句话:下载"我的收藏"里的视频和收藏合集。 怎么触发:链接填https://www.douyin.com/user/self?showTab=favorite_collection,模式用collectcollectmix。 什么时候用:整理自己账号里攒的素材。注意它只认当前 Cookie 对应的账号,且必须单独使用,不能和 post/like 混用。

浏览器兜底

一句话:API 翻页被风控卡住时,启动真实浏览器继续翻页,验证码由你手动过。 怎么触发:browser_fallback.enabled: true,建议headless: false。 什么时候用:批量下载只抓到约 20 条、明显是分页受限时。它会采集缺失的 aweme_id 再补全详情,max_scrollswait_timeout_seconds控制滚动轮数与等待上限。

直播录制(实验性)

一句话:录live.douyin.com/{room_id}的直播流,主播下播时已录数据不丢。 怎么触发:link填直播间地址,配live.max_duration_seconds(0 = 录到下播)。 什么时候用:需要留存直播回放时。FLV 可直接播放;HLS 源只保存 playlist,要用 ffmpeg 后处理。

评论采集与热搜、搜索导出

一句话:把"内容"之外的数据也落到本地。 怎么触发:comments.enabled: true会为每个作品生成*_comments.jsonpython run.py --hot-board 30导出热搜榜快照,python run.py --search "关键词"导出搜索结果,均为 JSONL 文件。 什么时候用:做评论分析或关键词选题调研时,不用下载媒体本身。

关键配置说明

以下条目来自 config.example.yml 注释与 README,按对结果的影响排序:

配置项作用推荐值
mode决定下载作者主页的哪类内容按任务选,collect/collectmix单独用
number.post各模式数量上限,0 为不限先设小值试跑,稳定后改 0
thread并发下载数默认 5,网络好可调到 8
video_quality码率档位:original/highest/1080p 等highest;要原片用original
increase.post增量开关,跳过已下载作品定期跟更的账号设true
browser_fallback.enabled翻页受限时启用浏览器trueheadless: false
progress.quiet_logs进度阶段静默日志true,避免刷屏
proxyAPI 与媒体下载共用代理http://127.0.0.1:7890
database/database_pathSQLite 去重与下载历史true/dy_downloader.db

进阶玩法与调优

⚙️限速与并发:据仓库文档,默认速率限制为 2 请求/秒,重试走指数退避(1s、2s、5s)。批量任务失败多时,先降thread、别急着加代理;retry_times默认 3 次通常够用。

批量 + 增量跟更:把number.post设 0、increase.post设 true,配start_time/end_time划出时间窗(YYYY-MM-DD格式)。定时任务里反复跑同一份 config,就是"只下新作品"的追更流水线。

目录组织folderstyle: true时按作品建子目录;作者重名可把author_dir改成nickname_uid,直观且不会合并。download_manifest.jsonl每行一条 JSON,含日期、aweme_id、标签、文件路径,是后续检索的现成索引。

完成通知notifications.providers支持 Bark、Telegram、Webhook(企业微信/飞书/钉钉 bot 同理),长任务跑完推手机,不必盯着终端。也可以--serve起 REST API 服务,用POST /api/v1/download提交任务、轮询 job 状态。

桌面版任务中心:按作者/合集列出任务的成功、失败计数与重试入口(演示数据)。

常见问题(FAQ)

只抓到约 20 条作品?这是翻页风控的典型表现。确认browser_fallback.enabled: trueheadless: false,浏览器弹窗后手动完成验证,不要立刻关窗。

Cookie 失效?重跑python -m tools.cookie_fetcher --config config.yml即可,无需手动复制浏览器字段。

为什么没有 transcript 文件?转写只对视频生效(图文不转写),且要transcript.enabled: trueOPENAI_API_KEY有效、response_formats包含txtjson,逐项排查。

想让某个作品重新下载?要同时删本地文件和数据库记录:删掉Downloaded/作者名/post/*_<aweme_id>/,再sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';"。只删库不删文件不会触发重下。

进度条刷屏?确认progress.quiet_logs: true;调试时再临时加--show-warnings-v

怎么查下载历史?sqlite3 dy_downloader.db "SELECT aweme_id, title, author_name FROM aweme ORDER BY download_time DESC LIMIT 20;"

边界与注意事项

浏览器兜底目前只对post模式完整验证like/mix/music主要依赖 API 正常分页,深度抓取时受风控影响更大。

收藏夹模式限制多:仅当前登录 Cookie 账号可用、不能与其他模式混用、不支持增量截断。

直播录制是 experimental:webcast 接口未覆盖所有场景;HLS 源需 ffmpeg 后处理。

依赖平台接口与签名:工具通过内置的 xbogus/abogus 签名实现(见 utils/xbogus.py)访问抖音接口。平台更新风控或签名算法时功能可能失效,据仓库文档,这属于正常技术风险。

合规底线:内容仅用于技术研究、学习与个人数据管理,尊重版权与平台规则,避免高频批量请求。

写在最后

如果你的诉求是"把抖音内容稳定、可追溯地落到本地",这个下载器的功能覆盖面已经够用:单链接、批量主页、增量跟更、直播留存都有对应开关。下一步建议先通读 README.zh-CN.md 的典型场景一节,再对照 config.example.yml 里每个字段的注释,跑通一次单视频下载,然后按自己的任务类型打开对应能力。

参考资料

  • 完整文档:README.zh-CN.md
  • 示例配置:config.example.yml
  • 架构与落盘策略:PROJECT_SUMMARY.md
  • CLI 入口与参数:cli/main.py
  • 下载器与策略实现:core/
  • Cookie 自动获取工具:tools/cookie_fetcher.py
  • 测试用例(验证各能力行为):tests/
  • 文档设计稿:docs/superpowers/specs/

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询