抖音无水印批量下载完整实操:单条、主页、直播,10 分钟跑通 douyin-downloader
2026/9/15 13:26:19 网站建设 项目流程

抖音无水印批量下载完整实操:单条、主页、直播,10 分钟跑通 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 记录去重,跑过几轮也不怕重复。下面每一步都给出命令和预期结果,照着敲即可。

从 0 到第一条无水印视频,5 步走

① 拿到代码

git clone https://gitcode.com/GitHub_Trending/do/douyin-downloader cd douyin-downloader

② 装依赖

pip install -r requirements.txt

装完没有报错提示就算成功;后续浏览器相关功能还会用到 Playwright,第 ③ 步前补装。

③ 拿登录态

pip install playwright && python -m playwright install chromium python -m tools.cookie_fetcher --config config.yml

这条命令由 tools/cookie_fetcher.py 提供:它会打开一个 Chromium 窗口,你在窗口里用手机 App 扫码登录抖音,回到终端按回车,登录态就自动写进config.yml。预期看到Saved N cookie(s)字样,N 大于 4 即可。

④ 写最小配置config.yml

link: - https://v.douyin.com/xxx/ # 换成你的抖音分享链接 path: ./Downloaded/ cookies: msToken: "..." ttwid: "..." odin_tt: "..." passport_csrf_token: "..."

cookies四段直接来自上一步的抓取结果,config.yml不存在就新建,存在的话只补这四段。

⑤ 运行

python run.py

预期:终端出现进度面板,依次走完「初始化 → 解析链接 → 执行下载 → 记录历史」,结尾打印=== Overall Summary ===并给出成功/失败/跳过计数。Downloaded/下按作者名/模式/日期_标题_aweme_id/落一个文件夹,里面是无水印 mp4;dy_downloader.db也生成在工作目录——这是后面增量去重的依据。

走到这里,第一条视频已经躺在硬盘上了。

装依赖 → 拿登录态 → 写配置:完整配置一次写对 📝

刚才是最小路径,这一节把一份日常可用的config.yml补齐。三件事其实是一条线:先pip install装好依赖,再跑 cookie_fetcher 把登录态抓进配置,最后确认下面的字段——顺序错了(比如先下载后登录)就会报 Cookie 无效。

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx # 作品、图文、主页链接都行 path: ./Downloaded/ mode: - post # 可加 like(点赞)/ mix(合集)/ music(原声) number: post: 50 # 只取最近 50 条;0 表示不限量 thread: 5 # 并发下载数,默认 5 retry_times: 3 # 单条失败重试次数 rate_limit: 2 # 每秒最多 2 次请求,内置限速 database: true # 开启 SQLite 去重与历史记录 database_path: dy_downloader.db music: false # 不填默认只存视频,原声按需开 cover: false # 封面 jpg,按需开 json: false # 作品元数据 info.json,按需开 browser_fallback: enabled: true # 翻页被风控时启动浏览器兜底 headless: false # 保持有界面,方便手动过验证

字段含义可以直接查 config/default_config.py,每个键都有注释。

预期:运行python run.py后每个链接逐条推进度条,结尾有统计摘要;文件按作者名/post/...归档,数据库记录同步写入。命令行还能临时覆盖配置:

python run.py -u "https://www.douyin.com/video/7604129988555574538" -t 8 -p ./Downloaded

-u可重复传入追加链接,-t调并发,-p换目录;-v打开 info 日志,排错时用。

四个场景:什么时候换哪种玩法 🎬

单条:链接直接丢命令行

不想动配置文件时,链接用-u追加即可,配置文件里link留空:

python run.py -u "https://v.douyin.com/xxx/" -p ./Downloaded

