接口概述
短视频无水印解析服务,内置双引擎——自研引擎与第三方引擎自动容灾。传入分享链接即可获得无水印直链及标题、封面、作者等结构化信息。
Base URL
https://qsy.cwj666.top请求方式
GET / POST
返回格式
JSON (UTF-8)
认证方式
无需认证
跨域 CORS
✅ 已开放
解析引擎
self / third / auto
在线使用页
/在线调试
/api-docs双引擎架构
| 方案 | method | 说明 | 支持平台 |
|---|---|---|---|
| 自研引擎 | self | 直接逆向平台内部接口(抖音 SSR + a_bogus 签名、快手 Apollo SSR),零第三方依赖 | 抖音 douyin / 快手 kuaishou |
| 第三方引擎 | third | 代理接入多家上游解析服务并自动容灾(主接口失败自动切换备用) | 20+ 平台全内容格式 |
| 自动路由 | auto | 有自研引擎的平台走自研,其余自动走第三方(默认) | 全部 |
同一链接可在
self 与 third 间自由切换对比。响应 data.engine 字段标识实际命中的引擎。
快速开始
粘贴分享链接(或整段复制文案)到 /parse,三秒拿无水印直链。
GET 方式
curl · GET
curl "https://qsy.cwj666.top/parse?url=https://v.douyin.com/xxxxx/"
POST · JSON
curl · POST
curl -X POST "https://qsy.cwj666.top/parse" \
-H "Content-Type: application/json" \
-d '{"url": "https://v.douyin.com/xxxxx/"}'
url 支持直接传入 App 复制出来的整段分享文案(含文字、口令等),后端会自动提取其中的 http(s) 链接,无需手动抠链接。
支持平台
接口兼容 20+ 平台,持续更新中。下表为当前已识别的平台标识(platform 字段)。
| 平台 | 平台标识 (platform) | 平台 | 平台标识 (platform) |
|---|---|---|---|
| 抖音 | douyin | 全民(全民K歌/全民TV) | quanmin |
| 快手 | kuaishou | 虎牙 | huya |
| 小红书 | xiaohongshu | YouTube | youtube |
| 微博 | weibo | TikTok | tiktok |
| 绿洲 | oasis | 推特 (Twitter) | twitter |
| B站 (bilibili) | bilibili | instagram | |
| 西瓜视频 | ixigua | 网易云音乐 | netease_music |
| 好看视频 | haokan | 汽水音乐 | water_music |
| 微视 | weishi | 皮皮虾 | pipixia |
| 梨视频 | pearvideo | 皮皮搞笑 | pipigaoxiao |
| A站 (AcFun) | acfun | 豆包 | doubao |
| 知乎 | zhihu | 即梦AI | jimeng |
| 美拍 | meipai | 微信视频号 | channels |
若链接特征未能识别(如新平台短链),
platform 返回 unknown,但不影响解析结果。平台持续更新中,以实际解析结果为准。
GETPOST/parse 解析接口
解析分享链接,返回无水印直链与作品结构化信息。
接口地址
https://qsy.cwj666.top/parse
请求参数
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
url | 是 | string | 作品分享链接,或直接粘贴整段复制文案(自动提取链接) |
method | 否 | string | 解析方案:auto(默认) / self / third。POST 时同样支持传入 |
请求示例
GET · 浏览器直接访问
https://qsy.cwj666.top/parse?url=https://v.douyin.com/xxxxx/
POST · form 表单
curl -X POST "https://qsy.cwj666.top/parse" \
-d "url=https://v.douyin.com/xxxxx/"
成功响应(视频示例)
JSON
{
"code": 200,
"msg": "解析成功",
"data": {
"type": "video",
"author": "JiuHun",
"uid": "jiuhunwl",
"avatar": "https://p26.douyinpic.com/.../100x100/...jpeg",
"like": 1,
"time": 1744551760,
"title": "#步数打卡 #步数排行榜 ...",
"cover": "https://p3-sign.douyinpic.com/.../540:q75.webp",
"url": "https://aweme.snssdk.com/aweme/v1/play/?video_id=...",
"video_url": "https://aweme.snssdk.com/aweme/v1/play/?video_id=...",
"platform": "douyin",
"engine": "self",
"music": {
"title": "原声标题",
"author": "JiuHun",
"url": "https://.../music.mp3"
}
}
}
字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 状态码,200 表示成功 |
msg | string | 结果描述 |
data.type | string | 内容类型:video / image / video_album / live_photo / music |
data.url | string/null | 无水印视频直链(可直接播放/下载);图集/音乐时可能为 null |
data.video_url | string/null | url 的别名,两者取值一致 |
data.images | string[] | 图集图片数组(type=image 时存在) |
data.live_photo | object[] | 实况照片数组,每项含 image/video |
data.title | string | 作品标题/描述 |
data.cover | string | 视频封面图 URL |
data.author | string/object | 作者昵称,或对象 {name, id, avatar} |
data.author_name | string | 作者昵称(兼容字段) |
data.uid | string | 作者平台唯一 ID/抖音号 |
data.avatar | string | 作者头像 URL |
data.author_avatar | string | avatar 的别名,两者取值一致 |
data.like | int/string | 作品点赞数 |
data.time | int | 发布时间,Unix 时间戳(秒) |
data.platform | string | 来源平台标识(见「支持平台」) |
data.engine | string | 实际命中的引擎:self / third_party |
data.music | object | 原声/音乐信息,含 title/url/author/avatar |
data.extra | object | 平台扩展信息(点赞/评论/收藏统计等,原样透传) |
解析成功与否不依赖视频直链。只要上游返回了视频/图片/实况/音乐中的任意一种,即返回
code:200。title/cover/author 等字段为「尽力而为」,取决于上游是否返回;至少 type 与对应资源字段之一必然存在。data 会原样透传上游全部字段(如 extra、hashtags 等),不丢弃任何数据,开发者可直接取用。
GET/proxy 媒体代理
流式媒体代理接口,解决 CDN 防盗链(Referer)导致的 403,可作为播放器 / 图片 / 音频的 src。
接口地址
GET https://qsy.cwj666.top/proxy?url=<媒体直链>
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
url | 是 | string | 需要播放/下载的视频、图片、音频直链 |
特性
- 后端以浏览器 UA 拉取真实内容并流式转发(自动带平台
Referer绕过防盗链) - 支持
Range断点请求,视频可拖动进度条 - 支持
GET/HEAD,自动透传Content-Type/Content-Length/Content-Range - 全局连接池复用,拖动 seek 更流畅
使用示例
HTML
<!-- 视频播放器直接使用代理地址 -->
<video src="https://qsy.cwj666.top/proxy?url=https%3A%2F%2Fv3-dy-o.zjcdn.com%2Fxxx.mp4" controls></video>
<!-- 图片 -->
<img src="https://qsy.cwj666.top/proxy?url=<图片直链>">
<!-- 音乐 -->
<audio src="https://qsy.cwj666.top/proxy?url=<音乐直链>" controls></audio>
使用页面已实现直连优先、代理兜底:播放/下载/封面/音乐一律优先使用 CDN 原直链(全速),仅在防盗链返回 403 时自动回退到本代理接口;下载区同时提供备用代理链接,兼顾速度与可用性。
GET/health 健康检查
返回服务运行状态与版本信息,可用于监控探活。
curl
curl "https://qsy.cwj666.top/health"
JSON
{
"code": 200,
"msg": "短视频无水印解析 API 运行中",
"version": "3.0.0",
"parse": "/parse?url=<分享链接>&method=auto|self|third",
"proxy": "/proxy?url=<媒体直链>",
"engines": { "self": ["douyin", "kuaishou"], "third_party": ["bugpk.com + backup"] },
"web": "/",
"docs": "/docs"
}
内容格式
接口支持全部内容格式,通过 data.type 字段标识。
| 内容格式 | type 值 | 说明 | 主要字段 |
|---|---|---|---|
| 视频 | video | 普通视频/短视频 | url / video_url |
| 图集(图文) | image | 多张图片组成 | images(数组),url 可能为 null |
| 视频图集 | video_album | 既有视频又有图集 | url + images |
| 实况照片 | live_photo | 动态照片(图+短视频) | live_photo(数组),url 取第一段视频 |
| 音乐 | music | 音乐/MV | music.url,url 可能为 null |
请先判断
data.type,再选择对应资源字段(视频取 url、图集取 images、实况取 live_photo、音乐取 music.url),避免因 url 为 null 而误判失败。
状态码与错误
| HTTP 状态码 | code | 说明 | 处理建议 |
|---|---|---|---|
200 | 200 | 解析成功 | 正常取 data |
400 | 400 | 缺少 url 参数 | 检查是否传入 url |
500 | 500 | 解析失败(上游接口不可用或链接无效) | 根据 msg 重试,或确认链接有效性 |
错误响应示例
JSON
{
"code": 500,
"msg": "解析失败: 上游接口未返回可用的视频直链",
"platform": "douyin"
}
仅当链接无效、不支持该平台或上游返回内容不含任何可用内容时,才返回
500。
各语言调用示例
Python(GET)
python
import requests
url = "https://qsy.cwj666.top/parse"
params = {"url": "https://v.douyin.com/xxxxx/"}
resp = requests.get(url, params=params, timeout=15)
data = resp.json()
if data.get("code") == 200:
info = data["data"]
print("视频直链:", info["video_url"])
print("标题:", info.get("title"))
print("封面:", info.get("cover"))
print("作者:", info.get("author"))
else:
print("解析失败:", data.get("msg"))
Python(POST · JSON)
python
import requests
url = "https://qsy.cwj666.top/parse"
resp = requests.post(url, json={"url": "https://v.douyin.com/xxxxx/"}, timeout=15)
data = resp.json()
if data.get("code") == 200:
info = data["data"]
print("视频直链:", info["url"])
print("作者:", info.get("author"))
print("作者抖音号:", info.get("uid"))
print("点赞:", info.get("like"))
else:
print("解析失败:", data.get("msg"))
JavaScript(浏览器 fetch)
javascript
const shareUrl = encodeURIComponent("https://v.douyin.com/xxxxx/");
const resp = await fetch(`https://qsy.cwj666.top/parse?url=${shareUrl}`);
const data = await resp.json();
if (data.code === 200) {
console.log("视频直链:", data.data.video_url);
console.log("标题:", data.data.title);
console.log("封面:", data.data.cover);
}
Node.js
node
const axios = require("axios");
axios.get("https://qsy.cwj666.top/parse", {
params: { url: "https://v.douyin.com/xxxxx/" },
timeout: 15000
}).then(res => {
const data = res.data;
if (data.code === 200) {
console.log("视频直链:", data.data.video_url);
}
}).catch(err => {
console.error("请求失败:", err.message);
});
PHP
php
<?php
$url = "https://qsy.cwj666.top/parse?url=" . urlencode("https://v.douyin.com/xxxxx/");
$resp = file_get_contents($url);
$data = json_decode($resp, true);
if ($data['code'] === 200) {
echo "视频直链: " . $data['data']['video_url'];
}
?>
Java
java
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ParseDemo {
public static void main(String[] args) throws Exception {
String shareUrl = URLEncoder.encode("https://v.douyin.com/xxxxx/", "UTF-8");
URL url = new URL("https://qsy.cwj666.top/parse?url=" + shareUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(15000);
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) sb.append(line);
System.out.println(sb.toString());
}
}
注意事项与使用规范
- 跨域调用:接口已开放 CORS,任意来源前端可直接调用。
- 内容格式判断:先判断
data.type,再取对应资源字段。 - 使用范围:免费公益服务,请勿用于商业、违法违规或侵权场景。
- 上游稳定性:依赖上游服务,无法保证 100% 可用;后端已做主备容灾,偶发失败可重试。
- 链接时效性:返回的媒体直链为临时链接,通常数小时内有效,请勿长期缓存。
- 请求频率:建议合理调用(每秒不超过几次),恶意刷接口可能导致 IP 被限制。
- 异常处理:开发时应兼容
code != 200,并做好网络超时(建议 15 秒以上)。 - 版权声明:解析所得内容版权归原平台及原作者所有,请尊重原创。
接口变更记录
- v3.1.1 · 2026-08-11 — 修复文档页在移动端/小屏右侧出现多余空白(横向溢出):根级
overflow-x兜底、flex/grid 容器min-width:0与max-width:100%、长code/标题强制换行、代码块与表格滚动容器加固。 - v3.1.0 · 2026-08-11 — 自研引擎信息完善:抖音/快手补齐
author对象、author_avatar、comment_count/collect_count/share_count、music.cover、hashtags、extra.statistics等字段,对齐第三方接口;页面全面适配手机端(顶部导航固定、按钮触控、表格/代码横向滚动);播放/下载链接直连优先,仅防盗链 403 时才回退代理。 - v3.0.0 · 2026-08-06 — 双引擎架构:新增自研引擎(
self,抖音/快手,零第三方依赖);method支持 auto/self/third 三方案;前端媒体直连优先,防盗链自动回退代理。 - v2.4.0 · 2026-08-03 — 新增
/proxy流式媒体代理接口(防盗链/跨域、Range 断点、GET/HEAD)。 - v2.3.0 · 2026-08-03 —
url支持整段复制文案;新增在线使用页面与/health。 - v2.2.0 · 2026-08-03 — 支持全内容格式(视频/图集/实况/音乐),解析成功不再依赖视频直链。
- v2.1.0 · 2026-08-03 —
/parse支持 POST;平台识别扩展至 26 个。 - v2.0.x · 2026-08-03 — 完整透传上游字段;新增双字段兼容(
url/video_url等)。 - v2.0.0 · 2026-08-02 — 完整结构化字段(标题/封面/作者/统计);
platform平台识别;统一响应结构;开放 CORS。 - v1.0.0 · 2026-08-01 — 初版,仅返回
video_url。