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 是一个 Python 编写的抖音下载工具,支持无水印下载视频、图文、合集与原声音乐,也能按博主主页链接批量抓取其发布作品,内置进度展示、失败重试和 SQLite 去重。它适合两类人:只想保存少量作品的个人用户,以及需要长期归档博主内容、反复采集素材的内容工作者。
它如何工作:从一条链接到本地文件
整个流程可以拆成输入、处理、输出三步:
- 输入:下载目标有三种给法——写在
config.yml的link列表里、用命令行-u参数临时追加、或在桌面版界面里直接粘贴。支持单条视频、图文、合集、音乐链接、v.douyin.com短链和用户主页链接。 - 处理:程序先解析链接、识别内容类型,再分派给对应的下载器。媒体源默认选无水印地址,并按码率自动挑最高清档位;下载按
thread配置并发(默认 5),限速 2 请求/秒;失败按 1s、2s、5s 指数退避重试(默认 3 次);每个作品会先查 SQLite 记录和本地文件名,已下载过的直接跳过,保证可重复运行。 - 输出:文件落到
Downloaded/下按"作者/模式/作品"组织的目录,附带 JSON 元数据,并汇总一份download_manifest.jsonl。
如何开始:安装、Cookie 与首次运行
安装依赖并复制配置
先克隆代码(仓库地址:https://gitcode.com/GitHub_Trending/do/douyin-downloader),进入项目目录后执行:
pip install -r requirements.txt pip install playwright python -m playwright install chromium cp config.example.yml config.yml后三行安装的是浏览器环境,自动获取 Cookie 和"浏览器兜底"翻页都依赖它,建议新手直接装。
获取 Cookie:为什么要做这一步
Cookie 是程序访问抖音接口的身份凭证,相当于"已登录状态"。没有它,批量抓取主页作品会被风控直接拒绝。工具提供自动获取方式:命令会弹出浏览器,你扫码登录抖音,然后回终端按 Enter,Cookie 会自动写入config.yml。
python -m tools.cookie_fetcher --config config.yml改三处配置并首次运行
打开config.yml,只需关心三处:link(要下载什么)、path(存到哪里)、number.post(下载多少条,0表示不限)。然后:
python run.py -c config.yml \ -u "https://www.douyin.com/user/MS4wLjABAAAAxxxx" \ -t 5 -p ./Downloaded-u是追加链接(可多次传入),-t是并发数,-p是保存目录。命令行参数会覆盖配置文件中的同名项,方便临时试跑。
如何选下载模式:先定目标,再填配置
主页批量下载由mode字段决定,常用模式如下:
| 模式 | 下载内容 | 备注 |
|---|---|---|
post | 博主发布的主页作品 | 最常用的批量模式 |
mix | 博主的合集作品 | 可多选 |
music | 博主音乐列表对应的原声 | 可多选 |
like | 博主点赞过的作品 | 可多选 |
collect/collectmix | 当前登录账号的收藏夹 / 收藏合集 | 仅支持自己登录的账号,且必须单独使用 |
几个配套开关:
number.X:每种模式的数量上限,0为全量。increase.X: true:增量模式,只下载新作品(依赖database: true)。start_time/end_time:按YYYY-MM-DD限定作品发布时间范围。video_quality:original探测上传原片、highest最高转码档(默认)、或指定1080p等分辨率。
哪些类型现在要改用桌面版
💡 一个需要知道的事实:抖音在 2026-08 和 2026-09 两次升级风控后,CLI 直连 API 的方式已被拦截——点赞、收藏夹、收藏合集无法下载,单个视频/图文、合集、音乐的接口调用也已不可用。也就是说,纯命令行目前最稳的主页批量路径是post模式,并且建议保持browser_fallback.enabled: true、headless: false:翻页被限制时程序会启动浏览器,由页面自己发出请求,你只需在弹窗里完成一次验证码。
如果需要下载上述被拦截的类型,或想要图形化操作,项目方提供了基于同一套后端的桌面版 Douzy(目前内测中,可从项目 Releases 页面获取安装包)。它通过内置登录窗口代发请求,不受该风控影响,支持链接粘贴下载、多链接队列、任务状态跟踪与本地作品档案:
任务中心里可以看到每个批量下载任务的成功数、失败数和重试运行入口:
下载完成后,文件在哪里
启用folderstyle: true(默认)时,Downloaded/下的结构大致如下:
Downloaded/download_manifest.jsonl:本次所有作品的汇总清单dy_downloader.db:SQLite 去重与历史记录数据库作者昵称/post/(like/、mix/、music/、collect/同理,按模式分目录)2024-02-07_作品标题_aweme_id/:每个作品一个独立文件夹,目录名含作品 ID,天然避免重名覆盖- 视频文件(
.mp4,无水印) *_cover.jpg封面(配置cover: true时)*_music.mp3原声(配置music: true时)*_data.json元数据(配置json: true时,含标题、发布时间、点赞数等)*_comments.json评论(配置comments.enabled: true时)
- 视频文件(
下载过程中若出现文件不完整的情况,程序会比对 Content-Length 自动清理残缺文件并重试,不需要手动善后。
6 个最容易卡住的问题
只抓到 20 条作品就停了?这是翻页触发风控的典型现象。确认browser_fallback.enabled: true、headless: false,浏览器弹出后手动完成验证,不要立刻关闭窗口。
提示 Cookie 失效或登录过期?重新执行python -m tools.cookie_fetcher --config config.yml扫码刷新即可,配置会自动更新。
为什么重复运行不会重复下载?程序用数据库记录加本地文件名双重去重。想强制重下某个作品,要同时删掉它的本地文件夹和数据库记录(sqlite3 dy_downloader.db中DELETE FROM aweme WHERE aweme_id = '...');只删其中一处不生效。
画质不是最清晰的?检查video_quality。默认highest只从转码档里挑;想要上传原片改成original,代价是每条作品多一次探测请求。
只想下几条试试?把number.post设成 1 或 5 先跑通流程;想只拿某个时间段的作品,配合start_time/end_time。
不下载视频,只想要作品数据?用--search "关键词"或--hot-board 30命令,结果以 JSONL 文件形式落在Downloaded/search/或Downloaded/hot_board/,适合做数据收集。
下一步行动
- 先把
number.post改为 1,完整跑通"配置 → Cookie → 下载"流程,确认Downloaded/里生成了预期文件。 - 跑通后再放开数量,打开
json: true和cover: true,把元数据和封面一起留存。 - 若要长期跟踪某位博主,开启
increase.post: true,之后定期重跑同一命令即可只拉新作品。
【免费下载链接】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),仅供参考