预期:一个日期_标题_aweme_id文件夹,mp4 无平台水印,同目录可再看到*_cover.jpg*_music.mp3(开关打开时)。图文链接(/note//gallery/开头)走同一入口,图片会整组保存。

整站:主页批量下载

想归档一个创作者,就换成主页链接,其余照抄上面的完整配置:

link: - https://www.douyin.com/user/MS4wLjABAAAAxxxx mode: - post number: post: 50

想连点赞和合集一起存,mode里追加likemix即可,同一个作品跨模式出现时自动去重。跑完Downloaded/作者名/下按模式分层,每条作品独立成夹。桌面版 Douzy 的任务中心也维护着同一批下载档案:

只存某段时间:按发布时间过滤

长期账号只想归档某一阶段的更新时:

start_time: "2024-06-01" end_time: "2024-06-30"

格式YYYY-MM-DD,留空则不过滤。范围外的作品直接跳过,批量下载更可控,请求量也省。

直播间:解析后录制 FLV

链接以live.douyin.com开头时自动切换直播录制:

python run.py -u "https://live.douyin.com/123456789"
live: max_duration_seconds: 3600 # 0 = 录到主播下播

录出的 FLV 保存在Downloaded/{作者}/live/下,可直接播放,另附*_room.json房间元数据。主播下播或 Ctrl+C 中断,已录的字节都会保留。

长期跟踪:增量下载

上面几个场景跑过后,如果你要每周跟进同一个主页,加上这两行再重跑:

increase: post: true database: true

已下载的作品在日志里显示为「跳过」,只补新作品。前提是别动dy_downloader.db——删了它等于失忆。

什么时候调什么参数

作品量超过 200 条,或频繁被风控:把thread降到 2~3、rate_limit保持 2,比硬扛高并发更稳。风控不是速度问题,是频率问题。

主页只能翻出 20 条左右:说明 API 翻页被限制。保持browser_fallback.enabled: trueheadless: false,程序会自动弹出 Chromium 继续拉,期间你在窗口里手动过掉滑块验证码,别急着关窗口。浏览器兜底目前对post模式验证最完整。

要原画或省流量video_quality可选original(原画,探测到上传原片就优先下,每条多一次探测请求)、highest(默认最高转码档)、lowest1080p/720p这类具体档位,匹配不到会自动降级到最接近的可用档。

附件与目录结构covermusicjsonavatar默认全关,需要哪个开哪个。目录由folderstyle(按作品建子夹)、group_by_mode(作者目录下是否再分 post/like 层)、author_dirnickname/sec_uid/nickname_uid)三个键控制,博主改过名的建议切nickname_uid防止目录分裂。

再进一步的可选能力:评论采集(comments.enabled: true,输出*_comments.json)、完成推送到 Bark/Telegram/Webhook(notifications.*)、视频转文字(transcript.enabled: true,需配OPENAI_API_KEY)。用到哪个查哪个,配置注释里都有说明。

常见问题速查

症状大概率原因一句话处理
主页只抓到 20 条左右API 翻页被风控截断确认browser_fallback开着,弹出的浏览器窗口里手动过验证
提示未登录 / 403Cookie 过期或并发过高重跑python -m tools.cookie_fetcher --config config.yml刷新登录态,thread调低
重跑出现重复文件database关了或.db被删保持database: true,SQLite 文件就是去重依据
下了一半的文件损坏网络中断内置 Content-Length 校验会自动清理重试;反复失败就换网络
想重下某条已下过的作品数据库里有记录删掉对应文件目录,再用 sqlite3 删掉aweme表中该条记录,二删其一即可触发重下

Cookie 有效期一般 7~30 天,建议每周左右刷一次,习惯养成后基本不会再被登录态卡住。

整条主线就是:装依赖 → 抓登录态 →config.yml填好链接和目录 →python run.py,四个场景只是同一份配置的变体。下载内容请只用于个人学习与研究,尊重创作者版权,别拿去做商用。下一步建议把Downloaded/dy_downloader.db一起纳入定期备份,然后固定周期重跑同一份增量配置,本地库就会自己跟上每个创作者的新作品。

【免费下载链接】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),仅供参考

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

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

立即咨询