douyin-downloader 上手记:3 步跑通抖音无水印视频批量下载

📅 发布时间:2026/9/15 20:10:02
douyin-downloader 上手记:3 步跑通抖音无水印视频批量下载
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 抖音视频下载工具单条视频、图集、合集、音乐都能下支持按账号整主页批量抓取自带重试、限流和重复下载跳过配置文件改好就能跑。它是怎么做的抓取和下载是两场独立的仗批量下载抖音内容历来有两道坎。第一道是抓作品。一个账号的作品可能上百条要一页一页翻翻到一半可能触发限流、要求验证硬着头皮请求就会断在半路。这个项目的做法是把抓取单独抽成一层core/api_client.py统一负责所有接口请求和签名当接口翻页被卡住时会自动拉起一个真实浏览器继续抓你只需要手动过一下验证码抓回来的作品 ID 再交还给主流程。第二道是下媒体。同一条视频同时存在带水印和无水印的源清晰度还分好几档。core/downloader_base.py会先挑无水印源再从码率表里选最高档下载失败按 1s/2s/5s 递增重试落盘后按 Content-Length 核对体积发现传一半就自动清掉重下。两头中间还有个交警control/里的限流器默认 2 请求/秒和并发队列默认 5 线程保证你既不会因为发请求太猛被针对也不会线程开太多把带宽吃满。三步跑起来从安装到第一次下载第一步拿代码、装依赖git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt cp config.example.yml config.ymlPython 3.8 就行依赖全部来自 PyPI没有需要自己编译的东西。第二步把最小配置填好link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 账号主页链接 path: ./Downloaded/ mode: - post # 只抓发布的作品可换成 like/mix/music thread: 5 database: true cookies: ttwid: YOUR_TTWID odin_tt: YOUR_ODIN_TT第三步拿 Cookie开跑python -m tools.cookie_fetcher --config config.yml # 会弹出登录页登录完按回车 python run.py -u https://www.douyin.com/user/MS4wLjABAAAAxxxx pip install playwright python -m playwright install chromium # 想用浏览器兜底再装-u可以反复传一条链接一次-u就是批量任务。跑起来后终端有 rich 进度条文件按账号/作品组织在 Downloaded/ 下每个作品一个目录视频、封面、原声、元数据 JSON 一应俱全。拆开看看里面有什么不用通读代码只要看懂这套分工douyin-downloader/ ├── run.py # 入口 ├── cli/ # 参数解析、登录流程、进度显示 ├── auth/ # Cookie 管理与 ms_token 维护 ├── core/ │ ├── url_parser.py # 识别链接类型视频/用户/图集/合集/音乐/直播 │ ├── api_client.py # 接口请求、签名、浏览器兜底抓取 │ ├── downloader_factory.py # 按链接类型派发到对应下载器 │ └── user_modes/ # 六种模式策略post/like/mix/music/collect/collectmix ├── control/ # 并发队列、限流、退避重试 ├── storage/ # SQLite 历史库、文件落盘、元数据 ├── config/ # YAML 配置加载与默认值 ├── tools/ # Cookie 自动抓取工具 └── server/ # REST 服务模式--serve一句话串起来链接进来url_parser判断它是什么工厂给出对应的下载器如果是账号链接就走user_modes/里的策略抓作品列表再逐条下载。核心就是这张登记表# core/user_mode_registry.py节选 self._registry { post: PostUserModeStrategy, # 发布的作品 like: LikeUserModeStrategy, # 点赞的作品 mix: MixUserModeStrategy, # 合集 music: MusicUserModeStrategy, # 音乐原声 collect: CollectUserModeStrategy, # 收藏夹需登录 Cookie }每个策略类只需实现一个collect_items()返回作品列表翻页、去重、增量跳过、时间过滤全在基类里做好。所以想加一种新模式往这个目录塞个新文件就行。同套后端还有个桌面版 DouzyBeta 阶段贴链接就能开下任务中心里批量任务的状态、失败重试、输出目录都能直接看到。进阶玩法想实现 X就改这里只想要新作品旧的不想重下increase是磁盘级的本地已有对应文件就跳过重复跑同一条链接不会白下。increase: post: true # 发布的作品跳过已下载 like: false mix: true start_time: 2026-01-01 # 配合使用只要这个时间之后发的作品 end_time: # 留空表示不设上限 number: post: 50 # 也可以只抓前 50 条SQLite 库dy_downloader.db记录的是下载历史供你查询和管理真正决定跳不跳过的是上面的磁盘检查。想调下载速度thread默认 5带宽小的环境降到 3 更稳跑批量可以抬到 8~10被限流时把proxy填上代理地址再跑限流默认 2 请求/秒抓得慢属于正常保护别指望它狂飙。想接到自动化流程里 ⚡python run.py --serve --serve-port 8000 # REST 服务需另装 fastapi uvicorn配合项目自带的 Bark / Telegram / Webhook 通知定时抓作品 下完推消息就能变成例行任务。另外--search 关键词和--hot-board能把搜索结果、热榜直接导出成 JSONL做数据采集很方便。踩坑与排错 症状一提示登录失效或抓作品返回空原因Cookie 过期或ttwid/odin_tt没填对。解法重跑python -m tools.cookie_fetcher --config config.yml在交互式终端里跑run.py时检测到未登录也会自动弹浏览器重新登录并把新 Cookie 写回配置。注意collect/collectmix收藏夹只能作用于当前 Cookie 对应的账号且不能和 post / like / mix 混在一起用。症状二文件下了但放不出来体积偏小原因网络中断文件只传了一半。解法工具下载完会做 Content-Length 完整性校验不完整的会自动清掉重下批量任务里遇到失败把retry_times默认 3调大后重跑同一条链接increase会自动跳过已经成功的作品。症状三只抓到几条进度卡住不动原因接口翻页触发了验证码。解法确认装过 Playwright工具被挡后会自动切到浏览器兜底等你手动完成验证它可以等很久。要心里有数这个兜底只对 post 模式做了完整验证like / mix / music 目前还是依赖接口翻页遇到卡住先换proxy或把thread调小。一句话总结从单条无水印视频到整主页批量下载三步跑通 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考