☰
douyin-downloader 抖音批量下载指南:3 步搭好无水印增量下载
2026/9/27 21:57:57 网站建设 项目流程

douyin-downloader 抖音批量下载指南:3 步搭好无水印增量下载

【免费下载链接】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 命令行工具,接收抖音主页、合集或直播间链接,并发批量抓取无水印视频、图集、合集、原声与直播流。每个作品写进 SQLite 记录并按 aweme_id 双重去重,配合默认 5 路并发,增量运行只捞新作品。

能力矩阵:批量下载、增量同步与风控兜底

  1. 无水印自动选档:对比多路视频源的 bit_rate 码率阶梯,video_quality默认挑最高转码档,original可探测上传原片、失败自动回退。
  2. 并发加退避重试:默认 5 路并发(thread: 5),失败按指数退避重试(retry_times: 3),rate_limit限制为 2 请求/秒,降低触发风控概率。
  3. 双重去重:SQLite 下载记录 + 本地文件名中的 aweme_id 双重比对,increase增量模式只下载新作品,删库前请先想清楚。
  4. 浏览器兜底:API 翻页被风控截断时自动拉起 Playwright Chromium,保持headless: false,手动过一遍验证码即可继续翻。
  5. 多形态产物:评论导出*_comments.json、热搜榜与关键词搜索落盘 JSONL、直播录制存 FLV 并附房间元数据快照。
