Create 1.md

This commit is contained in:
dlgt7
2025-09-08 12:49:15 +08:00
committed by GitHub
parent ab3bccb6d7
commit 9388b78a4d
+196
View File
@@ -0,0 +1,196 @@
XBPQ 引擎完全指南:TVBox 规则编写教程
一、XBPQ 是什么?
XBPQ 是 TVBox 家族中的 「csp_XBPQ」引擎,专为影视 / 直播类 App 设计的规则解析工具,核心优势如下:
低门槛:纯字符串规则写法,无需 Python/JS 编程基础。
多场景适配:同一条规则可同时支持点播 App(TVBox、影视仓、Pluto 等)的网页刮削,以及直播源的自动分组与嗅探。
灵活高效:对比其他规则类型有明显优势:
vs drpy/py:学习成本最低,调试速度最快;
vs JSON 直连:支持逆向无接口的静态网页站点。
二、核心语法速查表
语法类型 写法示例 说明
基础截取 起点 && 终点 截取 “起点” 与 “终点” 之间的内容
二次截取 起点 && 终点 新起点 && 新终点 按顺序匹配,优先使用前序规则,匹配失败则用后续规则
内容拼接 "前缀"+ 变量 +"后缀" 支持字符串与变量(如 {wd})混合拼接
分类指定 默认–a&&b 电影–c&&d 电视剧–e&&f 为不同分类单独指定规则,第一段必须为 “默认–”
JSON 解析 data.list[1].name 提取 JSON 数据,下标从 1 开始(区别于常规 0 开始)
特殊字符转义 \$、\#、\& 对保留字 $、#、&、*、[、] 需加反斜杠转义
内置变量 {cateId}、{catePg}、{wd} 等 常用变量:频道 ID、页码、搜索关键词、地区、年份等(详见字段清单)
内容筛选 类型$动作#年份$2024 按 “键 $ 值” 筛选,多条件用 # 分隔
播放嗅探词 m3u8#mp4#flv 嗅探指定格式的播放地址,多格式用 # 分隔
链接补全 前缀:http://cdn.xxx.com 自动补全相对路径(如 /play.html → http://cdn.xxx.com/play.html
三、完整字段清单(ext 节点内)
字段 说明 示例
主页 url 站点入口地址 https://www.xxx.com
分类 url 列表页模板(支持变量) https://www.xxx.com/vodshow/{cateId}--{area}--{catePg}--{year}.html
分类 自建频道映射 电影$1#电视剧$2#综艺$3#动漫$4$ 后为频道 ID,与 {cateId} 对应)
筛选 筛选条件(可留空) 类型$动作#地区$中国 或 {}(自动识别)
数组 列表循环体(每部影片的外层容器) <div class="stui-vodlist__box">&&</div>
标题 影片名称 title="&&"(截取 title 属性内内容)
图片 封面图片地址 data-original="&&"
链接 影片详情页地址 href="&&"
副标题 更新状态 / 集数 <span class="pic-text text-right">&&</span>
嗅探词 正片格式筛选 m3u8#mp4#flv#akamaized.net
播放数组 播放线路外层容器 class="stui-content__playlist clearfix">&&</ul>
播放列表 单集容器 <a&&/a>(匹配所有 <a> 标签内的单集)
播放标题 线路名称 h3&&/h3(截取 <h3> 标签内的线路名)
播放链接 单集真实播放地址 href="&&"
直接播放 直播开关(1 = 开启,0 = 关闭) 1(直播源必须设为 1,否则跳转 WebView)
链接前缀 / 后缀 补全相对路径 前缀:http://cdn.xxx.com;后缀:.m3u8
搜索 url 搜索入口模板 https://www.xxx.com/search.php?wd={wd}{wd} 为搜索关键词)
搜索数组 / 标题 / 图片 / 链接 搜索结果解析规则 同 “数组 / 标题 / 图片 / 链接” 逻辑
二次截取 多结构适配规则 ` 默认–<ul>&&</ul> 电视剧–<ol>&&</ol>`
四、极速入门:3 步搭建基础规则
1. 极速模板(直接修改 3 处即可用)
json
{
"key": "极速演示",
"name": "极速┃BPQ",
"type": 3,
"api": "csp_XBPQ",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"主页url": "https://www.你的目标站.com", // 1. 修改为目标站点主页
"分类url": "https://www.你的目标站.com/vodshow/{cateId}--------{catePg}---.html", // 2. 修改为目标站列表页模板
"分类": "电影$1#电视剧$2#综艺$3#动漫$4", // 3. 匹配目标站频道ID
"数组": "<div class=\"stui-vodlist__box\">&&</div>",
"标题": "title=\"&&\"",
"图片": "data-original=\"&&\"",
"链接": "href=\"&&\"",
"副标题": "<span class=\"pic-text text-right\">&&</span>",
"播放数组": "class=\"stui-content__playlist clearfix\">&&</ul>",
"播放列表": "<a&&/a>",
"播放链接": "href=\"&&\"",
"嗅探词": "m3u8#mp4#flv"
}
}
2. 关键步骤详解:分类 url 编写(3 步填空)
分类 url 是 “告诉 TVBox 点击频道时加载哪一页” 的模板,核心是用变量替换动态数字。
步骤 1:背模板(5 个核心符号)
符号 名称 作用
{} 占位符 TVBox 自动替换为真实值(如频道 ID、页码)
cateId 频道号 对应 “分类” 字段中 $ 后的数字
catePg 页码号 翻页时自动 + 1
-/-- 分隔线 照抄目标站 URL 中的格式
.html 后缀 目标站页面后缀(如.asp、/ 等)
步骤 2:提取真实 URL 并替换变量
打开目标站 “电影” 频道第 2 页,复制地址栏 URL:
https://www.80kv.com/vodshow/1--------2---.html
将动态数字(1 = 电影 ID,2 = 页码)替换为变量:
https://www.80kv.com/vodshow/{cateId}--------{catePg}---.html
步骤 3:匹配 “分类” 字段
确保 “分类” 中$后的数字与{cateId}对应: "分类": "电影$1# 电视剧$2#综艺$3# 动漫 \$4"\
3. 关键步骤详解:数组与播放规则编写
核心口诀:先圈大盒子(数组),再圈小盒子(播放数组),最后拿链接(播放链接)。
1)数组:定义列表循环体
数组是 “每部影片的最外层容器”,用于告诉 XBPQ “从哪开始循环解析单部影片”。
示例源码:
html
预览
<div class="stui-vodlist__box"> <!-- 循环头 -->
<a href="/v/123.html" title="长风渡" data-original="/upload/pic.jpg">
<span class="pic-text text-right">更新至20集</span>
</a>
</div> <!-- 循环尾 -->
<div class="stui-vodlist__box">
<a href="/v/124.html" title="玉骨遥" data-original="/upload/pic2.jpg">
<span class="pic-text text-right">更新至36集</span>
</a>
</div>
规则写法:
"数组": "<div class=\"stui-vodlist__box\">&&</div>"
(将循环头和循环尾填入 “起点 && 终点”)
2)播放规则:解析线路与单集
播放规则需配合播放数组(线路块)+ 播放列表(单集)+ 播放链接(地址) 三字段。
示例源码:
html
预览
<!-- 线路块1 -->
<h3>线路①</h3>
<ul class="stui-content__playlist clearfix"> <!-- 播放数组头 -->
<li><a href="/play/123-1-1.html">第01集</a></li> <!-- 播放列表 -->
<li><a href="/play/123-1-2.html">第02集</a></li>
</ul> <!-- 播放数组尾 -->
<!-- 线路块2 -->
<h3>线路②</h3>
<ul class="stui-content__playlist clearfix">
<li><a href="/play/123-2-1.html">第01集</a></li>
</ul>
规则写法:
播放数组(线路块):"播放数组": "class=\"stui-content__playlist clearfix\">&&</ul>"
播放列表(单集):"播放列表": "<a&&/a>"(匹配所有<a>标签内的单集)
播放链接(地址):"播放链接": "href=\"&&\""(提取 href 属性内的地址)
五、进阶技巧:二次截取与免嗅探
1. 二次截取:适配多结构场景
当同一页面中不同分类 / 线路的 HTML 结构不同时,需用二次截取为每个场景单独指定规则。
1)适用场景
不同分类结构不同(如电影用<div class="m-box">,电视剧用<div class="tv-item">);
置顶推荐位与普通列表结构不同;
多播放线路的容器结构不同。
2)语法格式
"字段名": "默认–起点&&终点||分类A–起点&&终点||分类B–起点&&终点"
用–分隔 “分类名” 与 “规则”;
用||分隔不同分类的规则;
第一段必须为 “默认–”(处理未匹配的场景)。
3)实战示例:列表页多分类适配
源码简化:
html
预览
<!-- 电影区 -->
<div class="m-box"><a title="电影A" href="/v/123.html">…</a></div>
<div class="m-box"><a title="电影B" href="/v/124.html">…</a></div>
<!-- 电视剧区 -->
<div class="tv-item"><a title="剧集A" href="/v/234.html">…</a></div>
<div class="tv-item"><a title="剧集B" href="/v/235.html">…</a></div>
规则写法:
分类字段:"分类": "电影$1#电视剧$2"
数组字段(二次截取):
"数组": "默认–<div class=\"m-box\">&&</div>||电视剧–<div class=\"tv-item\">&&</div>"
2. 免嗅探:0 秒启动播放(明文地址专用)
免嗅探让 TVBox 直接使用截取的地址播放,无需二次解析,适用于源码中直接可见完整播放地址的场景。
1)适用条件(必须同时满足)
源码中直接出现完整地址(如https://cdn.xxx.com/a.m3u8);
地址无需跳转、解密或拼接。
2)规则写法
播放链接字段末尾加;;m
"播放链接": "href=\"&&\";;m" 或 "播放链接": "<video src=\"&&\";;m"
开启 TVBox 全局开关:设置 → 播放器 → 免嗅探(打勾)
3)禁止使用场景
地址为相对路径(如/play/123.html);
地址为加密串(如 base64 编码)或参数(如/play.php?sign=xxx);
地址需 JS 动态生成。
六、排错指南:常见错误与解决方案
序号 错误字段 典型错误示例 TVBox 表现 解决方案
1 主页 url 漏写https://或多/ 加载主页失败 电脑访问 URL 确认是否返回 200
2 分类 url {page}替代{catePg} 翻页不动(始终显示第 1 页) 替换为正确变量,手动拼接 URL 测试
3 分类 用中文;分隔 左侧频道空白 改用英文#分隔
4 数组 起点 / 终点写反或漏&& 列表空白(日志显示 0 条数据) 用 Notepad++ 搜索特征串确认是否存在
5 标题 title=&&(漏引号) 片名显示 undefined 按源码补全引号(如title="&&"
6 图片 / 链接 相对路径未加前缀 封面裂图或 404 补充 “链接前缀”(如http://cdn.xxx.com
7 搜索 url {WD}替代{wd} 搜索无结果 改用小写{wd},手动访问搜索 URL 测试
8 播放数组 包含<h3>标签 只显示 1 条线路 仅保留线路容器的特征(如</ul>
9 嗅探词 漏写m3u8 能嗅探但无法播放 抓包补充正确格式(详见 “嗅探词扩展”)
10 二次截取 漏写 “默认–” 未匹配分类空白 第一段添加 “默认–规则”
11 JSON 解析 下标从 0 开始(list[0] 数据错位或 undefined 下标改为从 1 开始
12 转义 未转义" 规则无法导入(JSON 校验失败) 用\"转义引号,在线 JSON 校验器验证格式
七、扩展技巧:嗅探词与广告屏蔽
1. 嗅探词扩展(10 秒抓包法)
电脑 Chrome 打开播放页 → F12 → Network
筛选框输入m3u8,点击播放;
复制抓到的地址后缀(如.m3u8、.mp4),用#添加到 “嗅探词” 字段;
建议保留 5-10 个常用格式(超过 20 个可能导致低端设备延迟)。
2. 广告域名屏蔽
播放页 F12 → Network → 筛选框输入ad(或doubleclick等广告关键词);
复制广告域名(如ad.mgdmt.com);
将域名添加到 TVBox 的ads数组中,立即生效(无需重启)。