ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DouK-Downloader 抖音TikTok 作品下载实战指南

DouK-Downloader 抖音TikTok 作品下载实战指南

DouK-Downloader 抖音TikTok 作品下载实战指南

【免费下载链接】TikTokDownloader抖音 / TikTok 平台作品下载/数据采集工具项目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader

你需要把某个抖音账号近三个月的作品全部归档,或者只是想把某条视频的评论数据拉下来做分析——手动抓包写脚本,维护成本太高。DouK-Downloader(原名 TikTokDownloader)是基于 HTTPX 的开源抖音/TikTok 作品下载与数据采集工具,终端交互、Web API、后台监听三种形态都覆盖。

先说两条边界:内置的 xBogus/aBogus 加密参数算法已过期且不再维护,部分接口需要你自备参数生成代码(README 明确标注);付费作品不支持下载。

快速上手:从克隆源码到完成抖音作品下载

  1. 获取源码并装依赖。Python 版本硬指标是 3.12 及以上(README 的 Python 徽章标明的就是 3.12):
git clone https://gitcode.com/GitHub_Trending/ti/TikTokDownloader cd TikTokDownloader pip install -r requirements.txt python main.py
  1. 接受免责声明并生成配置。首次运行会生成settings.json,出现免责声明时输入 YES 确认,该选择会持久化,只问这一次。

  2. 写入 Cookie。这是接口权限和视频画质的前置条件,主菜单选手动输入 Cookie (抖音)粘贴回车,或复制好后选从剪贴板读取 Cookie。获取方法:浏览器登录抖音网页版,F12 打开开发者工具,「网络」选项卡勾选「保留日志」,筛选框输入cookie-name:odin_tt,点开任意作品评论区后复制请求里Cookie的完整值,详见 docs/Cookie获取教程.md。

💡 Cookie 只在失效后才需要重写,平时不用动它。

  1. 完成第一次下载。返回主菜单选终端交互模式→批量下载链接作品(抖音)→手动输入待采集的作品链接,粘贴一个抖音作品链接回车。进度条走完,文件就落在root/folder_name目录下(默认是项目根的Download/),文件名由创建时间、账号昵称、作品描述等拼成。

菜单里直接回车返回上级,任意界面输入 Q 或 q 退出程序。

settings.json 关键参数解析:root、name_format 与 storage_format

配置修改后必须重启程序才生效,没有热加载。下面只讲真正影响行为的 7 个参数,其余保持默认即可。

  • cookie/cookie_tiktok:平台接口的身份凭证,决定接口权限和画质 → 浏览器登录后粘贴完整值,失效再更新 → 最易踩的坑:未登录的 Cookie 会让私密账号、账号页等接口直接失败,画质偏低时第一怀疑对象就是它。
  • root:储存根路径 → 填一个已存在的目录 → 非法路径不会报错退出,而是静默回退到项目根目录,只在日志里留一条警告,文件"消失"多半出在这里。
  • name_format:作品文件命名模板,从id/desc/create_time/nickname/uid/mark/type七键里空格组合,默认create_time type nickname desc→ 按归档习惯自选 → 七键之外出现任何非法键,整条模板作废回退默认组合(src/config/parameter.py的__check_name_format)。
  • storage_format:采集数据持久化格式,可选csv/xlsx/sqlite→ 纯采数据必须配 → 不配时日志会明确提示"不会储存任何数据至文件",数据只过内存不落盘。
  • download:是否下载文件本身,默认true→ 只采数据设为false→ 只配了storage_format忘了关这个开关,磁盘上会多一堆视频文件。
  • max_pages:分页请求次数上限,默认0等价于 99999 → 按账号体量设一个具体值 → 喜欢/收藏接口只返回发布日期而非操作日期,程序必须拉全量再按日期筛选,这个参数是你唯一的量级阀门,不设上限会拉到你怀疑人生。
  • proxy/proxy_tiktok:平台代理地址 → 先手动验证代理可用再填 → 启动时程序会真实请求平台页面测连,超时或报错直接返回 None 静默忽略,务必在日志里确认出现"代理测试成功"字样。

另外两个实用项:run_command可预置启动时直达的菜单指令,免去每次重复点选;旧字段有自动映射(default_mode→run_command等,见src/config/settings.py的rename_params),从老版本升级不用担心配置作废。

部署与进阶:Docker 一行起容器、Web API 服务化

Docker 一行起容器

适用场景:服务器上不想装 Python 环境,或者想用卷把下载产物持久化。

docker pull joeanamier/tiktok-downloader docker run --name tiktok-dl -p 5555:5555 \ -v tiktok_downloader_volume:/app/Volume -it joeanamier/tiktok-downloader

