ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

douyin-downloader 实战手册:从单条链接到创作者主页的抖音无水印批量下载

douyin-downloader 实战手册:从单条链接到创作者主页的抖音无水印批量下载 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 去重与磁盘增量更新。本文从克隆安装、获取 Cookie讲到三类由浅入深的任务帮你在一个小时内建立稳定的下载流程。它能帮你做什么上手前先明确工具的边界。核心能力与对应场景如下能力对应场景单条无水印下载粘贴视频、图文、合集、音乐链接含 v.douyin.com 短链得到无水印原文件主页批量下载粘贴创作者主页链接按作品、点赞、合集、音乐四种模式取内容增量下载二次运行跳过磁盘已有内容只取新增适合定期同步浏览器兜底API 翻页受限时自动打开真实浏览器继续抓取可人工过验证码可选附加项评论 JSON、作品元数据 JSON、语音转写、完成通知、直播录制、REST API 服务每项能力都对应独立的配置开关不需要全部启用。工作原理速览了解底层流程出问题时可以快速定位卡点。一次运行的主流程是config.yml 与命令行参数→链接解析→API 拉取→并发下载→落盘与历史记录。具体来说core/url_parser.py 先判断链接属于哪种类型单作品、图文、合集、音乐还是用户主页再决定走哪条下载路径。随后 API 客户端按 rate_limit默认每秒 2 次请求另加 0 到 0.5 秒随机抖动拉取作品列表由默认 5 个并发线程下载媒体文件。失败时 control/retry_handler.py 会按 1 秒、2 秒、5 秒的间隔重试最多 3 次。文件写盘后按 Content-Length 校验完整性不完整的文件会被清理并重试。最后记录写入 SQLite 数据库和 download_manifest.jsonl 清单。需要记住的一点增量跳过判断依据的是本地主文件是否存在而不是数据库——删掉文件下次运行就会重新下载。上手指南最小可行路径完整流程共 4 步含浏览器登录约 10 分钟。环境要求Python 3.8支持 macOS / Linux / Windows浏览器兜底与自动获取 Cookie 需要先用 playwright 安装 chromium 浏览器。第 1 步克隆仓库并安装依赖git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader pip install -r requirements.txt预期看到依赖安装完成、无报错。网络慢时可换国内镜像源加速。第 2 步生成配置并填入链接cp config.example.yml config.ymlconfig.example.yml 自带逐行注释。编辑 config.yml 时至少要改两处把 link 换成目标链接把 number.post 设为想要的数量0 表示不限制。第 3 步获取 Cookiepython -m tools.cookie_fetcher --config config.yml终端会拉起浏览器窗口在窗口内完成抖音登录回到终端按回车Cookie 就自动写回配置文件。 提示浏览器兜底功能需要额外安装 chromiumpip install playwright python -m playwright install chromium如果出口受限可在配置文件的 proxy 字段填代理地址。第 4 步跑通第一次下载python run.py -c config.yml预期看到终端出现进度条结束后输出成功与失败计数文件落在./Downloaded/{作者名}/post/{日期}_{标题}_{id}/目录下。同一套后端还有一个桌面端 GUIDouzy目前为内测版本链接下载界面如下图粘贴抖音链接即可识别单作品、主页、合集类型并一键下载三个典型任务三个任务按复杂度递进前一个的输出是后一个的前提。任务一下载单条视频5 分钟目标从一条链接拿到无水印视频文件验证整条链路可用。把 config.yml 的 link 换成单作品链接link: - https://www.douyin.com/video/7604129988555574538 # 单作品链接 number: post: 0 # 单链接下载数量限制不生效 thread: 3 # 单条任务低并发足够执行python run.py -c config.yml等待完成。参数作用推荐值link下载目标/video/、/note/、/collection/ 链接均可number.post每模式数量上限0不限thread并发下载数3完成标志Downloaded/{作者名}/post/下出现对应作品目录.mp4 可正常播放且无水印。 相关模块core/url_parser.py、core/video_downloader.py任务二批量下载创作者作品并控制画质与增量15 分钟单条链路通了这一步切换到主页链接批量取作品、限制数量、指定画质并开启增量让同一个配置可以反复执行。link: - https://www.douyin.com/user/MS4wLjABAAAA6O7EZyfDRYXxJrUTpf91K3tmB4rBROkAw-nYMfld8ss mode: - post # 只取发布作品 number: post: 30 # 上限 30 条 increase: post: true # 下次运行跳过磁盘已有的作品 video_quality: 1080p # 固定画质档匹配不到自动降到最接近档运行同一条命令。创作者发布新作品后再执行一次就只会下载新增的部分。参数作用推荐值mode抓取的内容类型post / like / mix / musicnumber.post每模式数量上限0–1000 为不限increase.post是否启用增量truevideo_quality码率阶梯中取哪一档highest 或 1080p完成标志post 目录下共 30 条作品同一配置第二次运行时绝大多数条目显示跳过只下载新增项。图桌面端的关注界面会同步每位创作者的新作品数可直接从列表触发下载 相关模块core/user_modes/、storage/database.py任务三多模式全量收藏带评论与元数据30 分钟单模式跑通后把多模式、时间范围和数据附加项组合起来形成一个可定期执行的收藏任务。link: - https://www.douyin.com/user/MS4wLjABAAAA6O7EZyfDRYXxJrUTpf91K3tmB4rBROkAw-nYMfld8ss mode: - post # 作品 - like # 点赞 - mix # 合集 number: post: 0 # 不限 like: 0 mix: 0 start_time: 2025-01-01 # 只取此日期之后的作品 end_time: 2026-09-01 # 到此日期为止 json: true # 保存每条作品的元数据 JSON comments: enabled: true # 为每个作品抓取评论 max_comments: 200 # 每作品最多 200 条控制请求量三种模式之间会按作品 ID 跨模式去重同一条内容不会下两次。收藏类的 collect / collectmix 模式必须单独使用不能与上面四种混写且只对当前 Cookie 所属账号生效。任务结束后用数据库核对本次结果sqlite3 dy_downloader.db SELECT aweme_id, title, author_name FROM aweme ORDER BY download_time DESC LIMIT 5;参数作用推荐值mode并行执行的模式数组post like mixstart_time / end_time时间范围过滤格式 YYYY-MM-DD按收藏窗口设定comments.enabled是否抓评论truecomments.max_comments每作品评论上限0–500完成标志作者目录下出现 post/、like/、mix/ 三个子目录每个作品文件旁有 _data.json 和 _comments.json数据库查询能返回最近的下载记录。图桌面端的收藏与喜欢界面对应 collect / collectmix 模式整个收藏夹可一键下载 相关模块core/comments_collector.py、core/metadata.py关键配置详解前三个任务用到了几个高频参数这里把最影响体验的 7 项集中说明每项都附了判断依据配置项默认值作用推荐设置注意事项何时改它thread5并发下载数3–5网络慢或频繁触发风控时降到 3retry_times3失败重试次数3线路不稳可提到 5rate_limit2API 请求频率上限次/秒2不要调高过高易触发风控video_qualityhighest码率阶梯中选哪一档highest要原片时改 original每条作品多一次探测请求increase.posttrue跳过磁盘已有主文件的条目true想强制重下并覆盖时改 falsebrowser_fallback.enabledtrue翻页受限时打开浏览器兜底true人工过验证码时 headless 必须保持 falseprogress.quiet_logstrue进度阶段精简日志true排查问题时保持 true 并加 -v 参数如果只记一条原则下载失败时先降并发与频率而不是继续加大。thread: 5 # 并发下载数普通网络取 3–5 retry_times: 3 # 失败重试次数退避间隔 1/2/5 秒 rate_limit: 2 # 请求频率上限不宜调高 video_quality: highest # 最高转码档改 original 每条多一次探测 increase: post: true # 跳过磁盘已有主文件的条目 browser_fallback: enabled: true # 翻页受限时打开浏览器兜底 headless: false # 显示浏览器窗口便于人工过验证码 progress: quiet_logs: true # 进度阶段抑制日志刷屏性能与稳定性任务跑起来之后性能问题基本落在并发、重试、容量三个旋钮上。并发与限速工具在两层做了控制thread 决定同时下载几个文件默认 5rate_limit 决定 API 请求频率默认每秒 2 次另加 0 到 0.5 秒随机抖动避免固定节奏。日常使用建议thread: 3–5、rate_limit: 2的组合。频繁出现风控提示或超时时先把 thread 降到 3观察两三轮运行再决定是否回调。失败与重试单次请求失败会进入重试循环最多 3 次重试间隔 1 秒、2 秒、5 秒依次拉长。文件下载完成后会按 Content-Length 校验大小不完整的文件自动清理并重试。翻页受限时browser_fallback 拉起真实浏览器继续抓取期间可以人工完成验证码。单条作品重试全部失败不会中断整个任务最终输出失败计数用同一配置再跑一遍增量机制会只补失败的条目。资源占用内存占用较低主要来自并发下载缓冲。磁盘以视频文件为主只保存视频本体时单条作品通常占数 MB 到数十 MB再开启封面、音乐、JSON、评论后文件数量会成倍增加。全量抓取前按「条数 × 单条体积」预留容量更稳妥。SQLite 数据库与 download_manifest.jsonl 清单都很小千条作品后一般仍在 MB 量级不用为此担心。图任务中心界面每个任务的成功/失败计数、重试入口与输出目录位置一目了然常见问题以下 5 个问题覆盖了实际使用中的多数卡点都可以通过改配置或重跑一条命令解决。只拉到 20 条左右就停了原因平台对翻页做了风控API 返回的页数少于实际。确认browser_fallback.enabled: true且headless: false。重新运行任务浏览器弹出时人工完成验证不要提前关闭窗口。若仍受限把 thread 降到 3 再跑。⏱ 预计解决时间约 5 分钟下载内容为空或请求被拒原因Cookie 过期或登录态失效。运行python -m tools.cookie_fetcher --config config.yml重新获取。确认配置文件里 cookies 字段已更新。重新运行下载任务。⏱ 预计解决时间约 3 分钟第二次运行没有跳过已下载的内容原因增量判断依赖本地主文件文件被手动删除或清空会触发重下或者配置里 increase 被设成了 false。检查 increase 中对应模式为 true。检查 Downloaded 下对应作品的主文件是否还在、是否为空文件。想强制重下时把该模式的 increase 设为 false会在当前筛选范围内覆盖。⏱ 预计解决时间约 2 分钟用 collect 或 collectmix 报错原因收藏类模式必须单独使用不能与 post / like / mix / music 混在一起。单独建一个配置文件mode 只写 collect或 collectmix。link 使用自己收藏夹页面的链接。注意该模式只对当前 Cookie 所属账号生效。⏱ 预计解决时间约 2 分钟转写文件没有生成原因转写只对视频作品生效图文作品不产生转写同时需要有效的 API 密钥。确认transcript.enabled: true且作品是视频而非图文。确认 OPENAI_API_KEY 环境变量已设置或 transcript.api_key 已填写。确认 response_formats 包含 txt 或 json。⏱ 预计解决时间约 5 分钟进阶探索日常使用顺了之后可以考虑让工具接入更大的工作流。方向一自动化如果希望定期同步创作者更新把python run.py -c config.yml放进系统定时任务cron配合 increase 增量开关默认行为就是只取新增内容。服务器部署场景仓库自带 Dockerfile构建镜像后把配置文件和下载目录挂载进去即可。方向二二次开发想改请求层的行为签名、分页、风控应对入口在 core/api_client.py主页各模式post / like / mix / music的策略类都放在 core/user_modes/按模式拆文件改单个模式不会波及其他。方向三生态集成需要与其他系统对接时可用python run.py --serve --serve-port 8000启动 REST API 服务需另装 fastapi 与 uvicorn通过 HTTP 提交链接、轮询任务状态实现在 server/app.py。完成通知支持 bark / telegram / webhook 三种渠道见 utils/notifier.pydownload_manifest.jsonl 是逐行 JSON可直接喂给下游分析脚本。从克隆安装、获取 Cookie到单条视频、批量收藏、多模式组合三类任务再到并发与重试参数的调优这条日常使用路径到这里已经完整。打开终端执行上手指南里的第一条命令即可。⚖️ 使用边界本工具仅适用于个人学习、研究与自身账号内容备份等场景不得用于商业用途不得侵犯创作者的版权、隐私及其他合法权益。因使用产生的一切风险与责任由使用者自行承担。【免费下载链接】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),仅供参考
返回列表