[{"bookSourceComment":"站点：桔纸书屋（m.juzhishuwu.net；.com 会 301 到 .net）。全站 GBK，jieqiCMS 模板。\n【搜索】GET \/modules\/article\/search.php?searchkey=<GBK>&searchtype=articlename。多结果为 <tr id=\"nr\"> 六列表格；单结果站点 302 直跳详情页，靠 bookUrlPattern 走详情兜底。结果链接是 .com 域，用 ##替换 归一成 .net，否则每次详情多等一次 301（实测 +7 秒）。\n★搜索页分页是假的：page=2\/3 返回与第 1 页完全相同的内容，故 bookList 对 page>1 直接短路返回空，避免无限翻页。\n★站点限频不稳定：提示「两次搜索的间隔时间不得少于 30 秒」，清 cookie \/ 换 UA \/ 伪造时间戳均无效；实测静默 30~45 秒后可恢复，但连续搜索仍会随机报错，属站点侧问题。\n【目录】详情页即第 1 页（45 章\/页），后续页 \/xs\/<id>\/<page>\/。分页条只显示当前页 ±10 页，故 nextTocUrl 只返回「下一页」1 个 URL（末页 return null）。\n★必须只返回 1 个 URL：源码 BookChapterList 的 when(nextUrlList.size) 中，1→走串行循环（每页再求值一次），其余→走 mapAsync 并发且按「完成顺序」emit（buffer(0)+信号量），章节顺序不可控。只返回 1 个 URL 可强制串行，顺序绝对可控。\n★若一次返回全部页 URL：①并发分支按完成顺序 addAll，长书目录会乱序；②2 页目录的书 page1 只返回 1 个 → 仍走串行 → page2 再求值又返回 page1 → 重复抓取，经 reverse→去重→reverse 后顺序被轮转成「第46章在前、第45章在后」（《我的师父是仙子》实测）。\n【正文】#content 内以 <br> 分行，章内分页由 a.btn-info 标记（href 形如 xxx_2.html，末页该元素消失）。两个坑：①站点按字数硬截断，跨页会切断句子甚至切断 &nbsp; 实体（页尾留 &n、下页开头 bsp;）；②部分书（如《完美世界》）站点把正文重复输出 5 份，每份前有「< \"https:\">提供的《书名》…(第N页)」标记。故正文用 @js 自行按页抓取：以段首 &nbsp; 判续行并无缝粘合、遇到第二个分页标记即截断、整页与已收内容重复则跳过、修复断裂实体、剥掉广告尾巴。\n【发现】7 个分类 \/list\/<1-7>_<page>.html、完本 \/wanben\/1_<page>、榜单 \/paihangbang.html（8 榜单静态单页，用 ?page= 假参数让第 2 页起返回空以停翻页）。\n★发现页有两种列表结构：分类\/完本页用 ul.txt-list-row5（li 含 s1分类\/s2书名\/s3最新章节\/s4作者），榜单页用 ul.txt-list-row3（li 仅含 s1排名\/s2书名\/s5更新日期，无作者无章节）。bookList 先试 row5、回退 row3，并按 href 去重；榜单页作者与最新章节会留空，进入详情页后由 ruleBookInfo 补齐。","bookSourceGroup":"AI","bookSourceName":"📖桔纸书屋","bookSourceType":0,"bookSourceUrl":"https:\/\/m.juzhishuwu.net","bookUrlPattern":"https?:\/\/m\\.juzhishuwu\\.(?:com|net)\/xs\/\\d+\\.html","customButton":false,"customOrder":2,"enabled":true,"enabledCookieJar":false,"enabledExplore":true,"eventListener":false,"exploreUrl":"[{\"title\":\"玄幻\",\"url\":\"https:\/\/m.juzhishuwu.net\/list\/1_{{page}}.html\"},{\"title\":\"修真\",\"url\":\"https:\/\/m.juzhishuwu.net\/list\/2_{{page}}.html\"},{\"title\":\"都市\",\"url\":\"https:\/\/m.juzhishuwu.net\/list\/3_{{page}}.html\"},{\"title\":\"穿越\",\"url\":\"https:\/\/m.juzhishuwu.net\/list\/4_{{page}}.html\"},{\"title\":\"网游\",\"url\":\"https:\/\/m.juzhishuwu.net\/list\/5_{{page}}.html\"},{\"title\":\"科幻\",\"url\":\"https:\/\/m.juzhishuwu.net\/list\/6_{{page}}.html\"},{\"title\":\"其他\",\"url\":\"https:\/\/m.juzhishuwu.net\/list\/7_{{page}}.html\"},{\"title\":\"完本\",\"url\":\"https:\/\/m.juzhishuwu.net\/wanben\/1_{{page}}\"},{\"title\":\"榜单\",\"url\":\"https:\/\/m.juzhishuwu.net\/paihangbang.html?page={{page}}\"}]","lastUpdateTime":"1792748877528","respondTime":2219,"ruleBookInfo":{"author":"div.info div.fix > p:nth-of-type(1)@text##作\\s*者[：:]\\s*","coverUrl":"div.imgbox img@src","intro":"div.desc@text||div.m-desc@text##简\\s*介[:：]\\s*","kind":"div.info div.fix > p:nth-of-type(2)@text##类\\s*别[：:]\\s*","lastChapter":"div.info div.fix > p:nth-of-type(5) a@text","name":"div.info h1@text"},"ruleContent":{"content":"@js:(function(){var J=Packages.org.jsoup.Jsoup;var MARK=\/提供的《|\\(第\\d+\\\/\\d+页\\)|^<\\\/div>|^&lt;\\s*\"https:\/;function segs(h){var d=J.parse(h);var box=d.select('#content').first();if(box==null)return null;var c=box.clone();c.select('a,script,style').remove();var parts=String(c.html()).split(\/<br\\s*\\\/?>\/i),arr=[];for(var i=0;i<parts.length;i++){var t=parts[i].replace(\/<[^>]+>\/g,'').replace(\/^[ \\t\\r\\n]+\/,'').replace(\/[ \\t\\r\\n]+$\/,'');if(t.replace(\/&nbsp;|&amp;|\\s\/g,'')==='')continue;if(MARK.test(t)&&arr.length>0)break;arr.push(t);}return {arr:arr,next:(box.select('a.btn-info').size()>0?box.select('a.btn-info').attr('href'):null)};}function isRepeat(page,out){if(out.length<3||page.length<2)return false;var p0=page[0];var lo=Math.max(0,out.length-60);for(var i=lo;i<out.length;i++){if(out[i]!==p0)continue;var ok=0;for(var j=0;j<page.length&&i+j<out.length;j++){if(out[i+j]!==page[j])break;ok++;}if(ok>=Math.min(3,page.length))return true;}return false;}var cur=segs(result),out=[],guard=0;while(cur!=null&&guard<40){guard++;var a=cur.arr;if(a.length>0&&!isRepeat(a,out)){if(out.length>0&&!\/^&nbsp;\/.test(a[0])){out[out.length-1]=out[out.length-1]+a[0];a=a.slice(1);}for(var i=0;i<a.length;i++)out.push(a[i]);}if(!cur.next)break;cur=segs(java.ajax(cur.next));}var txt=out.join('\\n').replace(\/&(?:amp;)?n\\s*bsp;\/g,'&nbsp;');txt=txt.replace(\/&nbsp;\/g,' ').replace(\/&lt;\/g,'<').replace(\/&gt;\/g,'>').replace(\/&quot;\/g,'\"').replace(\/&#39;\/g,\"'\").replace(\/&amp;\/g,'&');var NOISE=\/请牢记|免费最快|无防盗|恋上你看书|bookla|收藏本站|请收藏|请大家收藏|全网最快|更新速度|首发起点|支持正版|看清爽的小说就到|您现在阅读的是|天才一秒|记住本站|无弹窗|笔趣阁|最快更新|本章未完|点击下一页\/;var DOM=\/https?:\\\/\\\/|https?:\\s*\"|www\\.|\\.com|\\.net|\\.org|bookla|提供的《\/;var ls=txt.split('\\n'),res=[];for(var k=0;k<ls.length;k++){var t=ls[k].replace(\/^\\s+|\\s+$\/g,'');if(!t)continue;t=t.replace(\/[,，]\\s*请牢记[:：]?.*$\/,'').replace(\/^\\s+|\\s+$\/g,'');if(!t)continue;if(DOM.test(t)&&t.length<90)continue;if(t.length<=60&&NOISE.test(t))continue;res.push(t);}return res.join('\\n');})()"},"ruleExplore":{"author":"span.s4@text","bookList":"@js:(function(){var J=Packages.org.jsoup.Jsoup;var m=String(baseUrl).match(\/[?&]page=(\\d+)\/);if(m&&parseInt(m[1])>1)return[];var doc=J.parse(result);var lis=doc.select('ul.txt-list-row5 li');if(lis.size()===0){lis=doc.select('div.row-rank div.tab-bd ul.txt-list-row3:not([style*=none]) li');}var seen={},out=[];for(var i=0;i<lis.size();i++){var li=lis.get(i);var a=li.select('span.s2 a').first();if(a==null)continue;var h=a.attr('href');if(!h||seen[h])continue;seen[h]=1;out.push(li);}return out;})()","bookUrl":"span.s2 a@href","kind":"@js:(function(){var a=result.select('span.s1');if(a.size()===0)return '';var t=String(a.first().text()).replace(\/[\\[\\]]\/g,'').replace(\/^\\s+|\\s+$\/g,'');return \/^\\d+$\/.test(t)?'':t;})()","lastChapter":"span.s3@text","name":"span.s2 a@text"},"ruleSearch":{"author":"td:nth-of-type(3)@text","bookList":"@js:(function(){var m=String(baseUrl).match(\/[?&]page=(\\d+)\/);if(m&&parseInt(m[1])>1)return[];var J=Packages.org.jsoup.Jsoup;var doc=(typeof result==='string')?J.parse(result):result;return doc.select('tr#nr');})()","bookUrl":"td:nth-of-type(1) a@href##^https?:\/\/m\\.juzhishuwu\\.com##https:\/\/m.juzhishuwu.net","lastChapter":"td:nth-of-type(2) a@text","name":"td:nth-of-type(1) a@text","wordCount":"td:nth-of-type(4)@text"},"ruleToc":{"chapterList":"#first + div.section-box ul.section-list li","chapterName":"a@text","chapterUrl":"a@href","nextTocUrl":"@js:(function(){var m=String(result).match(\/当前第\\s*(\\d+)\\s*页[，,]\\s*共\\s*(\\d+)\\s*页\/);if(!m)return null;var cur=parseInt(m[1]),total=parseInt(m[2]);if(cur>=total)return null;var bm=String(baseUrl).match(\/^(https?:\\\/\\\/[^\\\/]+)\\\/xs\\\/(\\d+)\/);if(!bm)return null;return [bm[1]+'\/xs\/'+bm[2]+'\/'+(cur+1)+'\/'];})()"},"searchUrl":"https:\/\/m.juzhishuwu.net\/modules\/article\/search.php?searchkey={{key}}&searchtype=articlename&page={{page}},{\"charset\":\"gbk\"}","weight":0}]