输入 / 触发模式本地产物备注
/user/主页链接mode: postmp4 + 封面/原声/data.json按number.post限量,0 不限
/collection/、收藏页mix/collect按作品分目录受 2026 风控门禁影响
/music/原声链接musicmp3缺失时回退该音乐下首条作品
live.douyin.com/{room_id}直播录制flv +*_room.json实验功能;HLS 仅存播放列表
--hot-board/--search数据采集search/*.jsonl先筛清单再决定下载哪批

同一套后端还打包了桌面客户端 Douzy(内测中),形态不同,按需选择:

形态定位入口
CLI(本仓库)主页批量、直播录制、数据采集python run.py
桌面版 Douzy单作品下载、可视化任务管理项目 Releases 页获取

⚠️ 自 2026-08 起,抖音对单视频/图文、合集、音乐等接口加了ArgusSecurityPlugin风控门禁,非浏览器请求直接 403;CLI 侧目前仅主页作品可走 Playwright 兜底,且不保证成功。

五分钟上手:安装、扫码登录与首次运行

拉代码并安装依赖

Python 3.9+,Windows / macOS / Linux 均可。一条命令装完依赖和浏览器内核:

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

跑通标志:pip安装无报错、chromium 内核下载完成(输出中出现 "Executable downloaded")。

扫码获取 Cookie

💡 首次使用最容易卡住的一步:没有有效 Cookie 时,作品列表往往只翻 20 条就停。用自带脚本扫码,Cookie 会自动写回 config.yml:

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

浏览器里登录抖音后回终端按 Enter。跑通标志:config.yml 的cookies段填入了真实值(msToken、ttwid、odin_tt 等),不再是 YOUR_XXX 占位符。

首次运行

把配置里的示例link换成目标博主主页(number.post先设小值试水),然后:

python run.py -c config.yml # 也可临时追加链接与并发,不动配置文件: python run.py -c config.yml -u "https://www.douyin.com/user/xxxx" -t 5 -p ./Downloaded

跑通标志:终端出现 Rich 进度条,Downloaded/{作者}/{日期}_{标题}_{aweme_id}/下多出 mp4 文件。

场景拆解:主页增量同步与直播存档

整站主页搬进本地素材库(增量同步)

短视频创作者跟踪竞品更新,只想每月同步新作品、日期区间内可重复执行:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: [post] number: post: 50 # 0 表示不限数量 start_time: "2026-09-01" # 只抓区间内作品,含结束日当天 end_time: "2026-09-30" increase: post: true # 跳过已下载作品

执行python run.py -c config.yml。文件按「作者/模式/日期_标题_aweme_id」三级归档,每个作品目录含 mp4、封面、原声与 data.json(点赞数、发布时间等)。需要强制重下时把increase.post设为false即可,无需清空数据库。

直播回放一键存档

课程运营要留存整场直播,把直播间链接写进link:

link: - https://live.douyin.com/123456789 live: max_duration_seconds: 0 # 0 = 录到主播下播 idle_timeout_seconds: 30

执行同一条python run.py -c config.yml。已录字节保留为Downloaded/{作者}/live/下的 flv 文件,旁边附*_room.json元数据快照。注意:直播录制属实验功能,HLS 源只保存播放列表,需要时用 ffmpeg 二次合成。

评论数据与关键词采集

做舆情分析前先备原始料:config.yml 打开评论采集(comments.enabled: true、max_comments: 500),每个作品会在媒体文件旁生成*_comments.json;关键词命中的作品清单则先导出再挑:

python run.py --hot-board 30 python run.py --search "关键词" --search-max 100

结果落盘为search/目录下的 JSONL,逐行 JSON 可直接用 pandas 读入分析。

参数调优与源码地图

先调并发与稳定性:

  • thread(默认 5)→ 同时下载任务数 → 家庭宽带 5~8 → 再高容易撞限流。
  • retry_times(默认 3)→ 单任务重试次数 → 网络差调到 5 → 配合指数退避吸收瞬时抖动。
  • rate_limit(默认 2)→ 每秒 API 请求上限 → 保持默认 → 这是不触发风控的关键阀门。
  • video_quality(默认 highest)→ 码率档选择 → 存素材库用 original,省流量用 720p → original 每条作品多一次 10s 超时探测。
  • browser_fallback.max_scrolls(默认 240 轮)→ 兜底浏览器翻页深度 → 深主页调到 400 → 配合headless: false方便手动过验证。

代码模块化程度高,改造入口明确:

  • core/user_modes/:post / like / mix / music / collect 六种策略类,由 core/user_mode_registry.py 注册发现;新增内容类型加一个策略类并register即可。
  • auth/cookie_manager.py:封装 Cookie 生命周期;想接自己的登录态或过期提醒从这里入手。
  • storage/database.py:SQLite 层,dy_downloader.db里的 aweme 记录、下载历史、统计查询都在这里,二次开发报表直接查它。

要接前端或自动化流水线:python run.py --serve --serve-port 8000起 REST 服务(需 fastapi + uvicorn),POST/api/v1/download提交任务,GET/api/v1/jobs/{job_id}查状态,实现见 server/app.py。

故障诊断:只抓 20 条、403 与重复跳过

  • 现象:主页作品只抓到 20 条就停 →原因:API 翻页被风控截断 →修复:确认browser_fallback.enabled: true且headless: false,浏览器窗口弹出后手动完成验证再让它继续翻。
  • 现象:列表抓空、全部作品下载失败 →原因:config.yml 里 Cookie 过期 →修复:重跑python -m tools.cookie_fetcher --config config.yml扫码刷新。
  • 现象:单个视频/图文、合集、音乐链接报 403Blocked by ArgusSecurityPlugin→原因:2026-08 起接口加风控门禁,非浏览器请求被拒 →修复:CLI 无解,单个作品改用 Douzy 桌面版;主页作品走 post 模式加浏览器兜底。
  • 现象:删了本地文件,下次运行仍跳过该作品 →原因:SQLite 双重去重记录还在 →修复:sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';"。
  • 现象:问题定位不到 →原因:日志级别不够 →修复:python run.py -c config.yml -v开详细日志。📌

收束

那批收藏的教程视频,不用再等它从时间线里消失后才想起来补:主页、直播、评论都会按「作者/模式/日期_标题」自动归档,点赞数、发布时间一并落进 JSON。

  1. 扫码跑通 cookie_fetcher
  2. 目标主页链接填进 config.yml
  3. 执行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),仅供参考

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

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

立即咨询