[{"bookSourceComment":"【书海阁 book.washai.net · 2026-11-04】\n· 全站 UTF-8 \/ Cloudflare \/ SSR 服务端渲染；游客可读搜索·详情·目录·正文（实测后期章节 needBuy=false），无需登录，故不写登录 UI 与登录状态检查按钮\n· 搜索：GET \/book\/bookclass.html?k={{key}}（页面无 form；站点 common.js 的 searchByK 明确跳转该地址），SSR 直出 #bookList\n· 限速：concurrentRate=1\/2000（全站 2 秒 1 请求），避免搜索过于频繁触发风控；目录 100 章\/页串行分页，长篇约 12 页会慢一些，属限速权衡（可自行调成 1\/1000）\n· UA：header 字段内置完整 Chrome UA（书源真字段名是 header，不是带 Map 后缀的字段；写错会被 Gson 静默丢弃）\n· 详情与目录分离：tocUrl → \/book\/indexList-<id>.html；不写 intro，因详情页 #bookDesc 是站方 SEO 套话，保留搜索结果里的真简介\n· 目录分页：每页 100 章，第1页 indexList-<id>.html、第2页起 indexList\/<id>\/<N>.html；nextTocUrl 只按「下一页」文案取 1 个 URL，末页 return null（防「上一页」回环）\n· 目录 chapterList 写 id.bookIndexList@tag.li@tag.a：部分书首页混有 li.catalogVolumeHeading 卷标题（无 <a>），直接选 a 元素可自动排除；★Default 规则的 [xxx] 是数组索引语法不是 CSS 属性选择器，写 tag.li[data-index-id] 会被误解析导致「列表大小:0 → TocEmptyException」（要属性选择器必须用 @css: 前缀）\n· 正文：#showReading 下的 readChapterAppendBody；实测末章（大结局）needBuy=false 正文直出，游客无需登录（★不能用 #readPanel：页面恒含隐藏的「此章为VIP章节，需要订阅」#vipPanel，会污染正文）\n· 无章内分页（flipPageProgress=1\/1），「下一章」是独立章节 URL 且已被目录覆盖，故不写 nextContentUrl 防串章\n· 发现：全部作品 + 8 分类（带 {{page}} 分页）+ 4 榜单（单页 30 本，站点无分页）；榜单作者栏偶有「榜单第一」占位数据，已用 ## 规则清空\n· wordCount 用 @js: 从卡片元素取 p.classBookMeta \/ p.rankCardMeta（★不能把 ##替换 与 ||组合符 混写：替换段会吞掉后半段规则文本）\n· 兼容性：列表规则全用 Default\/CSS 选择器（不返回 JS 数组），nextTocUrl 用 IIFE 返回 String\/null，兼容 Legado 官方版与 legado-E\n· 未检测到网址发布页：首页无「发布页\/备用\/网址\/线路\/镜像」字样，washai.net \/ www \/ m 三个根域均无 DNS 记录 ⇒ 按需求不写线路管理面板","bookSourceGroup":"AI","bookSourceName":"📚书海阁","bookSourceType":0,"bookSourceUrl":"https:\/\/book.washai.net","bookUrlPattern":"^https?:\/\/book\\.washai\\.net\/book\/(?:indexList-\\d+\\.html|indexList\/\\d+\/\\d+\\.html|\\d+\\.html|\\d+\/\\d+\\.html)(?:\\?.*)?$","concurrentRate":"1\/1000","customButton":false,"customOrder":0,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"eventListener":false,"exploreUrl":"[{\"title\": \"▌全部作品 · 可翻页\", \"url\": \"\", \"style\": {\"layout_flexBasisPercent\": 1, \"layout_wrapBefore\": true}}, {\"title\": \"全部作品\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"▌分类浏览 · 可翻页\", \"url\": \"\", \"style\": {\"layout_flexBasisPercent\": 1, \"layout_wrapBefore\": true}}, {\"title\": \"玄幻奇幻\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=1&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"武侠仙侠\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=2&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"都市言情\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=3&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"历史军事\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=4&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"科幻灵异\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=5&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"网游竞技\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=6&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"女生频道\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=7&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"次元同人\", \"url\": \"https:\/\/book.washai.net\/book\/bookclass.html?c=8&page={{page}}\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"▌排行榜 · 单页30本\", \"url\": \"\", \"style\": {\"layout_flexBasisPercent\": 1, \"layout_wrapBefore\": true}}, {\"title\": \"人气榜\", \"url\": \"https:\/\/book.washai.net\/book\/book_ranking.html?type=0\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"新书榜\", \"url\": \"https:\/\/book.washai.net\/book\/book_ranking.html?type=1\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"更新榜\", \"url\": \"https:\/\/book.washai.net\/book\/book_ranking.html?type=2\", \"style\": {\"layout_flexBasisPercent\": 0.5}}, {\"title\": \"评论榜\", \"url\": \"https:\/\/book.washai.net\/book\/book_ranking.html?type=3\", \"style\": {\"layout_flexBasisPercent\": 0.5}}]","header":"{\"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36\", \"Accept\": \"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,*\/*;q=0.8\", \"Accept-Language\": \"zh-CN,zh;q=0.9\"}","lastUpdateTime":"1793807034620","respondTime":180000,"ruleBookInfo":{"author":"id.bookAuthor@text","coverUrl":"id.bookCoverImg@src","kind":"id.bookCatBadge@text","lastChapter":"id.lastIndexLink@text","name":"id.bookName@text","tocUrl":"id.allIndexLink@href","wordCount":"id.bookWordCount@text"},"ruleContent":{"content":"id.showReading@class.readChapterAppendBody@html##<script[\\s\\S]*?<\/script>|<style[\\s\\S]*?<\/style>"},"ruleExplore":{"author":"class.classBookAuthor@tag.a@text||class.rankCardAuthor@tag.a@text##^榜单第[一二三四五六七八九十\\d]+$","bookList":"id.bookList@class.classBookCard||id.bookRankList@class.rankCard","bookUrl":"class.classBookTitle@tag.a@href||class.rankCardTitle@tag.a@href","coverUrl":"class.classBookCover@tag.img@src||class.rankCardCover@tag.img@src","intro":"class.classBookDesc@text||class.rankCardDesc@text","kind":"class.classCoverCat@text||class.rankCoverCat@text","lastChapter":"class.classBookChapter@tag.a@text","name":"class.classBookTitle@tag.a@text||class.rankCardTitle@tag.a@text","wordCount":"@js:(function(){var t='';try{var e=result;var x=e.select('p.classBookMeta');if(x.size()===0)x=e.select('p.rankCardMeta');if(x.size()>0)t=String(x.get(0).text());}catch(err){}var m=t.match(\/·\\s*([^\\s]+)\\s*$\/);return m?m[1]:'';})()"},"ruleSearch":{"author":"class.classBookAuthor@tag.a@text||class.rankCardAuthor@tag.a@text##^榜单第[一二三四五六七八九十\\d]+$","bookList":"id.bookList@class.classBookCard||id.bookRankList@class.rankCard","bookUrl":"class.classBookTitle@tag.a@href||class.rankCardTitle@tag.a@href","coverUrl":"class.classBookCover@tag.img@src||class.rankCardCover@tag.img@src","intro":"class.classBookDesc@text||class.rankCardDesc@text","kind":"class.classCoverCat@text||class.rankCoverCat@text","lastChapter":"class.classBookChapter@tag.a@text","name":"class.classBookTitle@tag.a@text||class.rankCardTitle@tag.a@text","wordCount":"@js:(function(){var t='';try{var e=result;var x=e.select('p.classBookMeta');if(x.size()===0)x=e.select('p.rankCardMeta');if(x.size()>0)t=String(x.get(0).text());}catch(err){}var m=t.match(\/·\\s*([^\\s]+)\\s*$\/);return m?m[1]:'';})()"},"ruleToc":{"chapterList":"id.bookIndexList@tag.li@tag.a","chapterName":"text##\\s*\\[[^\\]]*\\]$","chapterUrl":"href","nextTocUrl":"@js:(function(){\nvar h='';try{h=String(src||'');}catch(e){}\nif(h.indexOf('pgBtn')<0){try{h=String(result||'');}catch(e2){}}\nvar u=null;\ntry{var d=org.jsoup.Jsoup.parse(h);var a=d.select('a.pgBtn');\nfor(var i=0;i<a.size();i++){if(String(a.get(i).text()).indexOf('\\u4e0b\\u4e00\\u9875')>=0){var x=String(a.get(i).attr('href'));if(x){u=x;break;}}}\n}catch(e3){}\nif(!u){var m=h.match(\/href=\"([^\"]+)\"[^>]*>\\u4e0b\\u4e00\\u9875<\/);if(m)u=m[1];}\nreturn u||null;\n})()"},"searchUrl":"\/book\/bookclass.html?k={{key}}","weight":0}]