diff --git a/XBPQ文件夹/xbpq写源自学笔记.docx b/XBPQ文件夹/xbpq写源自学笔记.docx new file mode 100644 index 0000000..bd24a1b Binary files /dev/null and b/XBPQ文件夹/xbpq写源自学笔记.docx differ diff --git a/XBPQ文件夹/xbpq实战更新.md b/XBPQ文件夹/xbpq实战更新.md new file mode 100644 index 0000000..e64e6b9 --- /dev/null +++ b/XBPQ文件夹/xbpq实战更新.md @@ -0,0 +1,30 @@ +首先,xbpq是用最少的参数实现网站配置,所以拿到一个网站,不要盲目的想着把所有参数都提取出来,要根据实际情况,添加需要的参数。 +下边就陆续开始根据日常写源的情况,汇总一下。慢慢加强对教程的理解。 + +https://www.hongguodj1.cc 今天拿红果短剧来练练手。 + +首先,写最基本的,这个不管是简写还是全写都需要写的,写完看看情况,jar里是有一些内置模板的,如果网站结构和内置模板一样,则能正常显示,不能正常显示,则根据情况,添加相应的参数: + +{ + + "主页url": "https://www.hongguodj1.cc/", + "分类url": "https://www.hongguodj1.cc/vod/type/id/{cateId}/page/{catePg}.html", + "分类": "短剧大全$duanjudaquan#闪婚离婚$shanhunlihun#女频恋爱$nvpinlianai#反转爽剧$fanzhuanshuangju#脑洞悬疑$naodongxuanyi#年代穿越$niandaichuanyue#现代都市$xiandaidushi", + } + +这个网站还是比较简单的,写了三个参数就能看了,没有海报图片,下边我们来添加以下这个参数,再看看效果。 +![ec1b72d3f025044a24b0f6610ecd1369](https://github.com/user-attachments/assets/f4086243-36c5-4899-ab48-d33390cdb5d2) ![8feb9110449a9183c80a99158e5ab1a0](https://github.com/user-attachments/assets/a6e2d855-875e-4d26-b5e9-75b56171c34f) + +{ + + "主页url": "https://www.hongguodj1.cc/", + "分类url": "https://www.hongguodj1.cc/vod/type/id/{cateId}/page/{catePg}.html", + "分类": "短剧大全$duanjudaquan#闪婚离婚$shanhunlihun#女频恋爱$nvpinlianai#反转爽剧$fanzhuanshuangju#脑洞悬疑$naodongxuanyi#年代穿越$niandaichuanyue#现代都市$xiandaidushi", + "图片": "data-src=\"&&\"", + "图片前缀": "https://www.hongguodj1.cc" + + } + + 现在已经能正常显示图片了,愉快的观影吧。后续会陆续汇总其它参数的添加,今天这几个参数都比较简单,就不贴网站源码了,照着教程就能实战。 + ![0a82e26cd0342dccc5fb66b97b6ddcd3](https://github.com/user-attachments/assets/f15e6c77-f805-45f2-81b2-0ea8e93161cf) + diff --git a/XBPQ文件夹/xbpq最新笔记.txt b/XBPQ文件夹/xbpq最新笔记.txt new file mode 100644 index 0000000..a3c5738 --- /dev/null +++ b/XBPQ文件夹/xbpq最新笔记.txt @@ -0,0 +1,295 @@ +1. XBPQ 是什么 +①、属于 TVBox 家族里的「csp_XBPQ」引擎,纯字符串规则写法,无需 Python/JS 基础。 +②、同一条规则既能让点播 App(TVBox、影视仓、Pluto)直接刮削网页,也能让直播源自动分组、嗅探。 +③、与 drpy、py 相比:学习成本最低,调试最快;与 JSON 直连相比:可逆向无接口站点。 +2. 核心语法一张图 +① 截取 : 起点&&终点 +② 二次截取 : 起点&&终点||新起点&&新终点 +③ 拼接 : '+' 前后可混写字符串 / 变量 +④ 分类指定 : 默认–a&&b||电影–c&&d||电视剧–e&&f +⑤ JSON : data.list[1].name 下标从 1 开始 +⑥ 转义 : 保留字 $ # & * [ ] 前加 \\ +⑦ 变量 : {cateId} {catePg} {area} {year} {class} {by} {act} {wd} +⑧ 筛选 : 类型$类型值#剧情$剧情值 … +⑨ 嗅探词 : 多个用 # 分隔,如 m3u8#mp4#flv +⑩ 链接前缀/后缀: 自动补全相对路径 +3. 字段清单(ext 内全部) + | 字段 | 说明 | 示例 | | | +| ------------- | -------- | -------------------------------------------------------------------------- | - | ----------------- | +| 主页url | 入口 | `https://www.xxx.com` | | | +| 分类url | 列表页 | `https://www.xxx.com/vodshow/{cateId}--{area}------{catePg}---{year}.html` | | | +| 分类 | 自建频道 | `电影$1#电视剧$2#综艺$3#动漫$4` | | | +| 筛选 | 可留空,自动识别 | `外部json 或 直接写{}` | | | +| 数组 | 列表循环体 | `
&&
` | | | +| 标题 | 片名 | `title="&&"` | | | +| 图片 | 封面 | `data-original="&&"` | | | +| 链接 | 详情页 | `href="&&"` | | | +| 副标题 | 更新集数 | `&&` | | | +| 嗅探词 | 正片格式 | `m3u8#mp4#flv#akamaized.net` | | | +| 播放数组 | 播放线路块 | `class="stui-content__playlist clearfix">&&` | | | +| 播放列表 | 单集 | `` | | | +| 播放标题 | 线路名 | `h3&&/h3` | | | +| 播放链接 | 真实地址 | `href="&&"` | | | +| 直接播放 | 直播开关 | `1` 开启,`0` 关闭 | | | +| 链接前缀/后缀 | 补全 | `http://cdn.xxx.com` / `.m3u8` | | | +| 搜索url | 搜索入口 | `https://www.xxx.com/search.php?wd={wd}` | | | +| 搜索数组/标题/图片/链接 | 同上逻辑 | … | | | +| 二次截取 | 不同页面不同规则 | \`电影– | | 电视剧–
    &&
