所有接口 免鉴权、无配额限制,直接 GET 调用即可。最常用的三件事:
# 1. 解析一集(元数据 + 官方试看直链) curl "https://llvipapi.pages.dev/api/parse?url=https://v.qq.com/x/cover/mzc00200803dr6b/c4102g9a01t.html" # 2. 拿一部剧的全部选集 curl "https://llvipapi.pages.dev/api/episodes?url=https://v.qq.com/x/cover/mzc00200803dr6b/c4102g9a01t.html" # 3. 在线播放完整版(免费/限免内容,浏览器打开) https://llvipapi.pages.dev/player.html
一站式解析 ⭐推荐接入 — 传一个链接或 cid,直接返回全剧所有集数的直链 JSON(自动选集 + 分组发现 + 批量签名 + H.264)。免费/限免剧集 access=free_full 完整版;VIP 剧集返回官方试看段。
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
url / cid | query | 二选一 | 该剧任意页面链接(单集页/封面页)或剧集 ID |
kind | query | ✗ | zhengpian(默认,仅正片)| all(含预告/彩蛋/采访) |
begin | query | ✗ | 从第几集开始(默认 1,配合 next_begin 分页) |
count | query | ✗ | 单次最多返回集数(默认 40,上限 45) |
{
"code": 0,
"title": "兰香如故",
"episode_all": "全47集",
"total_items": 91, "zhengpian": 38,
"count": 38, "next_begin": null,
"episodes": [
{"n": 1, "vid": "c4102g9a01t", "title": "不争宠只争命!…",
"duration_sec": 2812, "kind": "正片",
"access": "free_full", "full": true,
"link": "https://....ts.m3u8?ver=4"},
{"n": 7, ..., "access": "preview_300s", "full": false, ...}
]
}
# 全剧直链 curl "https://llvipapi.pages.dev/api/resolve?cid=mzc00200803dr6b" # 分页拿 31 集之后 curl "https://llvipapi.pages.dev/api/resolve?cid=mzc00200803dr6b&begin=31"
<?php
$cid = "mzc00200803dr6b";
$data = json_decode(file_get_contents(
"https://llvipapi.pages.dev/api/resolve?cid=" . $cid), true);
foreach ($data["episodes"] as $ep) {
if ($ep["full"]) {
echo $ep["n"] . ". " . $ep["link"] . PHP_EOL;
}
}const data = await fetch( 'https://llvipapi.pages.dev/api/resolve?cid=mzc00200803dr6b' ).then(r => r.json()); // 直接喂给 hls.js 播放(跨域经 /api/hls) const ep1 = data.episodes[0]; new Hls().loadSource( 'https://llvipapi.pages.dev/api/hls?url=' + encodeURIComponent(ep1.link) );
import requests
r = requests.get("https://llvipapi.pages.dev/api/resolve",
params={"cid": "mzc00200803dr6b"}, timeout=60).json()
for ep in r["episodes"]:
print(ep["n"], ep["access"], (ep["link"] or "")[:60])begin 分页。解析播放页 — 从腾讯视频播放页链接中提取 cid/vid,返回该集元数据(时长、大小、分辨率、清晰度列表)与官方匿名试看 MP4 直链。
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
url | query | ✓ | 播放页链接。支持 /x/cover/{cid}/{vid}.html 与 /x/page/{vid}.html 两种格式 |
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 成功;-1 参数错误;-2 上游失败 |
cid / vid | string | 剧集 ID / 单集 ID |
duration_sec / duration_min | number | 时长(秒 / 分钟) |
size_mb | number | 文件大小(MB) |
resolution | string | 分辨率,如 864x486 |
formats[] | array | 全部清晰度档位(id/name/cname/resolution) |
access | string | free_full=匿名可看完整版;preview_Ns=仅 N 秒试看 |
links[] | string[] | MP4 直链(含 vkey,时效 1~2 小时;已按可达性排序,域名节点优先) |
curl "https://llvipapi.pages.dev/api/parse?url=https%3A%2F%2Fv.qq.com%2Fx%2Fcover%2Fmzc00200803dr6b%2Fc4102g9a01t.html"
const url = 'https://v.qq.com/x/cover/mzc00200803dr6b/c4102g9a01t.html';
const res = await fetch(`https://llvipapi.pages.dev/api/parse?url=${encodeURIComponent(url)}`);
const data = await res.json();
if (data.code === 0) {
console.log(data.access, data.duration_min + '分钟', data.resolution);
console.log('试看直链:', data.links[0]);
}import requests
url = "https://v.qq.com/x/cover/mzc00200803dr6b/c4102g9a01t.html"
r = requests.get("https://llvipapi.pages.dev/api/parse",
params={"url": url}, timeout=15).json()
if r["code"] == 0:
print(r["access"], r["duration_min"], "分钟")
print("试看直链:", r["links"][0])按 vid 解析 — 与 parse 等价,但直接接受 11 位 vid(免传完整链接)。适合已有 vid 列表的场景(如配合 /api/episodes)。
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
vid | query | ✓ | 11 位字母数字视频 ID,如 c4102g9a01t |
{
"code": 0,
"vid": "c4102g9a01t",
"cid": "mzc00200803dr6b",
"duration_sec": 2812.57,
"size_mb": 147.2,
"resolution": "864x486",
"access": "preview_180s", // free_full=完整版 | preview_Ns=试看N秒
"mp4": ["http://.../xxx.f2.mp4?vkey=..."] // 多CDN节点,按可达性排序
}
vkey 有效期约 1~2 小时,过期返回 403,请重新请求本接口获取新链接。全量选集 — 传该剧任意页面(单集页或封面页)或 cid,返回全部选集(正片 + 预告 + 彩蛋 + 采访,自动分类)。服务端自动发现分页分组,无 30 集上限。
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
url | query | 二选一 | 该剧任意页面链接(单集页/封面页均可) |
cid | query | 二选一 | 剧集 ID(如 mzc00200803dr6b) |
| 字段 | 类型 | 说明 |
|---|---|---|
title | string | 剧名 |
episode_all | string | 总集数描述,如 全47集 |
updated_to | string | 更新进度描述(可能为空) |
total | int | 选集总条数(含预告/彩蛋等) |
episodes[].vid | string | 单集 ID(配合 /api/preview 或播放器使用) |
episodes[].n | int | 集号(正片的权威集号;预告/彩蛋为分类序号) |
episodes[].label / title | string | 集号标签 / 单集标题 |
episodes[].duration_sec | int | 时长(秒) |
episodes[].kind | string | 正片 或 短片(预告/彩蛋/采访) |
{
"code": 0,
"title": "兰香如故",
"episode_all": "全47集",
"total": 91,
"episodes": [
{"vid": "c4102g9a01t", "n": 1, "label": "1", "duration_sec": 2812, "kind": "正片", "title": "不争宠只争命!…"},
...
]
}
curl "https://llvipapi.pages.dev/api/episodes?url=https://v.qq.com/x/cover/mzc00200803dr6b/c4102g9a01t.html"
const cid = 'mzc00200803dr6b';
const { episodes } = await
fetch(`https://llvipapi.pages.dev/api/episodes?cid=${cid}`).then(r => r.json());
const zhengpian = episodes.filter(e => e.kind === '正片');
console.log(zhengpian.map(e => `${e.n}. ${e.title} (${e.vid})`));import requests
BASE = "https://llvipapi.pages.dev"
eps = requests.get(f"{BASE}/api/episodes",
params={"cid": "mzc00200803dr6b"}, timeout=30).json()["episodes"]
# 批量解析全部限免正片
for e in eps:
if e["kind"] == "正片" and e["n"] <= 6:
p = requests.get(f"{BASE}/api/preview", params={"vid": e["vid"]}).json()
print(e["n"], p["access"], p["mp4"][0][:60])视频直链(完整版)⭐ — 服务端直接返回全片 HLS 直链,无需浏览器参与。免费/限免剧集返回 free_full 完整版;VIP 剧集返回官方试看段。默认输出 H.264 编码(浏览器/播放器/ffmpeg 通吃)。
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
vid | query | 二选一 | 11 位单集 ID |
url | query | 二选一 | 单集播放页链接(自动提取 vid/cid) |
cid | query | 建议 | 剧集 ID(提升解析稳定性) |
guid | query | ✗ | 自定义 16 位设备标识(一般不用传) |
{
"code": 0,
"vid": "n4102j3cnuw",
"cid": "mzc00200803dr6b",
"title": "兰香如故_02",
"duration_sec": 2809.28,
"resolution": "864x486",
"codec": "H.264",
"access": "free_full", // free_full=完整版 | preview_Ns=试看N秒(VIP)
"links": ["https://....v.smtcdns.com/moviets.tc.qq.com/....ts.m3u8?ver=4"]
}
curl "https://llvipapi.pages.dev/api/link?vid=n4102j3cnuw&cid=mzc00200803dr6b"
# 用 ffmpeg 直接合成完整版 MP4(免费/限免集)
LINK=$(curl -s "https://llvipapi.pages.dev/api/link?vid=n4102j3cnuw" | grep -o '"links":\["[^"]*' | cut -d'"' -f4)
ffmpeg -i "$LINK" -c copy 第2集.mp4// 拿直链后用 hls.js 播放(跨域需经 /api/hls 代理)
const { links, access } = await
fetch('https://llvipapi.pages.dev/api/link?vid=n4102j3cnuw').then(r => r.json());
const hls = new Hls();
hls.loadSource('https://llvipapi.pages.dev/api/hls?url=' + encodeURIComponent(links[0]));
hls.attachMedia(videoEl);import requests, subprocess
r = requests.get("https://llvipapi.pages.dev/api/link",
params={"vid": "n4102j3cnuw", "cid": "mzc00200803dr6b"}).json()
print(r["title"], r["access"])
if r["access"] == "free_full":
subprocess.run(["ffmpeg", "-i", r["links"][0], "-c", "copy", "第2集.mp4"])access 字段会如实标注。直链时效 1~2 小时。批量直链 — 一次请求解析多集直链(≤50个 vid),单隔离实例内 6 路并发。配合 /api/episodes 使用:先拿选集列表,再批量校验全部正片。每项含 ti(权威集号标题,如 兰香如故_31)与 n(解析出的集号)。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
vids | string[] | ✓ | 11 位 vid 数组,≤50 个 |
cid | string | 建议 | 剧集 ID |
guid | string | ✗ | 自定义 16 位设备标识 |
{
"code": 0, "count": 3,
"results": [
{"vid": "c4102g9a01t", "ti": "兰香如故_01", "n": 1,
"duration_sec": 2812.57, "access": "free_full", "full": true,
"link": "https://....ts.m3u8?ver=4"},
{"vid": "z4102yxlwzv", "n": 7, "access": "preview_300s", "full": false, ...}
]
}
签名播放信息代理 — 转发浏览器内生成的 cKey 签名请求到腾讯 vd6.l.qq.com/proxyhttp,返回含全片 HLS 直链的播放信息。这是本站播放器实现"免费内容播完整版"的核心。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
buid | string | ✓ | onlyvinfo(只要播放信息) |
vinfoparam | string | ✓ | 签名参数串(含 cKey),由页面内 TVK 内核生成,长度 ≤6000 |
响应为腾讯原始 JSON,关键字段:外层 vinfo(字符串,需二次 JSON.parse)→ vl.vi[0].ul.ui[].url(分片直链)+ preview(可看时长)+ vl.vi[0].ti(权威集号标题,如 兰香如故_31)。
SuperPlayerExport.__leak.tv({vid, appVer, guid, platform}) 即得 8.5 版 cKey(纯 JS AES,服务端兼容)。该步骤必须在浏览器执行,无法在服务端完成。流媒体跨域代理 — 解决腾讯 CDN 无 CORS 头、混合内容限制、部分 IP 节点不可达三类问题。m3u8 播放列表会自动重写所有分片/子列表地址为本代理地址;ts/mp4 透传并支持 Range(拖动进度条)。
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
url | query | ✓ | 腾讯系 CDN 的 m3u8 / ts / mp4 直链(域名白名单:*.tc.qq.com / *.smtcdns.com / *.gtimg.com / *.qq.com / *.qpic.cn,含 IP 直连形式) |
# 播放列表(已被重写为代理地址) curl "https://llvipapi.pages.dev/api/hls?url=%3Cm3u8%E5%9C%B0%E5%9D%80%3E" # 也可直接喂给播放器/ffmpeg ffmpeg -i "https://llvipapi.pages.dev/api/hls?url=%3Cm3u8%E5%9C%B0%E5%9D%80%3E" -c copy out.mp4
| code / 状态 | 含义 | 处理 |
|---|---|---|
0 | 成功 | — |
-1 / 400 | 参数缺失或格式错误 | 检查 url/vid |
-2 / 502 | 上游请求失败 | 重试;持续失败多为腾讯接口变更 |
-3 / 403 | /api/hls 目标域名不在白名单 | 仅支持腾讯系 CDN |
-4 / 403 | 直链过期(vkey 失效) | 重新获取直链 |
1 | 选集数据为空 | 剧可能刚上架或已下架 |
直接调用 /api/link 即可,一个请求拿全片直链:
// ① 拿直链 const { links } = await fetch('https://llvipapi.pages.dev/api/link?url=' + userInput).then(r => r.json()); // ② 引入 hls.js 播放(跨域经 /api/hls 代理) const hls = new Hls(); hls.loadSource('https://llvipapi.pages.dev/api/hls?url=' + encodeURIComponent(links[0])); hls.attachMedia(document.querySelector('video'));
<iframe src="https://llvipapi.pages.dev/player.html#url=<腾讯链接>"> 嵌入。# 1) 拿选集列表 curl -s "https://llvipapi.pages.dev/api/episodes?cid=mzc00200803dr6b" > eps.json # 2) 对每集调 /api/preview 拿直链(或用油猴脚本抓完整版直链) # 3) 逐集下载 ffmpeg -i "直链" -c copy 第1集.mp4