抖音批量下载指南:从快速上手到配置调优
2026/9/16 16:16:51 网站建设 项目流程

抖音批量下载指南:从快速上手到配置调优

【免费下载链接】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 抖音批量下载工具,粘贴链接后自动完成解析、去水印、画质选择、去重与限流,把视频、图集、合集、音乐分类落地到本地目录。

🚀 5 分钟跑起来:安装与首次运行

环境要求 Python 3.8+。执行以下命令完成部署:

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

打开config.yml,把link改成一个目标链接(支持v.douyin.com短链、/video/单作品、/user/主页)。首次运行前需要获取 Cookie,工具用 Playwright 打开浏览器让你登录,登录后回到终端按 Enter 即自动写回配置:

python -m tools.cookie_fetcher --config config.yml python run.py -c config.yml

命令行参数可以临时覆盖配置文件,比如-u追加链接、-t 8指定并发、-p指定输出目录。跑通一次后,你会在Downloaded/作者名/post/下看到按作品分文件夹的 mp4 文件。

⚡ 原理拆解:解析、限流与去重三件事

工具的核心逻辑集中在三个模块,理解它们就能解释大多数行为。

链接解析与任务分发。core/url_parser.py先把 URL 归类为 video、user、collection、music、gallery 等类型并提取 ID,再由core/downloader_factory.py分发到对应下载器。所以同一份配置文件既能下单个视频,也能下整个主页,不需要区分命令。

限流与重试。批量抓取最容易触发平台风控,control/rate_limiter.py默认把 API 请求压在 2 次/秒,并加入 0~0.5 秒随机抖动,避免固定节奏被识别;control/retry_handler.py按 1s、2s、5s 的间隔自动重试,瞬时网络抖动不需要人工干预。

# control/rate_limiter.py 的核心逻辑(节选) async def acquire(self): async with self._lock: if time.time() - self.last_request < self.min_interval: await asyncio.sleep(self.min_interval - (time.time() - self.last_request)) await asyncio.sleep(random.uniform(0, 0.5)) # 随机抖动,打散请求节奏 self.last_request = time.time()

双重去重与完整性校验。storage/database.py用 SQLite 记录已下载作品,同时扫描本地文件名中的 aweme_id 做第二重判断,两者都命中才跳过。下载完成后storage/file_manager.py会比对 Content-Length,不完整的文件自动清理重试;core/downloader_base.py还给了单条视频 15 分钟兜底时限,防止某一条卡住拖垮整个队列。所以重跑任务不会下重文件,也不会留下一堆 0 字节的废文件。

⚙️ 配置全景图:常用参数速查表

config.example.yml里所有配置项都带中文注释,下表是最常调整的 12 项(取值参考config/default_config.py):

参数默认值作用调优建议
link必填下载链接列表,支持短链一行一个链接,批量时放主页链接
mode[post]下载模式:post/like/mix/music主页链接才生效,收藏夹模式单独使用
number.post0各模式数量上限0 表示全量;先设 50 试跑
thread5下载并发数4~8 比较稳,超过 8 易触发风控
rate_limit2API 请求限流(次/秒)只抓 20 条时降到 1
retry_times3失败重试次数默认即可,延迟为 1s/2s/5s
video_qualityhighest画质档位:original/highest/lowest/1440p 等要原片用 original,每条多一次探测请求
database/database_pathtrue /dy_downloader.dbSQLite 去重与历史建议保持开启,增量依赖它
increase.posttrue增量开关,跳过已下载作品定期跑就保持 true
start_time/end_time时间过滤,YYYY-MM-DD按月归档时必填
folderstyletrue按作品建子目录想平铺到作者目录可设 false
browser_fallback.enabledtrue翻页受限时启动浏览器兜底遇到验证码时保持 headless: false

一份"批量 + 归档"取向的高亮配置,可以直接替换进config.yml

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx path: ./Downloaded/ mode: [post] video_quality: highest # original 更清晰,但每条多一次探测请求 thread: 8 # 并发数,4~8 较稳 rate_limit: 2 # 限流(次/秒),遇到风控就调低 increase: {post: true} # 增量模式:跳过已下载作品 database: true # 去重与历史依赖它 folderstyle: true start_time: "2026-01-01" end_time: "2026-06-30" browser_fallback: enabled: true headless: false # 保留可见窗口,便于手动过验证码

📦 实战配方:三个可直接复用的配置

三个配方共用config.example.yml的结构,只改差异项即可。

# 配方 1:每日增量追踪,只抓新作品 link: [https://www.douyin.com/user/MS4wLjABAAAAxxxx] mode: [post, mix] increase: {post: true, mix: true} database: true # 配方 2:指定月份归档 start_time: "2026-03-01" end_time: "2026-03-31" folderstyle: true # 配方 3:原画批量采集 + 完成通知 video_quality: original thread: 8 notifications: enabled: true providers: - {type: webhook, url: "https://你的机器人地址"}

配方 1:增量追踪关注账号。适用前提:database: true且账号 Cookie 有效。预期效果:每天跑一次,只下载上次之后的新作品,跨模式自动去重,同一个作品不会下两次。

配方 2:按月份补齐历史。适用前提:已知作品发布时间范围,number.post设 0 全量。预期效果:文件按日期_标题_ID落到按月可识别的文件夹里,方便归档检索。

配方 3:高质量素材采集。适用前提:带宽和磁盘充足,original会探测上传原片。预期效果:拿到比转码档大数倍的原片,任务结束后 webhook/Bark/Telegram 推送结果,人不用守在终端。

⚠️ 避坑速查:高频现象与修复

只抓到 20 条作品就停了原因:翻页触发平台风控,API 分页被截断。 修复:确认browser_fallback.enabled: trueheadless: false,浏览器弹窗出现后手动完成验证,别急着关窗口。

删了本地文件,重跑却不重新下载原因:数据库里还有记录,程序按"数据库 + 本地文件"双重判断跳过。 修复:sqlite3 dy_downloader.db "DELETE FROM aweme WHERE author_name = '作者名';"再重跑。

请求频繁失败或 Cookie 报错原因:Cookie 过期。 修复:python -m tools.cookie_fetcher --config config.yml重新登录即可。

下载慢,怀疑并发不够原因:瓶颈通常在rate_limitthread的组合,盲目加并发反而更容易被风控。 修复:先thread: 4+rate_limit: 1稳定跑通,再逐步上调;也可用-t 2临时降并发测试。

进度条刷屏看不清日志原因:调试输出打开了。 修复:保持progress.quiet_logs: true;确实要排查时临时加-v,用完去掉。

更多配置细节(评论采集、直播录制、视频转写、REST API 服务模式)见仓库根目录的README.zh-CN.md和各模块下的AGENTS.md,配置示例以config.example.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),仅供参考

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

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

立即咨询