\` | +4. 极速模板(直接改 3 处即可上线) +{ + "key": "极速演示", + "name": "极速┃BPQ", + "type": 3, + "api": "csp_XBPQ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "主页url": "https://www.你的目标站.com", + "分类url": "https://www.你的目标站.com/vodshow/{cateId}--------{catePg}---.html", + "分类": "电影$1#电视剧$2#综艺$3#动漫$4", + "数组": "
&&
", + "标题": "title=\"&&\"", + "图片": "data-original=\"&&\"", + "链接": "href=\"&&\"", + "副标题": "&&", + "播放数组": "class=\"stui-content__playlist clearfix\">&&", + "播放列表": "", + "播放链接": "href=\"&&\"", + "嗅探词": "m3u8#mp4#flv" + } +} + +分类url 就是: +“告诉 TVBox,点左边哪个频道,就去加载哪一页列表”的那串网址模板。 +写法只有 3 步 5 个符号,真的傻子也能会。 +一、先背模板(一共 5 个符号) +https://域名/目录/{cateId}--------{catePg}---.html +符号解释(按出现顺序): +| 符号 | 叫法 | 作用 | +| ---------- | --- | --------------------------- | +| `{}` | 大括号 | **占位符**,TVBox 会自动把里面文字换成真实值 | +| `cateId` | 频道号 | 对应你写的“分类”里 `$` 后面的数字 | +| `catePg` | 页码号 | 翻页时 TVBox 自动 +1 | +| `-` 或 `--` | 分隔线 | 照抄网站格式,几个横线就写几个 | +| `.html` | 后缀 | 网站是啥就写啥,也有 `.asp` 或 `/` | +二、3 步填空白(拿真实站点练手) +1、打开网站列表页,随便点“电影”→ 第 2 页,地址栏得到: +https://www.80kv.com/vodshow/1--------2---.html +2、把会变动的数字换成占位符: +原:/vodshow/1--------2---.html +模板:/vodshow/{cateId}--------{catePg}---.html +类型{cateid},剧情{calss},地区{area},年份{year},排序{by},{letter}字母,语言{lang},翻页{catepg} +3、把域名补全,放进规则: +"分类url": "https://www.80kv.com/vodshow/{cateId}--------{catePg}---.html" +三、对应“分类”写法(必须配对) +"分类": "电影$1#电视剧$2#综艺$3#动漫$4" +用英文 # 分隔,千万别用中文“#”,写死法(基础) + +一、先搞懂“数组”到底截什么 +1、打开列表页源码,找到“每一部影片”的最外层盒子。 + 目标:让 XBPQ 知道“从哪开始循环”。 + + + +2、写“数组”字段 +原则:把“循环头”和“循环尾”分别粘进去,中间内容任意,XBPQ 会自动把两段之间的所有片段当成一条记录。 +"数组": "
&&
" +二、再截“播放数据”——两大步 +播放数据 = 播放数组(线路块) + 播放列表(单集) + 播放链接(真实地址) +下面用“详情页”真实源码演示: + +

线路①

+ + + +

线路②

+ +1、先框住“线路块”——播放数组 +特征:每个线路最外层相同的 " +2、再框住“单集”——播放列表 +特征:每集都是 集名,用 最稳。 +"播放列表": "" +3、最后拿“真实地址”——播放链接 +特征:href="地址",把引号里的内容截出来。 +"播放链接": "href=\"&&\"" +4、(如果地址是相对路径,别忘了加前缀) +"链接前缀": "https://www.demo.com" +记住口诀: +“先圈大盒子(数组),再圈小盒子(播放数组),最后拿链接(播放链接)” + +下面把「写错一个字段」对应「TVBox 会怎么崩」全部列出来 +| # | 写错字段 | 典型错误写法举例 | TVBox 表现 / 报错特征 | 快速验证方法 | | | +| -- | ------- | --------------------------------- | --------------------------- | ----------------------------------- | - | ------- | +| 1 | 主页url | 漏写 `https://` 或末尾多一个 `/` | 首次加载就提示“获取主页失败” | 电脑直接访问该地址看是否 200 | | | +| 2 | 分类url | 占位符写错,如 `{catePg}` 写成 `{page}` | 点分类一直显示第 1 页,翻页不动 | 把 `{catePg}` 换成 2,手动拼 URL 看能否出第 2 页 | | | +| 3 | 分类 | 用了中文符号 `电影$1;电视剧$2` | 左侧频道列表直接空白 | 确认用英文 `#` 分隔 | | | +| 4 | 数组 | 前后特征串写反 / 中间缺 `&&` | 列表整页空白,日志提示“0 条数据” | 把源码粘到 Notepad++ 搜索特征串是否存在 | | | +| 5 | 标题 | 把 `title="&&"` 写成 `title=&&`(漏引号) | 所有片名显示 `undefined` 或整条 HTML | 看源码里引号到底包不包 | | | +| 6 | 图片 | 截到相对路径却忘记 `图片前缀` | 封面全部裂图 | 浏览器 F12 看图片地址是否完整 | | | +| 7 | 链接 | 详情页相对路径没加 `链接前缀` | 点片名直接 404 | 复制 TVBox 日志里的详情地址到浏览器 | | | +| 8 | 副标题 | 特征串换行符不同(Win vs Unix) | 更新集数那一行全空白 | 打开源码显示换行符,统一复制 | | | +| 9 | 搜索url | 用了 `{wd}` 却大小写写错 `{WD}` | 搜索任何关键词都“无结果” | 手动 `search.php?wd=长风渡` 看能否出结果 | | | +| 10 | 搜索数组 | 与主列表数组特征不同却直接复用 | 搜索页空白,日志显示“0 条” | 单独抓 `/search.php` 的 HTML 再写一套搜索特征 | | | +| 11 | 播放数组 | 把 `

