抖音无水印批量下载完整实操:单条、主页、直播,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里追加like、mix即可,同一个作品跨模式出现时自动去重。跑完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: true且headless: false,程序会自动弹出 Chromium 继续拉,期间你在窗口里手动过掉滑块验证码,别急着关窗口。浏览器兜底目前对post模式验证最完整。
要原画或省流量:video_quality可选original(原画,探测到上传原片就优先下,每条多一次探测请求)、highest(默认最高转码档)、lowest或1080p/720p这类具体档位,匹配不到会自动降级到最接近的可用档。
附件与目录结构:cover、music、json、avatar默认全关,需要哪个开哪个。目录由folderstyle(按作品建子夹)、group_by_mode(作者目录下是否再分 post/like 层)、author_dir(nickname/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开着,弹出的浏览器窗口里手动过验证 |
| 提示未登录 / 403 | Cookie 过期或并发过高 | 重跑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),仅供参考