douyin-downloader:从单条抓取到批量无水印下载的实战指南
2026/9/15 12:10:12 网站建设 项目流程

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 是一款面向实用场景的抖音无水印下载工具,支持单条链接抓取与用户主页批量下载,内置并发重试、SQLite 去重与浏览器兜底,适合需要批量归档抖音内容的创作者、研究者与开发者。

项目能力速览

功能一句话说明典型场景
单条内容下载视频/图文/合集/音乐,短链自动解析保存单条无水印作品
用户主页批量下载post/like/mix/music模式采集备份创作者全部内容
直播录制直播间链接直接录 FLV,下播保留已录数据直播存档
评论与搜索采集评论落 JSON,热搜/关键词导出 JSONL数据采集分析
去重与增量数据库记录 + 本地文件双重校验定时增量采集
浏览器兜底翻页受限时拉起浏览器,人工过验证风控场景

架构上,core/下的下载器工厂按 URL 类型分发到不同下载器,API 请求失败时由浏览器兜底接管翻页;storage/负责文件落盘与 SQLite 历史记录,模块间通过config/的配置加载器串联。

安装与首次运行

环境要求 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,额外安装 Playwright:pip install playwright && python -m playwright install chromium

② 复制配置并获取 Cookie

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

浏览器中登录抖音后回到终端按 Enter,Cookie 自动写入config.yml

⚠️ Cookie 有时效,出现"登录态失效"类报错时重新运行上述 cookie_fetcher 命令即可更新。

③ 跑通第一条下载命令

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

成功后Downloaded/下出现按日期_标题_aweme_id命名的作品文件夹。

核心用法

单条链接下载命令

链接写入配置link数组,或用-u直接追加:

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

关键参数:

  • -u, --url— 追加下载链接,可重复传入
  • -c, --config— 指定配置文件,默认config.yml
  • -p, --path— 指定下载目录
  • -t, --thread— 指定并发数
  • --search KEYWORD— 按关键词搜索并导出 JSONL

支持/video//note/(图文)、/collection/(合集)、/music/(原声)链接及v.douyin.com短链,视频源默认自动选无水印地址。

用户主页批量下载命令

在配置中指定主页链接与模式,number为每种模式的条数上限,0表示全量:

python run.py -c config.yml
link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 0

多模式可同时开启(post/like/mix/music),跨模式按 aweme_id 去重。输出目录结构:

Downloaded/ ├── download_manifest.jsonl └── 作者名/ └── post/ └── 2024-02-07_标题_aweme_id/ ├── 视频.mp4 ├── 视频_cover.jpg ├── 视频_music.mp3 └── 视频_data.json

封面、音乐、头像、JSON 由cover/music/avatar/json开关控制,默认仅保存视频本体。

直播录制配置

link指向直播间时进入录制模式,FLV 存于Downloaded/{作者}/live/,附*_room.json元数据快照;主播下播、网络空闲或 Ctrl+C 时已录数据保留:

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

清晰度按流列表自动挑选最高可用档:

  • ORIGIN 原画(最高优先级)
  • FULL_HD1 / FULL_HD 超清
  • HD1 / HD 高清
  • SD1 / SD2 / SD 标清
  • LD 流畅

HLS 源仅保存 playlist,需 ffmpeg 后处理为可播放文件。

Douzy GUI 客户端

Douzy 是基于同一套后端的桌面客户端(内测中,安装文件见仓库 Releases 页面),为抖音、TikTok、YouTube 提供独立工作台,粘贴链接即可开始下载,无需记忆命令。

  • 多链接队列,一键启动单条/主页/合集下载
  • 同步关注、收藏夹、收藏合集与喜欢列表
  • 任务中心查看任务状态、重试失败项、打开输出目录
  • 本地作品档案,支持筛选与快速重新下载

配置体系

仓库内实际模板及配置相关源码:

文件适用场景与基础模板的关键差异
config.example.yml唯一完整模板,复制到config.yml使用覆盖全部选项:画质、浏览器兜底、评论、直播、通知
config/default_config.py新配置的代码级默认值字段缺失时自动补齐,含increase/author_dir
config/config_loader.py加载与合并逻辑默认值与用户配置合并,支持 CLI 参数覆盖

最小可用配置(注释为关键字段说明):

link: - https://www.douyin.com/video/7604129988555574538 path: ./Downloaded/ mode: - post thread: 5 # 并发数 retry_times: 3 # 失败重试次数 database: true # SQLite 去重与历史

并发与限速,控制下载吞吐:

thread: 8 rate_limit: 2 # 默认 2 请求/秒

重试策略,失败按指数退避(1s、2s、5s)重试:

retry_times: 3 proxy: "" # 可选 HTTP/HTTPS 代理

时间过滤,仅采集区间内发布的作品(格式YYYY-MM-DD):

start_time: "2024-01-01" end_time: "2024-12-31"

其他常用字段:video_qualityoriginal/highest/lowest或指定1440p等分辨率)、increase.*(增量下载开关)、comments.*(评论采集)、notifications.*(Bark/Telegram/Webhook 推送)、transcript.*(OpenAI 转写)。

实战工作流

备份自己账号的全部作品

目的:创作者定期备份自己的发布内容。将link指向自己的主页,配置mode: [post]number.post: 0increase.post: true,运行python run.py -c config.yml。已下载作品按磁盘主文件跳过,新作品自动增量补齐。

按时间范围采集指定账号内容

目的:研究者只关注某时间窗内的发布。在配置中同时设置start_time/end_time与目标主页链接,并配number.post限制条数。采集结束后download_manifest.jsonl*_data.json可直接作为分析数据源。

定时自动化采集

Linux / macOS 用 crontab 每天凌晨执行增量任务:

0 2 * * * cd /path/to/douyin-downloader && python run.py -c config.yml >> download.log 2>&1

Windows 用任务计划程序:① 新建daily_download.bat,内容为cd /d C:\path\to\douyin-downloader && python run.py -c config.yml;② 在任务计划程序中创建每日触发任务,指向该 bat 文件。注意 Cookie 会过期,定时任务失败时先更新 Cookie。

元数据与二次利用

每个作品的元数据文件

启用json: true后,每个作品目录内生成*_data.json(原始 API 响应摘录,关键字段如下),下载根目录另有download_manifest.jsonl逐条记录:

{ "aweme_id": "7604129988555574538", "desc": "视频标题/描述", "create_time": 1704067200, "author": { "nickname": "创作者名称" }, "statistics": { "digg_count": 12345, "comment_count": 678 }, "video": { "duration": 60 } }

常见二次利用方式

  • 批量转写:开启transcript.enabled: true,视频下载后自动生成*.transcript.txt/json,用于听力材料或内容检索
  • 入库做趋势分析dy_downloader.dbaweme表记录下载历史,配合*_data.json的互动字段可统计发布频率、热度分布
  • 按互动数据筛选:解析 JSON 中的statistics,按点赞/评论量阈值筛出优质样本

故障排查

  • 症状:报错"登录态失效,需要重新登录"或批量请求 401/403。解决:重新运行python -m tools.cookie_fetcher --config config.yml,登录后按 Enter 更新 Cookie。

  • 症状:每个用户只拿到约 20 条作品。解决:这是翻页风控限制,确认browser_fallback.enabled: trueheadless: false,在弹出的浏览器窗口手动完成验证后再继续。

  • 症状:下载速度慢或频繁超时。解决:调整thread(默认 5)与rate_limit,网络不稳时在配置中设置proxy;调试期可用-v查看完整日志。

  • 症状:希望强制重下某条已下载作品。解决:跳过判定是"数据库记录 + 本地文件"双重校验,需同时删除本地目录与数据库记录:

rm -rf Downloaded/作者名/post/*_<aweme_id>/ sqlite3 dy_downloader.db "DELETE FROM aweme WHERE aweme_id = '<aweme_id>';"

工具只处理当前 Cookie 可见的公开内容,不会突破平台权限获取私密或他人账号数据;平台接口变更导致功能失效属于正常技术风险。

项目结构与使用边界

核心目录职责:

  • run.py + cli/ — 命令行入口、参数解析与主流程
  • core/ — API 客户端、下载器工厂及视频/主页/直播/音乐下载器
  • auth/ + tools/cookie_fetcher.py — Cookie 管理与自动抓取
  • config/ + storage/ — 配置加载合并、文件落盘与 SQLite 历史

桌面端 Douzy 已覆盖 TikTok 与 YouTube 工作台,后续方向以多平台支持与转写等智能处理能力扩展为主。

使用边界:本项目仅用于技术研究、学习与个人数据管理;不用于侵犯他人隐私或版权,不用于商业用途;遵守抖音平台使用条款,用户对使用行为自行承担法律责任。

遇到 bug 或接口失效,直接向仓库提 Issue;有意改进的,可提交 PR 参与 tests/ 覆盖下的开发。

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

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

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

立即咨询