` 一起圈进来当尾点 | 详情页只出现 1 条线路(实际多线路) | 看源码只数 `
    ` 尾巴,别用 `

` | | | +| 12 | 播放列表 | 用 `` 结果把 `` 也截入 | 每集标题出现两次“第01集第01集” | 改成 `&&` 或 `>&&<` | | | +| 13 | 播放链接 | 继续用相对路径却忘 `链接前缀` | 点击播放 404,日志地址缺域名 | 复制播放页源码里的 `href` 看是否完整 | | | +| 14 | 嗅探词 | 漏写 `m3u8` 只写 `mp4` | 能嗅到地址但无法播放(被 302 广告) | 在电脑抓包看实际返回是不是 `.m3u8` | | | +| 15 | 链接前缀 | 末尾多写 `/` 导致 `//play` | 播放 404,地址出现双斜杠 | 统一让前缀 **无末尾斜杠**,后缀自己补 `/` | | | +| 16 | 直接播放 | 直播源写成 `0` | 直播频道点进去却跳 WebView 解析 | 直播源必须 `1` | | | +| 17 | 筛选 | 把 `类型$动作片` 写成 `类型=动作片` | 筛选面板空白或无法勾选 | 确认用 `$` 分隔键值,用 `#` 分隔多选项 | | | +| 18 | JSON 数组 | 下标从 0 开始写 `data.list[0].name` | 片名全错位或 undefined | XBPQ 规定下标从 **1** 开始 | | | +| 19 | 二次截取 | 漏写“默认–”直接写 `电影–xxx` | 非电影分类全部空白 | 第一段必须写 \`默认–规则 | | 电影–规则\` | +| 20 | 转义 | 源码里已有 `"` 却忘了前加 `\` | JSON 校验直接失败,TVBox 无法导入 | 用在线 JSON 校验器先过一遍格式 | | | + +嗅探词: +10 秒「浏览器抓包」自己扩 +电脑 Chrome 打开影片播放页 → F12 → Network → 筛选框输入 m3u8 +点播放,抓到第一条 Name 列出现 xxxx.m3u8(或 .mp4/.ts) +把 网址最后一段 复制出来,例如 +https://cdn.xxx.com/202502/3f6e9.m3u8?authkey=1200 +只要域名后面 第一个“?”前的后缀 → .m3u8 +继续换不同站点抓 3-5 次,把新后缀累加进嗅探词,用 # 隔开即可。 +实测 90% 站点 5 个词以内就能命中。实测 ≤10 个几乎无感;超过 20 个才可能在低端盒子出现 1-2 秒延迟 + +自己抓“当天”广告域名 +电脑 Chrome 打开影片页 → F12 → Network → 点播放。 +筛选框输入 m3u8 前先输入 ad(或 doubleclick、googlesyndication 等广告关键字)。 +找到返回 302/200 且最前面带广告关键词的域名,例如 +https://ad.mgdmt.com/xxxx +把 ad.mgdmt.com 复制下来。 +直接扔进 ads 数组最前面,立即生效,不用重启盒子。 + +一、什么场景“必须”二次截取? +同一页里,不同分类的 HTML 结构完全不同 +例:电影模块每部片在
+  电视剧模块却用
+如果只写一条“数组”,必定有一类空白 → 要用二次截取给每类单独指定特征串。 +同一页里,置顶/推荐位结构跟普通列表不同 +例:前面 6 条是“大图”,后面是普通小图;大图多一层
+一次截取会把两种盒子混到一起 → 标题/图片字段错位 → 二次截取先砍掉“大图”区,再截普通区。 +详情页多线路区域结构不同 +例:线路①用
    +  线路②用
    +播放数组一次只能圈一种尾巴 → 必须二次截取按线路名分别给规则。 +二、语法格式(死记 5 秒) +"字段名": "默认–起点&&终点||分类A–起点&&终点||分类B–起点&&终点" +每一段用 两个减号 -- 把“分类名”和“规则”分开 +段与段之间用 两个竖线 || 分隔 +第一段必须写 默认–(否则“其他”情况会空白) +三、完整实战:列表页“电影 vs 电视剧”结构不同 +源码简化示意: + +
    + + +
    + + +
    + + +
    +1、分类字段(先给 ID 对应关系) +"分类": "电影$1#电视剧$2" +2、数组字段 —— 一次截取肯定不行,必须二次截取 +"数组": "默认–
    &&
    ||电视剧–
    &&
    " +解释: +当 TVBox 请求 cateId=1(电影)时,用第一段
    &&
    +当 cateId=2(电视剧)时,自动切换到第二段
    &&
    +如果以后新增“综艺”区,只要继续在后面 ||综艺–新起点&&新终点 即可 +四、播放页实战:多线路结构不同 +

    线路①

    + + +

    线路②

    + +二次截取写法: +"播放数组": "默认–
      &&
    ||线路②–
    &&
    " +标题同样可二次截取: +"播放列表": "默认–
  • &&
  • ||线路②–&&" + +记住核心:搜索数组 = “先圈每一块结果,再拿标题/图片/链接” 的圈地运动。 +一、搜索数组到底截什么? +打开站点搜索页,随便搜“成龙”,F12 看见的结构一定是: + + + + +搜索数组就是告诉 TVBox: +“把每一块
    先整体切下来,再逐条解析” +二、写搜索数组的 3 步(照抄即可) +1、圈整块(搜索数组) +"搜索数组": "
    &&
    " +2、再圈 4 个常用字段(都在同一块里) +"搜索标题": "title=\"&&\"", +"搜索图片": "data-original=\"&&\"", +"搜索链接": "href=\"&&\"", +"搜索副标题": "&&" +3、补前缀(相对路径时) +"搜索链接前缀": "https://www.demo.com" +一句话背下来 +“先圈块(搜索数组),再圈字(标题/图片/链接),相对路径加前缀。” + + +“免嗅探”= TVBox 不再自己去找真实播放地址,而是直接拿你“划红线”那段当最终地址。 +只有网页源码里一眼就能看见 .m3u8 / .mp4 绝对路径时才用;如果地址被 JS 加密、跳转、拼接,就绝对不能开,否则播放 404。 +正常嗅探(不开免嗅探) +播放链接截到: +/play.php?url=aHR0cHM6Ly9jZG4uY29tL2EubTN1OA== +TVBox 会继续访问 /play.php... → 再 302 跳转 → 才拿到真实 .m3u8 +(需要耗时 1-3 秒,可能跳到广告) +免嗅探(开免嗅探,且写 ;;m) +播放链接截到: +https://cdn.xxx.com/2025/06/a.m3u8;;m +TVBox 看见 ;;m 立刻停止,直接把前面当最终地址播放 +(0 秒启动,无广告) +三、什么时候可以写 ;;m(划红线为明文) +✅ 能用的场景 +网页源码里直接出现: +播放 +或者视频标签里: + +❌ 不能用的场景 +截出来是 相对路径 /play/123-1-1.html → 还要后端 302 跳转 +截出来是 加密串 aHR0cHM6Ly9jZG4uY29tL2EubTN1OA== → 还要 base64 解码 +截出来是 参数 /play.php?sign=xxx → 还要后端验签 +截出来是 只有一段 token var url = '/2025/a.m3u8'; → 还要 JS 拼接 +四、XBPQ 里具体怎么写 +先确认是明文 +浏览器 F12 → Elements 搜 .m3u8 或 .mp4,如果看见完整 https://... 就继续。 +写播放链接,尾巴加 ;;m +"播放链接": "href=\"&&\";;m" +打开 TVBox 全局开关 +设置 → 播放器 → 免嗅探 打勾 +(不开勾,写 ;;m 也无效) +"播放链接": "