我们人人要存着必胜的决心,然而我们也要不怕屡败的挫折。——郭沫若《抗战与觉悟》

https://github.com/Evil0ctal/Douyin_TikTok_Download_API

Douyin_TikTok_Download_API 深度解析:高性能异步抖音 / TikTok / Bilibili(及快手扩展)数据抓取与无水印下载的开源工具箱

项目地址:Evil0ctal/Douyin_TikTok_Download_API
在线 Web 应用:https://douyin.wtf | API 文档:https://douyin.wtf/docs
License:Apache-2.0 | Stars:14,938+ | Forks:2,191+


目录导航

  1. 项目定位与愿景
  2. 核心特性总览
  3. 技术栈与模块分层
  4. 支持的主要能力与接口范围
  5. 使用场景示例
  6. 快速体验:本地、Linux一键、Docker部署
  7. API 调用与示例代码
  8. 配置要点(Cookie & 鉴权)
  9. Chrome Cookie Sniffer 扩展介绍
  10. 项目目录结构解读
  11. 性能对比与截图
  12. 常见问题与注意事项
  13. 合规与责任提示
  14. 如何参与与贡献
  15. 总结与展望

1. 项目定位与愿景

Douyin_TikTok_Download_API 是一个“开箱即用”的高性能异步抓取与下载工具,面向抖音 (Douyin)、TikTok、Bilibili(描述中也提及快手扩展方向)。它提供:

  • 批量混合解析(Hybrid Parsing)
  • 视频 / 图集无水印下载(前端 Demo 关闭在线直接下载以保护服务器负载)
  • 丰富 RESTful API(OpenAPI 规范文档)
  • 桌面 / iOS 快捷指令辅助调用
  • 可作为后端服务集成到二次应用中(数据分析、自动归档、舆情采集等)

项目起始时间:2021/11/06,持续维护中。开源但依赖合法使用场景,禁止滥用与非法数据处理。


2. 核心特性总览(来自 README 可考)

类别 特性
解析模式 抖音 / TikTok / Bilibili 混合 URL 解析 (hybrid)
下载能力 视频与图集下载(支持去水印参数 with_watermark=false)
批量处理 批量 URL 输入(无需分隔符,逐行解析)
SDK 提供 PyPI 包 douyin-tiktok-scraper(当前 README 标注“已废弃,需要更新”,谨慎使用)
iOS 集成 快捷指令支持(iOS 端实现快速分享 → 解析 → 下载)
千行级 API 多类生成参数(msToken / verify_fp / X-Bogus / A_Bogus / ttwid 等)
高并发异步 基于 HTTPX + FastAPI + PyWebIO 构建异步响应
OpenAPI 完整 Swagger 文档(/docs)用于调试与探索
可配置性 多平台 Cookie 配置在 config.yaml 中可替换
部署脚本 Bash 一键部署 / systemd 管理 / update 脚本
容器支持 提供官方 Docker 镜像,快速启动
安全提示 明确强调 Cookie 风控与视频直链访问 403 场景处理
多平台扩展 README 中列出 Bilibili 与混合平台 crawler 目录结构

3. 技术栈与模块分层

