自定义源构建指南

嘿!不管是 CMS 还是直链站点,简单配置一下就能用啦!

01. 系统架构

( •̀ ω •́ )✧ 混合动力引擎

Baka 的解析引擎可是很聪明的哦!它知道怎么在速度和通过率之间找到平衡点。

Dio 极速模式

咻——!默认用 HTTP 请求直接拿源码,速度超级快,也不怎么费流量。

WebView 隐身模式

遇到 Cloudflare 或者 5秒盾这种“门卫”时,自动变身成浏览器混进去!

02. 基础配置

填好这些信息,App 就能找到你的网站啦!

字段 说明
name 源名称 唯一哦
baseUrl 站点主页,用来给相对路径补全
searchUrl 搜索页面的链接模板
searchMethod 请求方式:GET (默认) 或 POST
searchParamName 可选。如果无法使用模板,指定参数名来追加关键词 (如 wd)
Search URL 小贴士 (o゚v゚)ノ
推荐使用 {keyword} 当作占位符,比如:https://aa.com/search?wd={keyword}
如果是 POST 模式,searchUrl 填接口地址,关键词会自动放入 Body 里 (默认参数名为 `keyword`,或者通过 `searchParamName` 指定)。

03. CSS 选择器

就像写 CSS 一样简单!告诉我们标题、封面都在哪里。

搜索列表解析

  • searchResultSelector: 每一个结果的小方块 .vod-list li
  • searchItemTitleSelector: 标题 a[title]
  • searchItemLinkSelector: 详情页链接 a.poster
  • searchItemImageSelector: 封面图 img.lazy

剧集列表解析

  • episodeListSelector: 选集列表的大容器 ul.play-list
  • episodeItemSelector: (可选) 每一集的小方块 li
  • episodeLinkSelector: (可选) 播放页链接 a

04. XPath 模式

如果你习惯用 Kazumi 的规则,我们也完全支持哦!

模式切换

只要把 useXPath 设置为 true 就行啦!开启后上面的 CSS 选择器就没有用了哦。
支持字段:xpathSearchList, xpathSearchName, xpathSearchResult 等等。

05. 播放解析 Core

怎么拿到视频地址呢?这里有三种办法!( •̀ .̫ •́ )✧

策略 A: Script 变量提取 推荐

CMS 站点最喜欢把数据藏在 <script> 里了。

playUrlPattern 正则表达式,用来抓那个 JSON 或者 URL。
playerJsVar (可选) 变量名,比如 player_aaaa。如果是 MacCMS,系统会自动帮你解密(Base64/URLDecode)哦!✨

策略 B: Video 标签直链

直链站点专用。直接找到 <video> 或者 <source> 标签就好啦。

字段:videoSelector 例: #player video

策略 C: Iframe 嵌入

如果是云解析,就找 <iframe> 的 src 属性吧。

字段:iframeSelector 例: .player-box iframe

06. 高级玩法 Pro

遇到难搞的网站?这时候就需要拿出杀手锏了!(▀TB▀)ゞ

二次解析 (Second Parse)

有时候从详情页拿到的只是一个中间页地址,还需要再进去“剥一层皮”才能看到视频。

  • needSecondParse: 设置为 true 开启。
  • secondParsePattern: 在中间页里找视频地址的正则。

解析 API (Parse API)

如果网站用了第三方解析接口,我们可以把视频地址传给 API。

  • parseApiUrl: API 地址,比如 https://api.jiexi.com/?url=。会自动把视频链接拼在后面。

07. 反爬对抗

自动防御系统,启动!🛡️ 哪怕网站有验证也不怕。Baka 采用混合动力引擎架构,智能切换策略。

混合动力引擎 Core

Dio 极速模式

默认使用 HTTP (Dio) 直接请求,速度最快,资源消耗最低。

WebView 隐身降级

检测到反爬时,自动切换为 WebView 渲染引擎,模拟真实浏览器绕过限制。

自动触发条件

  • HTTP 状态码是 403 或者 503
  • 页面包含反爬关键词: "正在跳转""安全验证""cloudflare""5秒后自动跳转""人机验证""fl_ua_p"
  • 页面内容极短(<500字符)且不包含预期内容选择器
  • 播放页检测:页面过短或包含 loadFunc/fl_ua_p 但无 video/iframe/player_aaaa

验证码处理 (CaptchaMixin) Pro

针对使用雷池 WAF等验证码系统的站点,Baka 内置了完整的验证码处理流程:

  • 自动识别: 检测页面中的验证码关键词(ds-verify雷池WAF安全检测能力由 等)
  • 图片提取: 自动提取验证码图片 URL 或字节流
  • Cookie 持久化: 验证通过后的 Cookie 自动持久化存储,避免重复验证
  • 支持站点: LMM/路漫漫 等已内置全自动验证码流程
开发者提示 (o゚v゚)ノ
反爬逻辑通过 AntiCrawlMixinCaptchaMixin 两个 Mixin 实现,适配器只需 with AntiCrawlMixin 即可自动获得完整的反爬绕过能力!

08. Kazumi 无缝兼容 New

我们全面支持 Kazumi 规则的原生无脑导入,从复杂的 XPath 到反爬、验证码的抓取,全部包办!

远程规则订阅 推荐

无需手动下载规则文件!Baka 支持直接从 GitHub 远程仓库拉取 Kazumi 规则列表:

  • 官方源: https://github.com/Predidit/KazumiRules — 自动获取最新 index.json 规则列表
  • 大陆加速: 内置 ghfast.top 镜像,中国大陆用户也能快速访问
  • 一键导入: 浏览规则列表 → 点击订阅 → 自动转换为内部格式 → 立即可用
  • 自动更新: 支持检查远程规则更新,保持本地规则最新

直接识别,原生解析

只需导入 Kazumi 规则 JSON,Baka 就会自动转换为内部的高效 XPath 引擎格式:
- searchList, chapterRoads 等全部自动映射
- 完美兼容 antiCrawlerConfig 验证码模式捕获
- 支持原生导出分享你编辑后的 Kazumi 规则!

09. 常见问题 (FAQ)

Q: 搜索不到结果怎么办?
A: 先用浏览器 F12 看看网页结构变没变。有时候网站改版了,选择器也要跟着改哦!
另外,注意检查 searchMethod 是否需要改为 POST。
Q: 视频有声音没画面/无法播放?
A: 很多时候是防盗链在作怪!试着在 headers 里加上 Referer,把源站地址填进去试试看。

09. 完整范例

复制下面的 JSON,改改就能用啦!ヽ(✿゚▽゚)ノ

{
  "id": "anime_demo_01",
  "name": "示例动漫",
  "baseUrl": "https://www.example.com",
  "searchUrl": "https://www.example.com/search/wd/{keyword}.html",
  "searchMethod": "GET",
  "headers": {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "Referer": "https://www.example.com/"
  },
  
  "searchResultSelector": ".module-item",
  "searchItemTitleSelector": ".module-card-item-title a",
  "searchItemLinkSelector": "a.module-card-item-poster",
  "searchItemImageSelector": "img.lazy",
  "searchImageAttribute": "data-original",
  
  "episodeListSelector": ".module-play-list",
  
  "playUrlType": "script",
  "playerJsVar": "player_aaaa",
  "enableAntiBotBypass": true
}

10. 导入与导出

分享你的配置

做好的源怎么分享给朋友呢?我们支持好几种格式:

  • 📄 JSON 原文: 直接复制那一串 JSON 代码。
  • 🔗 baka://协议: App 生成的专用加密链接,看起来像乱码一样。
  • 🌸 kazumi://协议: 如果你有 Kazumi 的源,也可以直接导入!