能力边界:Dockerfile 是双阶段构建,最终镜像基于 python:3.12-slim,数据卷挂载在/app/Volume,暴露 5555 端口。容器内访问不到宿主机的浏览器和文件系统,"从浏览器读取 Cookie" 这类依赖宿主环境的入口不可用,Cookie 一律走终端粘贴。

Web API 接口模式:用 HTTP 调用抖音数据采集

适用场景:你已有自己的系统,想通过 HTTP 接口调用抖音作品、评论、搜索等采集能力。

python main.py # 主菜单选择「Web API 模式」 # 随后访问 http://127.0.0.1:5555/docs 查看 Swagger 交互文档

服务监听在0.0.0.0:5555(SERVER_HOST/SERVER_PORT定义在src/custom/static.py),每个接口经src/application/main_server.py的token_dependency校验请求头里的token:

from httpx import post resp = post( "http://127.0.0.1:5555/douyin/comment", json={"detail_id": "0123456789", "pages": 2}, headers={"token": ""}, ) print(resp.json())

⚠️ 注意:src/custom/function.py的is_valid_token()当前恒返回 True,项目默认无需令牌,鉴权实际是放开的。公开部署前必须把它改成固定令牌校验,并对外挂反向代理终结 TLS 与限流,改完可用/token接口自测有效性。

后台监听模式:复制链接自动下载

适用场景:日常随手刷到作品,复制一下链接就希望文件自动落盘。主菜单选后台监听模式后程序常驻,依赖系统剪贴板(pyperclip),窗口关闭即失效,适合挂在专用终端里。

源码导读:一条抖音作品的数据流

跟一条作品链接走一遍,就能看清整条链路:终端菜单、Web API、剪贴板监听三种入口最终都汇入src/application/main_terminal.py的功能分发;链接先经src/link/extractor.py把 iesdouyin 短链展开成标准链接;请求统一由src/interface/template.py的API基类发起,generate_params→request_data→check_response三段式,account.py、comment.py、live.py等子类各自只关心 URL 和游标规则;字段在src/extract/extractor.py统一提取;src/downloader/download.py先把文件写进临时目录,完成后再移入目标目录,并发由信号量限制在MAX_WORKERS = 4(src/custom/static.py);最后src/storage/按storage_format把结构化数据持久化。

三个值得细读的工程设计:

  • 重试与退避:src/tools/retry.py的Retry.retry装饰器按max_retry(默认 5)循环,每轮失败后await wait()智能延时,而不是固定 sleep。
  • 文件魔数校验:src/custom/static.py的FILE_SIGNATURES内置 jpg/png/mp4/mov 等文件头签名,下载完成后据此判断真实类型并纠正后缀,防止"假 mp4"混进归档。
  • Cookie 自动续命:src/application/TikTokDownloader.py的periodic_update_params开了一条守护线程,按COOKIE_UPDATE_INTERVAL(15 分钟)周期刷新 msToken、tt_wid 并回写,长时间挂机采集不用人工干预。

排障速查表:Cookie 失效、代理不生效等常见问题

现象根因处理
下载失败或视频清晰度偏低Cookie 失效或未登录按教程重新获取并写入;私密账号需要已关注该账号且处于登录态的 Cookie
文件没出现在指定目录root非法,已静默回退项目根查日志中 root 警告,改为已存在目录后重启
代理配了却没生效启动测连失败,程序静默忽略手动验证代理可用,确认日志出现"代理测试成功"
采集数据没落盘storage_format未设置设为csv/xlsx/sqlite后重启
批量喜欢/收藏作品很慢接口只返回发布日期,需拉全量再筛选调小max_pages,缩小账号配置里的日期区间
升级后旧作品"丢失"旧版数据在老目录_internal/Volume按 README 更新方案,把旧目录_internal/Volume拷入新版
多开实例行为异常项目未针对多实例优化复制整个项目文件夹,各自独立运行

终止程序或 ffmpeg 录制一律按 Ctrl + C,不要直接关终端窗口;配置改动不重启不生效;批量收藏作品模式只认当前登录账号,暂不支持多账号混采。

写在最后:谁适合用这套工具

个人作品归档、中小规模的抖音/TikTok 账号数据采集、以及把采集能力服务化给自有系统调用,是它最顺手的三类场景;全部逻辑开源可读可改,接口层出问题你自己就能定位。采集与下载行为的责任在你自己——商用前建议先读一遍 README 末尾的免责声明,确认符合你所在环境的法律与平台规则。

【免费下载链接】TikTokDownloader抖音 / TikTok 平台作品下载/数据采集工具项目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进