模块 技术 作用
/app/web PyWebIO 提供简易 Web UI(输入分享链接 → 展示解析结果)
/app/api FastAPI 提供主 REST API(JSON 数据返回 / 下载跳转)
/crawlers HTTPX 异步请求 与各平台 Web API 交互,封装参数生成与数据提取
/crawlers/*/web 平台适配 平台 Cookie、签名参数、设备标识逻辑
/download 下载逻辑 视频流 / 图集资源处理(在本地或服务端处理)
chrome-cookie-sniffer Chrome 扩展 自动提取浏览器 Cookie(辅助配置环境)

亮点:通过独立 crawler 子目录对不同平台做解耦,便于后续扩展新站点或替换请求策略。


4. 支持的主要能力与接口范围(节选)

README 中列出大量“✅”功能点,涵盖:

  • 抖音 / TikTok 视频数据解析、评论获取、直播间数据、用户主页作品 / 喜欢 / 收藏 / 粉丝 / 关注数据等
  • 关键参数生成:msToken, verify_fp, s_v_web_id, X-Bogus, A_Bogus, ttwid
  • 用户 / 作品 ID、sec_user_id 提取
  • Bilibili 视频详情 / 分 P / 收藏夹 / 热门视频 / 实时弹幕等解析

这些 API 均通过 FastAPI 形式对外提供,并以 /api/* 路径暴露。示例(混合解析):

1
GET https://api.douyin.wtf/api/hybrid/video_data?url=<分享或视频URL>&minimal=false

下载接口:

1
GET https://api.douyin.wtf/api/download?url=<分享或视频URL>&prefix=true&with_watermark=false

5. 使用场景示例

场景 说明
内容归档 批量保存指定作者视频 / 图集资源用于内网分析
舆情监测 获取评论 / 回复基础数据(需遵守平台与法律约束)
数据分析实验 提取互动指标、用户行为模式等(教学 / 研究用途)
iOS 集成 通过快捷指令从剪贴板抓取分享链接 → 调用 API → 保存文件
直播洞察 获取直播流数据、礼物榜、在线人数趋势(需合法使用)
反复抓取稳定性验证 通过自建部署 + Cookie 校正,保证响应稳定

6. 快速体验方式

6.1 在线(功能有限)

  • Web 主页:https://douyin.wtf/
    Demo 不保证所有解析可用,在线下载功能已关闭(保护服务器资源)

6.2 Bash 一键部署(Linux)

1
2
3
4
5
6
7
8
9
10
11
wget -O install.sh https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/main/bash/install.sh \
&& sudo bash install.sh

# 管理服务
sudo systemctl start Douyin_TikTok_Download_API.service
sudo systemctl stop Douyin_TikTok_Download_API.service
sudo systemctl enable Douyin_TikTok_Download_API.service
sudo systemctl disable Douyin_TikTok_Download_API.service

# 更新(进入 bash 目录)
cd /www/wwwroot/Douyin_TikTok_Download_API/bash && sudo bash update.sh

6.3 Docker 部署(官方镜像)

1
2
3
4
5
6
7
8
9
10
11
# 拉取镜像
docker pull evil0ctal/douyin_tiktok_download_api:latest

# 快速运行
docker run -d --name douyin_tiktok_api -p 80:80 evil0ctal/douyin_tiktok_download_api

# 带数据卷与环境变量
docker run -d --name douyin_tiktok_api -p 80:80 \
-v /path/to/data:/data \
-e MY_ENV_VAR=my_value \
evil0ctal/douyin_tiktok_download_api

6.4 验证运行

1
2
docker ps
# 浏览器访问 http://localhost 或远程服务器的对应域名

7. API 调用与示例代码

7.1 混合解析(Hybrid Parsing Python示例)

来自 README(PyPI 包目前标注“已废弃,需更新”,谨慎用于生产):

1
2
3
4
5
6
7
8
9
10
11
12
import asyncio
from douyin_tiktok_scraper.scraper import Scraper

api = Scraper()

async def hybrid_parsing(url: str) -> dict:
# Hybrid parsing (Douyin/TikTok URL)
result = await api.hybrid_parsing(url)
print(f"The hybrid parsing result:\n {result}")
return result

asyncio.run(hybrid_parsing(url=input("Paste Douyin/TikTok/Bilibili share URL here: ")))

7.2 REST API 示例(无需 SDK)

1
2
3
4
5
6
7
8
9
10
# 获取视频数据(混合分享链接解析)
curl -G "https://api.douyin.wtf/api/hybrid/video_data" \
--data-urlencode "url=https://v.douyin.com/L5pbfdP/" \
--data-urlencode "minimal=false"

# 无水印下载资源(返回文件流或跳转)
curl -G "https://api.douyin.wtf/api/download" \
--data-urlencode "url=https://www.tiktok.com/@evil0ctal/video/7156033831819037994" \
--data-urlencode "prefix=true" \
--data-urlencode "with_watermark=false"

7.3 FastAPI 集成示意(伪扩展,贴合项目结构思想)

下面是“如何在你自己的服务里代理调用”的参考(不修改原项目逻辑):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from fastapi import FastAPI, HTTPException
import httpx

app = FastAPI()

BASE = "https://api.douyin.wtf/api"

@app.get("/proxy/hybrid")
async def proxy_hybrid(url: str, minimal: bool = False):
async with httpx.AsyncClient(timeout=15) as client:
r = await client.get(f"{BASE}/hybrid/video_data", params={"url": url, "minimal": str(minimal).lower()})
if r.status_code != 200:
raise HTTPException(r.status_code, "Upstream error")
return r.json()

@app.get("/proxy/download")
async def proxy_download(url: str, with_watermark: bool = False):
async with httpx.AsyncClient(timeout=30) as client:
r = await client.get(f"{BASE}/download", params={"url": url, "with_watermark": str(with_watermark).lower(), "prefix": "true"})
if r.status_code != 200:
raise HTTPException(r.status_code, "Download failed")
# 这里按需处理返回的二进制内容(保存 / 转发)
return {"status": "ok", "length": len(r.content)}

注意:真实生产环境需要增加速率限制、异常分类、日志与缓存策略。

7.4 支持的提交格式(节选)

README 展示了常见抖音 / TikTok 分享口令、短链、标准链接、多行批量提交方式。批量模式只需逐行粘贴,无需特殊分隔符。


8. 配置要点(Cookie 与风险控制)

项目强调:

  • 抖音 / TikTok Web API 请求需要有效 Cookie(需自行在浏览器访问对应站点后复制)
  • 相关 Cookie 配置文件路径:
    • /crawlers/douyin/web/config.yaml
    • /crawlers/tiktok/web/config.yaml
    • /crawlers/tiktok/app/config.yaml
  • 频繁或异常访问可能导致 Cookie 失效或封禁,需自行处理防风控(降低抓取频率、分布式轮换、重登录获取)

建议:自建服务时加限速、随机延迟与错误重试,并缩小抓取目标范围,避免触发反爬策略。


仓库中包含 chrome-cookie-sniffer 子目录,提供一个 Chrome 扩展用于:

  • 智能拦截 POST/GET 请求中的 Cookie
  • 5 分钟防重复抓取策略
  • 内容变化才保存(去重)
  • Webhook 回调(Cookie 更新时自动推送)
  • 一键复制 / 导出 / 清理
  • 可扩展新增站点(通过修改 background.jsSERVICES

示例新增站点配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const SERVICES = {
douyin: {
name: 'douyin',
displayName: '抖音',
domains: ['douyin.com'],
cookieDomain: '.douyin.com'
},
bilibili: {
name: 'bilibili',
displayName: 'B站',
domains: ['bilibili.com'],
cookieDomain: '.bilibili.com'
}
};

Webhook 数据格式:

1
2
3
4
5
{
"service": "douyin",
"cookie": "具体的Cookie字符串",
"timestamp": "2025-08-29T12:34:56.789Z"
}

拓展价值:无需手动频繁复制浏览器 Cookie,可半自动维持服务稳定。


10. 项目目录结构解读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
./Douyin_TikTok_Download_API
├─ app
│ ├─ api # FastAPI 路由与模型
│ ├─ download # 下载逻辑
│ └─ web # PyWebIO 网页交互(输入 → 输出)
├─ crawlers
│ ├─ bilibili
│ │ └─ web
│ ├─ douyin
│ │ └─ web
│ ├─ hybrid # 混合解析逻辑封装
│ ├─ tiktok
│ │ ├─ app
│ │ └─ web
│ └─ utils # 参数生成 / 公共工具

特点:

  • 平台粒度拆分清晰
  • hybrid 逻辑独立,支持多端输入统一处理
  • utils 提高复用性与维护效率

11. 性能截图与对比(README 展示可用)

README 截图示例对比官方 API 与自建 API 的响应速度(基准图在 Screenshots/benchmarks)。
说明了:

  • 自建 API 在某些请求上具有显著性能优势(缓存 / 优化策略)
  • 需自行评估稳定性与合法性(非官方 API)

12. 常见问题与注意事项(结合 README 要点整理)

问题 说明
Demo 下载为什么关闭? 防止大批量视频下载拖垮演示服务器
视频直链访问 403 TikTok 直链常有防盗链策略,需通过 /api/download 中转
Cookie 失效怎么办? 重新登录复制新的 Cookie,更新后重启服务
批量解析失败 某些 URL 已失效 / 风控限制 / 频率过快导致暂时拒绝
需要加速吗? 可使用海外(推荐美国)服务器以减少地域限制
是否提供桌面工具? README 推荐第三方桌面下载器项目(TikTokDownload / bilix 等)
PyPI 包还能用吗? 标注“已废弃需要更新”,请优先直接走 API 接口调用
如何安全抓取? 控制频率、避免未授权的大规模用户数据采集、遵守各站服务条款

13. 合规与责任提示

项目声明:

  • 完全免费与开源
  • 使用需遵守 Apache-2.0 许可证
  • 禁止用于违反法律与平台条款的用途(如滥用爬虫造成拒绝服务、侵犯隐私、盗版分发等)
  • 建议仅用于个人学习、研究、内部测试或获得授权的数据处理场景

不当用途风险包括:账号封禁、IP 封禁、法律责任。请谨慎。


14. 如何参与与贡献

  • Star 支持持续维护
  • Issues:提问前先阅读文档与已有讨论
  • Pull Requests:可补充新平台解析、优化参数生成、增强异常处理
  • 参与重构(V4 版本备注中说明可加作者微信“Evil0ctal”备注 GitHub 项目)
  • 赞助渠道:爱发电 / Ko-fi / Patreon(README 徽章区链接)

15. 总结与展望

Douyin_TikTok_Download_API 以“高性能异步 + 多平台混合解析 + 可扩展爬虫组件”的结构,为需要构建视频数据处理、内容归档、交互分析、移动端快捷调用的开发者提供了一个扎实的基座:

价值维度 现状 展望
平台覆盖 抖音 / TikTok / Bilibili 已支持 扩展更多平台(快手等)与直播互动数据深挖
参数生成 X-Bogus / A_Bogus / msToken 等已集成 持续跟进平台参数算法变更
部署方式 Bash / Docker / 手动配置 提供 Kubernetes Helm / 轻量 SaaS 模式文档
工具生态 iOS 快捷指令 / Chrome 扩展 CLI 加强、SDK 重构(PyPI 包更新)
安全与风控 用户需自配 Cookie 未来或可支持半自动 Cookie 轮换策略(合法前提)

如果你正在寻找:

  • “一个能快速解析抖音/TikTok分享链接并本地化存档的工具”
  • “一个可用于数据分析前置采集的接口层”
  • “一个能嵌入自己系统的轻量视频/图集抓取服务”

那么它值得克隆试用。

再次访问项目主页获取最新更新与说明:Evil0ctal/Douyin_TikTok_Download_API


附录:快速复读最关键调用

目标 示例
混合解析 GET /api/hybrid/video_data?url=<分享链接>&minimal=false
下载无水印 GET /api/download?url=<分享链接>&with_watermark=false&prefix=true
本地文档 http://localhost/docs
在线文档 https://douyin.wtf/docs
批量模式 多行 URL 直接粘贴(无需分隔符)

感谢阅读,合理合规使用,祝你构建更有价值的多媒体数据应用。🚀