本项目是基于 PyWebIO,FastAPI,HTTPX,快速异步的抖音/TikTok数据爬取工具,并通过Web端实现在线批量解析以及下载无水印视频或图集,数据爬取API,iOS快捷指令无水印下载等功能。你可以自己部署或改造本项目实现更多功能,也可以在你的项目中直接调用scraper.py或安装现有的pip包作为解析库轻松爬取数据等.....
一些简单的运用场景:
下载禁止下载的视频,进行数据分析,iOS无水印下载(搭配iOS自带的快捷指令APP 配合本项目API实现应用内下载或读取剪贴板下载)等.....
- 感兴趣一起写这个项目的给请加微信
Evil0ctal
备注github项目重构,大家可以在群里互相交流学习,不允许发广告以及违法的东西,纯粹交朋友和技术交流。 - 本项目使用的
X-Bogus
算法依旧可以正常调用Douyin以及TikTok的API,A-Bogus
算法暂时不会开源。 - 由于Douyin的风控,部署完本项目后请在浏览器中获取Douyin网站的Cookie然后在config.yaml中进行替换。
- 请在提出issue之前先阅读下方的文档,大多数问题的解决方法都会包含在文档中。
- 本项目是完全免费的,但使用时请遵守:Apache-2.0 license
- 本项目有一个闭源的分支版本,包含更多的接口和服务,详情请查看下方的信息。
- Discord: TikHub Discord
- Free Douyin/TikTok API: TikHub Beta API
😾演示站点的在线下载功能已关闭,并且由于Cookie原因,Douyin的解析以及API服务在Demo站点无法保证可用性。
🍔Web APP: https://douyin.wtf/
🍟API Document: https://douyin.wtf/docs
🌭TikHub API Document: https://api.tikhub.io/docs
💾iOS Shortcut(快捷指令): Shortcut release
📦️桌面端下载器(仓库推荐):
/crawlers
- 向不同平台的API提交请求并取回数据,处理后返回字典(dict),支持异步。
/app/api
- 获得请求参数并使用
Crawlers
相关类处理数据后以JSON形式返回,视频下载,配合iOS快捷指令实现快速调用,支持异步。
/app/web
- 使用
PyWebIO
制作的简易Web程序,将网页输入的值进行处理后使用Crawlers
相关类处理接口输出相关数据在网页上。
以上文件的参数大多可在对应的config.yaml
中进行修改
./Douyin_TikTok_Download_API
├─app
│ ├─api
│ │ ├─endpoints
│ │ └─models
│ ├─download
│ └─web
│ └─views
└─crawlers
├─douyin
│ └─web
├─hybrid
├─tiktok
│ ├─app
│ └─web
└─utils
- 网页端批量解析(支持抖音/TikTok混合解析)
- 在线下载视频或图集。
- 制作pip包方便快速导入你的项目
- iOS快捷指令快速调用API实现应用内下载无水印视频/图集
- 完善的API文档(Demo/演示)
- 丰富的API接口:
-
抖音网页版API
- 视频数据解析
- 获取用户主页作品数据
- 获取用户主页喜欢作品数据
- 获取用户主页收藏作品数据
- 获取用户主页信息
- 获取用户合辑作品数据
- 获取用户直播流数据
- 获取指定用户的直播流数据
- 获取直播间送礼用户排行榜
- 获取单个视频评论数据
- 获取指定视频的评论回复数据
- 生成msToken
- 生成verify_fp
- 生成s_v_web_id
- 使用接口网址生成X-Bogus参数
- 提取单个用户id
- 提取列表用户id
- 提取单个作品id
- 提取列表作品id
- 提取列表直播间号
- 提取列表直播间号
-
TikTok网页版API
- 视频数据解析
- 获取用户主页作品数据
- 获取用户主页喜欢作品数据
- 获取用户主页信息
- 获取用户主页粉丝数据
- 获取用户主页关注数据
- 获取用户主页合辑作品数据
- 获取用户主页搜藏数据
- 获取用户主页播放列表数据
- 获取单个视频评论数据
- 获取指定视频的评论回复数据
- 生成msToken
- 生成ttwid
- 使用接口网址生成X-Bogus参数
- 提取单个用户sec_user_id
- 提取列表用户sec_user_id
- 提取单个作品id
- 提取列表作品id
- 获取用户unique_id
- 获取列表unique_id
-
安装解析库:pip install douyin-tiktok-scraper
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: ")))
💡提示:包含但不仅限于以下例子,如果遇到链接解析失败请开启一个新 issue
- 抖音分享口令 (APP内复制)
7.43 pda:/ 让你在几秒钟之内记住我 https://v.douyin.com/L5pbfdP/ 复制此链接,打开Dou音搜索,直接观看视频!
- 抖音短网址 (APP内复制)
https://v.douyin.com/L4FJNR3/
- 抖音正常网址 (网页版复制)
https://www.douyin.com/video/6914948781100338440
- 抖音发现页网址 (APP复制)
https://www.douyin.com/discover?modal_id=7069543727328398622
- TikTok短网址 (APP内复制)
https://www.tiktok.com/t/ZTR9nDNWq/
- TikTok正常网址 (网页版复制)
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
- 抖音/TikTok批量网址(无需使用符合隔开)
https://v.douyin.com/L4NpDJ6/
https://www.douyin.com/video/7126745726494821640
2.84 nqe:/ 骑白马的也可以是公主%%百万转场变身https://v.douyin.com/L4FJNR3/ 复制此链接,打开Dou音搜索,直接观看视频!
https://www.tiktok.com/t/ZTR9nkkmL/
https://www.tiktok.com/t/ZTR9nDNWq/
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
API文档:
在线:https://api.douyin.wtf/docs
API演示:
- 爬取视频数据(TikTok或Douyin混合解析)
https://api.douyin.wtf/api/hybrid/video_data?url=[视频链接/Video URL]&minimal=false
- 下载视频/图集(TikTok或Douyin混合解析)
https://api.douyin.wtf/api/download?url=[视频链接/Video URL]&prefix=true&with_watermark=false
更多演示请查看文档内容......
- 你需要自行解决爬虫Cookie风控问题,否则可能会导致接口无法使用。
- 抖音网页端Cookie(自行获取并替换下面配置文件中的Cookie):
- https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/30e56e5a7f97f87d60b1045befb1f6db147f8590/crawlers/douyin/web/config.yaml#L7
- TikTok网页端Cookie(自行获取并替换下面配置文件中的Cookie):
- https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/30e56e5a7f97f87d60b1045befb1f6db147f8590/crawlers/tiktok/web/config.yaml#L6
- 演示站点的在线下载功能被我关掉了,有人下的视频巨大无比直接给我服务器干崩了,你可以在网页解析结果页面右键保存视频...
- 演示站点的Cookie是我自己的,不保证长期有效,只起到演示作用,自己部署的话请自行获取Cookie。
- 这里有一个视频教程可以参考:https://www.bilibili.com/video/BV1vE421j7NR/
💡提示:最好将本项目部署至美国地区的服务器,否则可能会出现奇怪的BUG。
推荐大家使用Digitalocean的服务器,因为可以白嫖。
使用我的邀请链接注册,你可以获得$200的credit,当你在上面消费$25时,我也可以获得$25的奖励。
我的邀请链接:
https://m.do.co/c/9f72a27dec35
使用脚本一键部署本项目
- 本项目提供了一键部署脚本,可以在服务器上快速部署本项目。
- 脚本是在Ubuntu 20.04 LTS上测试的,其他系统可能会有问题,如果有问题请自行解决。
- 使用wget命令下载install.sh至服务器并运行
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目录并运行update.sh:
cd /www/wwwroot/Douyin_TikTok_Download_API/bash && sudo bash update.sh
💡提示:Docker部署是最简单的部署方式,适合不熟悉Linux的用户,这种方法适合保证环境一致性、隔离性和快速设置。 请使用能正常访问Douyin或TikTok的服务器,否则可能会出现奇怪的BUG。
开始之前,请确保您的系统已安装Docker。如果还未安装Docker,可以从Docker官方网站下载并安装。
首先,从Docker Hub拉取最新的Douyin_TikTok_Download_API镜像。
docker pull evil0ctal/douyin_tiktok_download_api:latest
如果需要,可以替换latest
为你需要部署的具体版本标签。
拉取镜像后,您可以从此镜像启动一个容器。以下是运行容器的命令,包括基本配置:
docker run -d --name douyin_tiktok_api -p 80:80 evil0ctal/douyin_tiktok_download_api
这个命令的每个部分作用如下:
-d
:在后台运行容器(分离模式)。--name douyin_tiktok_api
:将容器命名为douyin_tiktok_api
。-p 80:80
:将主机上的80端口映射到容器的80端口。根据您的配置或端口可用性调整端口号。evil0ctal/douyin_tiktok_download_api
:要使用的Docker镜像名称。
使用以下命令检查您的容器是否正在运行:
docker ps
这将列出所有活动容器。查找douyin_tiktok_api
以确认其正常运行。
容器运行后,您应该能够通过http://localhost
或API客户端访问Douyin_TikTok_Download_API。如果配置了不同的端口或从远程位置访问,请调整URL。
对于更高级的部署,您可能希望自定义Docker命令,包括环境变量、持久数据的卷挂载或其他Docker参数。这是一个示例:
docker run -d --name douyin_tiktok_api -p 80:80 \
-v /path/to/your/data:/data \
-e MY_ENV_VAR=my_value \
evil0ctal/douyin_tiktok_download_api
-v /path/to/your/data:/data
:将主机上的/path/to/your/data
目录挂载到容器的/data
目录,用于持久化或共享数据。-e MY_ENV_VAR=my_value
:在容器内设置环境变量MY_ENV_VAR
,其值为my_value
。
项目的大部分配置可以在以下几个目录中的config.yaml
文件进行修改:
/crawlers/douyin/web/config.yaml
/crawlers/tiktok/web/config.yaml
/crawlers/tiktok/app/config.yaml
需要停止和移除容器时,使用以下命令:
# Stop
docker stop douyin_tiktok_api
# Remove
docker rm douyin_tiktok_api
API速度测试(对比官方API)
项目界面
Start: 2021/11/06
GitHub: @Evil0ctal