
手把手拆解 douyin-downloader3 步跑通抖音无水印批量下载全流程【免费下载链接】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 记录下载历史支持增量下载和失败重试。CLI 之外还配套一个叫 Douzy 的桌面端日常下载用它脚本集成用 CLI。能力图谱先说清楚它的边界CLI 版只支持抖音2026-08 起抖音的接口风控Argus 门禁拦截了 CLI 对单个视频、合集、音乐、点赞和收藏的直连接口请求主页作品可以走 Playwright 浏览器兜底但不保证成功。日常下载官方建议用 Douzy 桌面端。无水印下载视频、图文与音频它不重新编码直接获取原始视频文件水印自然不存在。画质可以按档选择默认取最高转码档也可以探测上传原片。抓原始视频文件 → 得到无水印、无转码损失的成片打开music、cover、json开关 → 额外保存背景音乐、封面和作品原始数据设video_quality: original→ 探测上传原片失败自动退回最高转码档批量抓取用户主页作品、合集与音乐mode字段决定抓什么link放主页链接或合集链接number按模式分别限数0表示不限。设mode: [post]配主页链接 → 批量拉取该博主发布的所有作品设mode: [like]、[mix]或[music]→ 改抓其点赞作品、合集或使用的音乐设number.post为具体数字 → 每次运行只下载前 N 条控制磁盘占用增量下载与去重每个作品先检查磁盘上的主文件dy_downloader.db记录作品明细和下载历史download_manifest.jsonl逐行追加下载清单三套记录各司其职。保持increase.post: true→ 已下载的作品直接跳过不重复占流量保持redownload_missing_files: true→ 文件被误删或为空时自动补下打开database: true→ 作品明细和每次任务结果写入 SQLite可查询可回溯失败重试与限速并发下载链路内置了并发队列、速率限制和重试器参数都在配置里也可以在命令行临时覆盖。设thread: 5→ 5 个任务并发下载设retry_times: 3→ 单文件失败后自动重试 3 次填proxy字段 → 全部请求走代理加-t 10参数 → 不改配置本次运行临时把并发调到 10两个版本的关系可以一张表说清维度CLI 命令行版Douzy 桌面版平台仅抖音抖音、TikTok、YouTube、Telegram、X交互YAML 配置 run.py粘贴链接、看进度、浏览档案适用脚本化、定时任务、服务器部署日常下载、本地作品档案管理风控应对主页作品可走 Playwright 浏览器兜底官方推荐的日常使用方式Douzy 桌面端的抖音下载选项页批量下载、画质与产物开关都在这里配置。从零到跑通第一步装环境与依赖整个项目是纯 Python一次装完依赖后面就不用再动环境。git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader python -m pip install -r requirements.txt python -m pip install playwright python -m playwright install chromium跑完无报错即可最后一条会下载 Chromium 内核后面取 Cookie 和浏览器兜底都用它。要求 Python 3.9Windows、macOS、Linux 都行。第二步扫码登录拿 Cookie抖音需要登录态才返回作品数据官方的cookie_fetcher会启动真实浏览器你只管登录它负责把msToken、ttwid等必要键导出成 JSON。cp config.example.yml config.yml python -m tools.cookie_fetcher --config config.yml浏览器窗口弹出后登录抖音回终端按 EnterCookie 保存进config/cookies.jsonconfig.yml会自动引用它。第三步跑第一个下载任务第一次建议拿一个博主主页链接、小数量跑验证整条链路。link: - https://www.douyin.com/user/博主sec_uid mode: [post] number: post: 10python run.py -c config.yml终端会出现 rich 渲染的进度条./Downloaded/作者名/post/下按日期_标题_aweme_id结构生成文件全部参数用python run.py --help查。同一个仓库还带 Douzy 桌面端与 CLI 共享后端逻辑装好环境后两套入口都可用。按任务拆的操作手册把某博主主页作品全量拉下来适用情境你要归档某个博主的全部内容含视频和图文之后不再手动补。你该怎么做在浏览器打开博主主页从地址栏复制/user/开头的完整链接粘进config.yml的linkmode设为[post]number.post设0不限数量或填目标条数加-v运行python run.py -c config.yml -v出问题看详细日志跑完长这样Downloaded/ └── 作者名/ └── post/ └── 2026-03-18_作品标题_aweme_id/ ├── 2026-03-18_作品标题_aweme_id.mp4 ├── 2026-03-18_作品标题_aweme_id_cover.jpg └── 2026-03-18_作品标题_aweme_id_data.json日期取作品发布时间而不是下载时间开cover: true、json: true才会有后两个文件。桌面端以任务列表展示批量抓取状态CLI 侧对应的是终端进度条与汇总统计。持续跟踪某个博主的新增作品适用情境长期跟踪某个创作者的更新每天只拉新增部分老作品不重复下。你该怎么做number.post: 0全量扫描increase.post: true保持增量redownload_missing_files: true保持开启误删的文件能自动补用系统定时器每天跑一次第二次起已有作品跳过只有新增作品进下载队列跑完长这样30 9 * * * cd /path/to/douyin-downloader python run.py -c config.yml这条 crontab 让任务每天 9:30 跑一轮。日志里每个作品标记为跳过或下载SQLite 里的download_history表会留每次任务的总数和成功数方便你核对。增量跟踪跑久了作品按作者和时间自动归档桌面端可以直接翻阅本地档案。把热搜榜和关键词搜索结果导成 JSONL适用情境你要做的是趋势分析而不是囤视频需要的是结构化数据。你该怎么做运行python run.py --hot-board 30拉热搜榜前 30 条换关键词搜索python run.py --search 关键词 --search-max 50两个命令都把结果写成 JSONL 文件用 Python 或 pandas 逐行读取做统计跑完长这样{date: 2026-09-14, aweme_id: 7385xxxx, author_name: 作者昵称, desc: 作品标题, tags: [#话题], recorded_at: 2026-09-14T09:30:00}一行一个作品字段与下载清单download_manifest.jsonl的风格一致接任何分析管道都方便。配置调优与进阶玩法用产物开关控制磁盘占用问题第一次全量下载就塞了几十个文件其实你只要视频本体。video: true music: false cover: false avatar: false json: false效果默认配置只存视频封面、BGM、头像、原始 JSON 全部按需打开每个作品的请求数和文件数都降下来。这几个开关只影响新配置config.yml里已显式写过的值不受影响。原画与最高转码档怎么选问题有些作品是 4K 上传highest拿到的仍是转码档分辨率打了折但original每条作品多一次探测请求。video_quality: original # 也可以指定分辨率1440p / 1080p / 720p / 540p / 360p效果original会探测上传原片比最高转码档大才优先下载探测失败自动回退只关心带宽时指定1080p匹配不到自动降到最接近的可用档。目录结构与命名模板问题跑久了文件散落、博主改名后目录分裂、重名作品互相覆盖。folderstyle: true filename_template: {date}_{title}_{id} author_dir: nickname_uid group_by_mode: true效果模板里保留{id}杜绝重名覆盖author_dir: nickname_uid在作者目录里带上sec_uid改名不会把档案劈成两半group_by_mode按post/like/mix分层不同来源不混放。注意模板变量{author}、{year}等的完整清单在[配置文件示例](https://link.gitcode.com/i/e0dedb3c1c55dd4d9e00fe016be52733)顶部有注释。归档跑顺之后的样子每个博主一个目录作品按发布日期排列查找成本很低。踩坑记录单视频或合集链接下载失败主页链接却正常确认链接是/video/还是/collection/开头换用主页链接 mode: [post]走批量通道确认真实需要单条下载时改用 Douzy 桌面端拉取仓库最新代码风控规则在持续变化 根因2026-08 起抖音 Argus 风控拦截了 CLI 对详情、合集、音乐、点赞类接口的直连请求刷新 Cookie 和重试都绕不过去。跑了几条后全部变成登录提示或空数据看config/cookies.json的最后修改时间重跑python -m tools.cookie_fetcher --config config.yml检查导出结果里msToken、ttwid、odin_tt、passport_csrf_token四个键齐全仍失败就加-v看接口返回原文 根因登录会话过期旧 Cookie 被接口直接拒绝。主页只抓到一小部分作品博主明明发了几百条保持browser_fallback.enabled: true保持headless: false弹出的浏览器里手动完成验证观察日志确认浏览器滚动页数是否到达上限需要更多数据时用number.post分批多跑几轮 根因翻页接口被限流浏览器兜底按滚动次数翻页max_scrolls默认 240到达即停。重跑任务一个都不下载但确实想重新拉检查increase.post的值改成false重新下载并覆盖当前筛选范围内的文件无需清空数据库或删dy_downloader.db根因增量开关先查磁盘主文件存在且非空就跳过这是特性不是故障。文件手动删了任务却不再补下检查redownload_missing_files确认值为true重跑任务验证补下行为 根因开关为false时只要数据库里还有有效下载记录磁盘缺文件也会跳过。录下来的直播视频无法播放确认链接来自live.douyin.com看落盘文件的实际格式多半是 m3u8 播放列表不要把它当视频进剪映 根因直播录制在 CLI 里属于实验功能HLS 源只保存播放列表不是可播放的合并视频。合规与红线工具默认只用于个人观看和个人数据管理别把下载内容二次分发或商用。尊重创作者版权与隐私未经授权不要搬运。控制并发数和频率别用批量任务长时间打接口。平台风控随时会变功能可用性也可能随之波动这是使用这类工具必须接受的前提。下次再刷到想留下的作品把链接贴进link、把number.post设成 10先跑通一条完整链路再谈规模和自动化。【免费下载链接】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),仅供参考