核心概念:ComicGlass 插件系统
要明白 ComicGlass 是如何工作的,它本身不直接抓取任何网站的内容,它的核心是一个“阅读器引擎”,而“从哪里获取漫画”这个功能是由“插件”来完成的。

(图片来源网络,侵删)
- 插件:本质上是一小段代码,它知道如何与特定的漫画网站进行“沟通”(解析网页、提取漫画列表、获取图片链接等)。
- 插件类型:ComicGlass 支持两种插件:
- 官方插件:由 ComicGlass 开发者维护,通常是一些非常流行且稳定的网站。
- 自定义插件:由用户自己创建或从社区获取,用于添加官方未支持的网站。
我们将专注于创建一个自定义插件。
第一步:分析您的网站(最重要的一步)
在编写任何代码之前,您必须彻底分析您的网站,这是最关键、最耗时的一步,您需要像一个侦探一样,找出 ComicGlass 需要的所有信息。
请准备好以下信息:
-
漫画列表页:
(图片来源网络,侵删)- URL 格式:
https://your-website.com/comics/或https://your-website.com/comics/list。 - 页面结构:这个页面上是如何展示所有漫画的?是每个漫画都在一个
<div class="comic-item">里面,还是每个都在一个<li>标签里?用浏览器的“检查元素”功能(右键 -> 检查)来查看 HTML 结构。 - 关键信息:在列表项中,如何找到漫画的和详情页链接可能在
<h3>标签里,链接可能是<a href="/comics/detail/123">。
- URL 格式:
-
漫画详情页:
- URL 格式:详情页的 URL 有没有规律?
https://your-website.com/comics/detail/{comic_id}。 - 章节列表:在详情页上,章节是如何排列的?是在一个
<ul class="chapter-list">里吗?每个章节的链接是什么样子的? - 关键信息:如何提取章节的和阅读页链接?
- URL 格式:详情页的 URL 有没有规律?
-
漫画阅读页:
- URL 格式:阅读页的 URL 通常包含章节 ID,
https://your-website.com/comics/read/{chapter_id}。 - 图片容器:最核心的部分!漫画图片是如何加载的?
- 它是直接在
<img>标签的src属性里吗?(最简单) - 还是在一个
<div class="reader-image">里面,通过 JavaScript 动态加载? - 图片的 URL 是固定的还是需要拼接的?
- 它是直接在
- 关键信息:如何定位到包含漫画图片的那个 HTML 元素?如何从这个元素中提取出图片的真实 URL?
- URL 格式:阅读页的 URL 通常包含章节 ID,
工具推荐:
- 浏览器开发者工具:按
F12打开,使用“元素”和“网络”标签进行分析。 - JSON 提取器:有些网站通过 API 返回 JSON 数据,这会让解析变得非常简单,检查网络请求,看看有没有类似
api/comics/list的请求。
第二步:选择插件格式并编写代码
分析完网站后,就可以开始写代码了,ComicGlass 支持多种插件格式,最推荐使用 JSON 格式,因为它最简单,不需要懂编程。

(图片来源网络,侵删)
使用 JSON 插件(推荐,最简单)
JSON 插件是一个 .json 文件,您只需要按照格式填写您在第一步中分析出的信息即可。
JSON 文件结构示例:
{
"name": "您的网站名称",
"version": "1.0",
"author": "您的名字",
"description": "一个用于从您的网站获取漫画的插件",
"baseUrl": "https://your-website.com",
"comicList": {
"url": "/comics/",
"parser": {
"container": "div.comic-item",
"title": "h3.title",
"link": "a"
}
},
"chapterList": {
"url": "",
"parser": {
"container": "ul.chapter-list li",
"title": "a",
"link": "a"
}
},
"imageList": {
"url": "",
"parser": {
"container": "div.reader-image img",
"image": "src"
}
}
}
如何填写上面的字段:
name,version,author,description: 填写您的基本信息。baseUrl: 您网站的根域名,不带末尾的斜杠。comicList: 定义如何获取漫画列表。url: 漫画列表页的相对路径(相对于 baseUrl)。parser: 定义解析规则。container: 包含单个漫画信息的元素选择器(div.comic-item)。title: 在container内部,提取标题的元素选择器(h3.title)。link: 在container内部,提取链接的元素选择器(a)。
chapterList: 定义如何获取章节列表。url: 通常为空,因为详情页的 URL 已经在comicList中获取了,如果章节列表页是独立的,就填写。parser: 和上面类似,定义章节的解析规则。
imageList: 定义如何获取漫画图片。url: 通常为空,因为阅读页的 URL 已经在chapterList中获取了。parser: 定义图片解析规则。container: 包含图片的元素选择器(div.reader-image img)。image: 从container元素中提取图片 URL 的属性名(通常是src,也可能是data-src或data-original)。
选择器语法:这是 CSS 选择器,您可以简单理解为:
div:选择<div>.class-name:选择class="class-name"的元素。#id-name:选择id="id-name"的元素。div p:选择<div>内部的所有<p>div > a:选择<div>的直接子元素<a>。
使用 JavaScript 插件(高级,更灵活)
如果您的网站结构非常复杂,或者需要动态计算、处理反爬虫机制,那么您可能需要使用 JavaScript 插件,这需要您懂一些 JavaScript 知识。
一个 JS 插件通常是一个 .js 文件,它导出一个对象,该对象包含一些函数,如 getComicList, getChapterList, getImageList 等,这些函数接收一个 document 对象(页面的 DOM)作为参数,您可以在函数内使用 document.querySelector() 等方法来手动解析网页。
由于这部分代码量较大且需要编程基础,建议先尝试 JSON 格式,JSON 无法满足需求,再研究 JS 插件。
第三步:安装和测试插件
编写好插件文件(.json 或 .js)后,就可以在 ComicGlass 中加载它了。
-
放置插件文件:
- 打开 ComicGlass 的设置。
- 找到“插件”或“自定义插件”相关选项。
- 通常会有一个“插件目录”或“文件夹”的路径,将您创建的插件文件(
my-website.json)放入这个文件夹中。
-
启用插件:
- 重启 ComicGlass。
- 在插件管理列表中,您应该能看到您刚刚添加的插件,勾选它以启用。
-
测试:
- 在 ComicGlass 的主界面,尝试添加一个新漫画源。
- 选择您创建的插件。
- 它会自动跳转到您在
baseUrl中指定的网站。 - 尝试搜索或浏览漫画列表,看是否能正确加载。
- 点击进入一部漫画,看章节列表是否能正确加载。
- 点击进入一个章节,看漫画图片是否能正确显示。
调试技巧:
- 如果加载失败,仔细检查您在 JSON 文件中的选择器是否正确,一个字符的错误都可能导致失败。
- 重新 ComicGlass 或重新加载插件。
- 去社区论坛(如 Reddit、GitHub Discussions)寻求帮助,提供您的网站 URL 和插件代码片段。
第四步:分享您的插件(可选)
如果您认为您的
