DouK-Downloader 实操指南:从单条保存到批量下载、评论采集与直播录制的完整路径
【免费下载链接】TikTokDownloader抖音 / TikTok 平台作品下载/数据采集工具项目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader
DouK-Downloader 是一款完全开源免费的抖音 / TikTok 作品下载与数据采集工具:批量下载作品和音乐、采集评论和搜索数据、录制直播,采集结果可落成 CSV、XLSX 或 SQLite。想把视频存到本地的个人用户、要定期盯号的创作者、需要接口调用的开发者,都是它的目标人群。
🚀 从零到第一次成功:安装、写 Cookie、下下第一条
先把源码拉下来装环境,程序基于 Python 3.12+,网络请求层用 HTTPX:
git clone https://gitcode.com/GitHub_Trending/ti/TikTokDownloader cd TikTokDownloader uv sync --no-dev # 装依赖;不想用 uv 可改用 pip install -r requirements.txt uv run main.py # 启动Windows 和 Mac 用户也可以直接去项目发布页下载已编译的main可执行文件,解压双击即可(Mac 首次运行需在终端执行xattr -cr 项目文件夹路径解除系统安全限制)。
首次启动会弹出免责声明,按提示接受后,程序会引导你写入 Cookie(浏览器登录抖音的凭据)。Cookie 决定你能拿到的视频分辨率,只配一次,失效了再更新。抓取一份登录态 Cookie 的完整步骤见 Cookie 获取教程,动作如下:
- 用浏览器打开抖音网页版并登录你的账号
- 按
F12打开开发者工具,切换到「网络」选项卡,勾选「保留日志」 - 在筛选器里输入
cookie-name:odin_tt,点击任意作品的评论区触发请求 - 选中请求,复制请求头里完整的 Cookie 值
- 回到程序,选择「手动输入 Cookie」或「从剪贴板读取 Cookie」,粘贴后按提示确认写入配置文件
Cookie 写好后,在主菜单依次选择「终端交互模式」→「批量下载链接作品」→「手动输入待采集的作品链接」,粘贴一条抖音作品链接,按回车。几秒后打开项目根目录下的Download文件夹——第一条视频已经躺在里面,到这里就算跑通了。
🧭 按场景找入口:从保存一条视频到部署服务
不用背功能清单,按你要干的事对号入座。以下能力在终端交互模式和 Web API 模式下大部分都能用:
| 你的目标 | 入口/操作路径 | 关键参数或配置项 |
|---|---|---|
| 保存几条视频 | 终端交互模式 → 批量下载链接作品 | music、static_cover、desc_length |
| 定期采集某账号全部作品 | 终端交互模式 → 批量下载账号作品;账号提前写进配置文件 | accounts_urls中的tab、earliest、latest |
| 只要音乐 | 下载时同步提取音频流 | music: true、storage_format |
| 评论、搜索、热榜数据 | 终端交互模式 → 对应采集项,数据落盘 | storage_format(csv / xlsx / sqlite) |
| 录制直播 | 获取拉流地址后调用 FFmpeg 实时录制 | live_qualities、ffmpeg |
| 后台自动下载 | 主菜单 → 剪贴板监听,复制链接即触发 | 无额外配置 |
| 部署到服务器 | 主菜单 → Web API 接口模式(FastAPI) | token校验、局域网访问 |
抖音(国内)和 TikTok(海外)是两条独立链路:TikTok 侧还需要补齐browser_info_tiktok里的device_id等初始参数,获取方式和取 Cookie 类似,教程末尾有截图示例。
最高频的玩法是账号作品批量采集,建议把账号预置到settings.json,而不是每次手输:
"accounts_urls": [ { "mark": "美食博主", "url": "https://www.douyin.com/user/xxx", "tab": "post", "earliest": "", "latest": "", "enable": true } ]mark是自定义标识,博主改昵称后文件名也会跟着自动更新;tab取post(发布)、like(喜欢)、favorite(收藏);earliest/latest按发布时间筛选。下载的文件会先进临时目录,完整后才移入目标文件夹,已下载的作品自动跳过,所以可以开着做增量采集。
⚙️ settings.json 里只动这几个键
首次运行会自动生成带默认值的settings.json,改完必须重启程序才生效。不用逐行看,值得动的就下面几个:
folder_name:默认Download→ 控制文件落到哪个文件夹 → 想换个归档目录时改。
name_format:默认create_time type nickname desc→ 控制文件名由哪些字段拼成,desc_length(默认 64)和name_length(默认 128)限制描述和总长度 → 嫌文件名长就调小或换字段顺序。
music:默认false→ 控制下载作品时是否同步提取音频 → 只要 BGM 或原声时开。
storage_format:默认空(不记录)→ 控制采集的作品、评论、搜索结果是否持久化到Volume目录,可选csv、xlsx、sqlite→ 用任何数据类功能前必须先设。
proxy/proxy_tiktok:默认空 → 控制请求是否走代理 → 批量采集被限流时再配,平时留空。
timeout/max_retry:默认 10 秒超时、重试 5 次 → 控制网络抖动时的表现 → 网络差的环境调大timeout即可。
性能上不用折腾:chunk(单次接收数据块,默认 2MB)和max_size(单文件上限,默认不限)保持默认;程序内置智能延时机制防止请求过频被平台限流,别为了快把并发和重试往死里调。
🔌 进阶:把下载能力挂到局域网当服务
主菜单选「Web API 接口模式」(或在settings.json配置run_command)后,服务监听0.0.0.0:5555,默认允许局域网访问。浏览器打开http://127.0.0.1:5555/docs就能看到 FastAPI 自动生成的接口文档。
所有业务接口用请求头token鉴权;本地单跑时默认令牌通过,部署到公网或局域网共享前建议自定义 token,修改点在src/custom/function.py的is_valid_token()。端点命名规律是/douyin/xxx和/tiktok/xxx,覆盖短链解析、作品详情、账号作品、评论、直播地址、搜索、热榜,具体以/docs页面为准。最短调用示例:
from httpx import post response = post( "http://127.0.0.1:5555/douyin/comment", json={"detail_id": "0123456789", "pages": 2}, # 采集该作品 2 页评论 headers={"token": "你的token"}, ) print(response.json())想放到服务器上长期跑,直接用 Docker 更省事:
docker pull joeanamier/tiktok-downloader docker run -p 5555:5555 -v tiktok_downloader_volume:/app/Volume -it joeanamier/tiktok-downloader排错速查
| 现象 | 最可能原因 | 一步处理 |
|---|---|---|
| 只能下到低分辨率视频 | Cookie 未登录或已过期 | 重新抓一份登录态 Cookie 写入配置 |
| 请求失败、返回空数据 | Cookie 失效或 IP 被限流 | 更新 Cookie,或配置proxy走代理 |
| TikTok 功能不可用 | 缺device_id等初始参数 | 按教程补齐browser_info_tiktok |
| 私密账号作品下不了 | 未登录,或登录账号没关注对方 | 换用已关注该账号的登录态 Cookie |
| 改了配置没反应 | 没有重启程序 | 改完settings.json后重启 |
两条交互约定:程序提示输入时,直接回车返回上级菜单,输入Q结束运行;运行中要停止请按Ctrl + C,别直接点终端关闭按钮,否则正在写的文件会中断。
合规边界与下一步
本项目按 GNU GPL v3.0 协议开源,二次分发需遵守该协议;采集数据仅供个人学习研究,请勿用于未授权的内容传播或商业抓取,付费作品不在支持范围。内置加密参数算法已停止维护,部分接口可能失效,遇到异常以项目最新文档为准。下一步动作:打开settings.json把storage_format改成csv,跑一次评论采集,到Volume目录里验收第一份数据文件;Cookie 失效时回看 Cookie 获取教程 即可。
【免费下载链接】TikTokDownloader抖音 / TikTok 平台作品下载/数据采集工具项目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考