[{"bookSourceComment":"【手机小说 shoujixs.net】\n站点：笔趣阁家族多域名同库站（wap主站UTF-8 + open-ki双备用域 + www GBK PC站）。\n无登录、无验证码、无CF、正文无广告。\n⚠️搜索限频：站点写入 ss_search_delay=1 Cookie 后 120 秒内拒绝搜索（返回 alert 搜索间隔页）；搜索限频已破解：searchUrl 的 URL选项 js 在每次搜索发请求前自动 removeCookie 清掉 ss_search_delay 限频标记（服务端认不到会话Cookie即当新访客放行），concurrentRate=1次\/3秒防轰炸；loginCheckJs 兜底把限频页改写为提示。\n\n线路说明：\n- 登录面板可切换 3 条同库线路（wap.shoujixs.net 主 \/ open-ki.jishouzj.cc \/ open-ki.jishouxs.cc），支持一键测速选最快、自定义网址。\n- www.shoujixs.net 是 GBK 编码的 PC 模板，页面结构与 WAP 系完全不同，请勿填入自定义网址。\n- 站点无发布页，故面板提供「预置线路+测速+自定义网址」组合替代发布页功能。\n\n结构要点（规则为何这样写）：\n- 详情页 og:novel:* 全字段，三模板统一提取。\n- 目录：wap 模板的 div.directoryArea 未闭合（最新5章与全部章节同容器），用「全部章节列表\/正文」h2 锚点切割后再按章节URL正则过滤；open-ki 模板是规范双容器取第2个。目录分页「下一页」按钮与「上一页」同容器，用按钮文本「下一页」判据取 href，末页 javascript:void(0) 返回 null 干净终止。\n- 正文：#articlecon(嵌套p>p) \/ #chaptercontent(直属p) 统一取内层p；章内分页 a#pt_next 用文本「下一页」判据（末页文本是「下一章」，必须排除否则会串章）。\n- 发现页（固定走主站 wap.shoujixs.net）：分类11类+周榜\/月榜\/总榜\/全本各12项，URL 已实测全部有效；备用线路（open-ki.*）是纯书库镜像无列表页（列表页全404），故发现页不跟随线路切换；分类页约30页之后存在站点自身的数据空洞页（返回空列表），属站点数据问题非书源问题。\n\n搜索提示：支持书名和作者搜索；⚠️站点限制关键词最少 4 个汉字（少于 4 字必失败，书源已做前置提示）；限频已破解（每次搜索前自动清除 ss_search_delay 标记，服务端视为新访客放行）。","bookSourceGroup":"AI","bookSourceName":"手机小说","bookSourceType":0,"bookSourceUrl":"https:\/\/wap.shoujixs.net","bookUrlPattern":".*(shoujixs\\.(?:net|com)|jishouzj\\.cc|jishouxs\\.cc)\/shoujixs_\\d+.*","concurrentRate":"1,3000","customButton":false,"customOrder":0,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"eventListener":false,"exploreUrl":"@js:(function(){var h='https:\/\/wap.shoujixs.net';var kinds=[['玄幻奇幻','xhqh'],['武侠小说','wx'],['仙侠小说','xx'],['都市现实','ds'],['军事小说','js'],['历史小说','ls'],['游戏体育','yxty'],['科幻小说','kh'],['灵异小说','ly'],['二次元类','ecy'],['言情小说','yq']];var out=[];var full={layout_flexGrow:1,layout_flexBasisPercent:1.0,layout_wrapBefore:true};var half={layout_flexGrow:1,layout_flexBasisPercent:0.5};var quarter={layout_flexGrow:1,layout_flexBasisPercent:0.25};out.push({title:'📚 分区',url:'',style:full});for(var i=0;i<kinds.length;i++){out.push({title:kinds[i][0],url:h+'\/'+kinds[i][1]+'_{{page}}.html',style:quarter});}out.push({title:'🏆 周榜',url:'',style:full});out.push({title:'全部',url:h+'\/top\/week_{{page}}.html',style:quarter});for(var i=0;i<kinds.length;i++){out.push({title:kinds[i][0],url:h+'\/top\/week'+(i+1)+'_{{page}}.html',style:quarter});}out.push({title:'📅 月榜',url:'',style:full});out.push({title:'全部',url:h+'\/top\/month_{{page}}.html',style:quarter});for(var i=0;i<kinds.length;i++){out.push({title:kinds[i][0],url:h+'\/top\/month'+(i+1)+'_{{page}}.html',style:quarter});}out.push({title:'📜 总榜',url:'',style:full});out.push({title:'全部',url:h+'\/top\/all_{{page}}.html',style:quarter});for(var i=0;i<kinds.length;i++){out.push({title:kinds[i][0],url:h+'\/top\/all'+(i+1)+'_{{page}}.html',style:quarter});}out.push({title:'✅ 全本',url:'',style:full});out.push({title:'全部',url:h+'\/quanben_{{page}}.html',style:quarter});for(var i=0;i<kinds.length;i++){out.push({title:kinds[i][0],url:h+'\/quanben'+(i+1)+'_{{page}}.html',style:quarter});}return JSON.stringify(out);})()","header":"{\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 14; Pixel 8) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Mobile Safari\/537.36\"}","lastUpdateTime":"1793374230323","loginCheckJs":"(function(){\nfunction bodyOf(x){var b='';try{b=String(x.body())}catch(e){try{b=String(x.body)}catch(e2){b=''}}return b;}\nvar b=bodyOf(result);\nif(b.indexOf('alert(')>=0&&b.length<500){\n  var msg='';\n  var m=String(b).match(\/alert\\(\"([^\"]+)\"\\)\/);\n  if(m)msg=m[1];\n  var tip='';\n  if(msg.indexOf('搜索间隔')>=0){\n    tip='<html><body><p>站点搜索限频：'+msg+'。书源每次搜索前会自动清除限频标记，若仍遇此提示请等待2分钟或稍后再试。<\/p><\/body><\/html>';\n  }else if(msg.indexOf('关键字')>=0){\n    tip='<html><body><p>关键词不符合要求：'+msg+'。本站要求关键词至少 4 个汉字，请输入更长的书名或作者名。<\/p><\/body><\/html>';\n  }else{\n    tip='<html><body><p>站点提示：'+msg+'<\/p><\/body><\/html>';\n  }\n  try{\n    return new Packages.io.legado.app.help.http.StrResponse(String(baseUrl), tip);\n  }catch(e){return result;}\n}\nreturn result;\n})()","loginUi":"[{\"name\": \"状态\", \"type\": \"button\", \"action\": \"FQ_sj_now(java,source)\", \"viewName\": \"(function(){var h='';try{h=String(source.getVariable()||'')}catch(e){};return '🌐 当前线路：'+(h||String(source.getKey()||'wap.shoujixs.net'))})()\"}, {\"name\": \"customUrl\", \"type\": \"text\"}, {\"name\": \"使用自定义网址\", \"type\": \"button\", \"action\": \"FQ_sj_custom(java,source)\"}, {\"name\": \"线路1\", \"type\": \"button\", \"action\": \"FQ_sj_pick(java,source,0)\", \"viewName\": \"(function(){var cur='';try{cur=String(source.getVariable()||'')}catch(e){};var m='';try{m=String(source.get('sjMs0')||'')}catch(e){};var star=cur.indexOf('wap.shoujixs.net')>=0?'✅ ':'　';return star+'📶 wap.shoujixs.net[主] '+(m?('('+m+')'):'(未测速)')})()\"}, {\"name\": \"线路2\", \"type\": \"button\", \"action\": \"FQ_sj_pick(java,source,1)\", \"viewName\": \"(function(){var cur='';try{cur=String(source.getVariable()||'')}catch(e){};var m='';try{m=String(source.get('sjMs1')||'')}catch(e){};var star=cur.indexOf('jishouzj.cc')>=0?'✅ ':'　';return star+'📶 open-ki.jishouzj.cc '+(m?('('+m+')'):'(未测速)')})()\"}, {\"name\": \"线路3\", \"type\": \"button\", \"action\": \"FQ_sj_pick(java,source,2)\", \"viewName\": \"(function(){var cur='';try{cur=String(source.getVariable()||'')}catch(e){};var m='';try{m=String(source.get('sjMs2')||'')}catch(e){};var star=cur.indexOf('jishouxs.cc')>=0?'✅ ':'　';return star+'📶 open-ki.jishouxs.cc '+(m?('('+m+')'):'(未测速)')})()\"}, {\"name\": \"⚡ 一键测速并切换最快线路\", \"type\": \"button\", \"action\": \"FQ_sj_auto(java,source)\"}, {\"name\": \"⏱ 仅测试全部线路延时\", \"type\": \"button\", \"action\": \"FQ_sj_speed(java,source)\"}, {\"name\": \"🔍 检查连接\/登录状态\", \"type\": \"button\", \"action\": \"FQ_sj_check(java,source)\"}, {\"name\": \"🧹 清除限频Cookie\", \"type\": \"button\", \"action\": \"FQ_sj_clear(java,source)\"}, {\"name\": \"ℹ️ 本站无需登录；站点无发布页，已预置3条同库线路；www.shoujixs.net 是GBK版模板不同请勿填入\", \"type\": \"label\"}]","loginUrl":"function login(){java.toast('本站无需账号登录；请用下方按钮管理线路')}\nfunction SJ_hosts(){return ['https:\/\/wap.shoujixs.net','https:\/\/open-ki.jishouzj.cc','https:\/\/open-ki.jishouxs.cc'];}\nfunction SJ_host(sv){\n  var h='';try{h=String(sv.getVariable()||'')}catch(e){h=''}\n  var hs=SJ_hosts();\n  for(var i=0;i<hs.length;i++){if(h==hs[i])return hs[i];}\n  if(h.indexOf('http')===0)return h;\n  return String(sv.getKey());\n}\nfunction SJ_set(sv,u){try{sv.setVariable(u)}catch(e){}return u;}\nfunction SJ_refresh(){\n  var ok=false;\n  try{java.reLoginView();ok=true}catch(e){}\n  if(!ok){try{java.reUiView();ok=true}catch(e){}}\n  return ok;\n}\nfunction FQ_sj_now(jv,sv){\n  var h=SJ_host(sv);\n  java.toast('🌐 当前线路：'+h+'（书架旧书仍走其入库时的域名）');\n}\nfunction FQ_sj_pick(jv,sv,idx){\n  var hs=SJ_hosts();\n  if(idx<0||idx>=hs.length){java.toast('❌ 线路编号错误');return;}\n  java.toast('⏳ 正在切换到线路'+(idx+1)+'…');\n  SJ_set(sv,hs[idx]);\n  java.toast('✅ 已切换：'+hs[idx]+'（可搜索一次验证连通性）');\n  SJ_refresh();\n}\nfunction SJ_speedAll(jv){\n  var hs=SJ_hosts();\n  var urls=[];for(var i=0;i<hs.length;i++)urls.push(hs[i]+'\/');\n  var rs=null;\n  try{rs=jv.ajaxAll(urls);}catch(e){return null;}\n  var best=-1;var bestT=9007199254740992;var msg=[];\n  for(var i=0;i<hs.length;i++){\n    var t=-1;var alive=false;\n    try{\n      var r=rs[i];var b='';\n      try{b=String(r.body())}catch(e1){b=''}\n      if(b.length>5000){\n        alive=true;\n        try{t=Number(r.callTime())}catch(e2){t=-1}\n      }\n    }catch(e){alive=false;}\n    var label=alive?(t>=0?(t+'ms'):'在线'):'失效';\n    try{jv.put('sjMs'+i,label)}catch(e3){}\n    msg.push(hs[i].replace('https:\/\/','')+'='+(alive?(t>=0?(t+'ms'):'在线'):'失效'));\n    if(alive&&t>=0&&t<bestT){bestT=t;best=i;}\n  }\n  return {best:best,bestT:bestT,msg:msg.join(' ｜ ')};\n}\nfunction FQ_sj_speed(jv,sv){\n  java.toast('⏳ 正在并发测速 3 条线路（约2~8秒）…');\n  var r=SJ_speedAll(jv);\n  if(r==null){java.toast('❌ 测速执行失败（ajaxAll 异常）');SJ_refresh();return;}\n  java.toast('⏱ 测速完成：'+r.msg);\n  SJ_refresh();\n}\nfunction FQ_sj_auto(jv,sv){\n  java.toast('⏳ 正在测速并自动切换最快线路…');\n  var r=SJ_speedAll(jv);\n  if(r==null){java.toast('❌ 测速执行失败（ajaxAll 异常）');SJ_refresh();return;}\n  if(r.best<0){\n    java.toast('❌ 全部线路异常，请检查网络后重试：'+r.msg);\n    SJ_refresh();return;\n  }\n  var hs=SJ_hosts();\n  SJ_set(sv,hs[r.best]);\n  java.toast('✅ 已切换最快线路：'+hs[r.best]+'（'+r.bestT+'ms）｜'+r.msg);\n  SJ_refresh();\n}\nfunction FQ_sj_custom(jv,sv){\n  var v='';\n  try{v=String(result.get('customUrl')||'')}catch(e){}\n  if(!v||v=='null'){try{v=String(result['customUrl']||'')}catch(e){v=''}}\n  if(!v||v.indexOf('http')!==0){\n    java.toast('❌ 请先在输入框输入以 http 开头的完整网址（如 https:\/\/wap.shoujixs.net）');\n    return;\n  }\n  v=v.replace(\/\\\/+$\/,'');\n  java.toast('⏳ 正在切换自定义网址…');\n  SJ_set(sv,v);\n  java.toast('✅ 已切换：'+v+'（该站系列域名共用同一书库；若是陌生镜像请先搜索验证）');\n  SJ_refresh();\n}\nfunction FQ_sj_clear(jv,sv){\n  var n=0;\n  try{cookie.removeCookie('https:\/\/wap.shoujixs.net\/');n++;}catch(e){}\n  try{cookie.removeCookie('https:\/\/wap.shoujixs.net\/search\/');n++;}catch(e){}\n  var hs=SJ_hosts();\n  for(var i=0;i<hs.length;i++){try{cookie.removeCookie(hs[i]+'\/')}catch(e){}}\n  java.toast('🧹 已清除本站全部Cookie（含限频标记ss_search_delay），现在可以搜索了');\n  SJ_refresh();\n}\nfunction FQ_sj_check(jv,sv){\n  var h=SJ_host(sv);\n  java.toast('⏳ 正在检测 '+h+' …');\n  var t0=Date.now();var b='';\n  try{b=String(jv.ajax(h+'\/'))}catch(e){\n    java.toast('❌ 连接失败：'+e+'（请换线路）');\n    return;\n  }\n  var ms=Date.now()-t0;\n  if(b.length>5000){\n    java.toast('✅ 连接正常 '+ms+'ms ｜ 本站无需账号登录 ｜ 当前线路：'+h);\n  }else{\n    java.toast('⚠️ 响应异常（仅'+b.length+'字符），域名可能已失效，请切换线路');\n  }\n}","respondTime":180000,"ruleBookInfo":{"author":"meta[property=og:novel:author]@content||.author@text##^作者：","coverUrl":"meta[property=og:image]@content","intro":"@js:(function(){var D=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var t='';try{var e=D.select('div.review').first();if(e!=null)t=String(e.text());}catch(x){}if(!t){try{var e=D.select('p.review').first();if(e!=null){t=String(e.text());var sib=e.nextElementSibling();while(sib!=null&&String(sib.tagName())=='p'){var st=String(sib.text());if(st)t+='\\n'+st;sib=sib.nextElementSibling();}}}catch(x){}}if(!t){try{var e=D.select('#intro').first();if(e!=null)t=String(e.text());}catch(x){}}if(!t)return '';t=t.replace(\/如果您喜欢.*$\/,'');t=t.replace(\/作者：.*所写的.*$\/,'');return t.trim();})()","kind":"meta[property=og:novel:category]@content","lastChapter":"@js:(function(){var D=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var t='';try{var m=D.select('meta[property=og:novel:latest_chapter_name]').first();if(m!=null)t=String(m.attr('content'));}catch(x){}if(!t){try{var e=D.select('div.directoryArea p a').first();if(e!=null)t=String(e.text());}catch(x){}}if(!t){try{var e=D.select('#list dl dd a').first();if(e!=null)t=String(e.text());}catch(x){}}return t.trim();})()","name":"meta[property=og:novel:book_name]@content||meta[property=og:title]@content"},"ruleContent":{"content":"@js:(function(){var D=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var e=null;try{e=D.select('#articlecon').first();}catch(x){}if(e==null){try{e=D.select('#chaptercontent').first();}catch(x){}}if(e==null){try{e=D.select('#content').first();}catch(x){}}if(e==null){return '';}var sb='';var ps=e.select('p');for(var i=0;i<ps.size();i++){var t=String(ps.get(i).text());if(t.trim())sb+=t.trim()+'\\n';}if(!sb.trim()){sb=String(e.text());}var out=sb.trim();if(out.length<100||out.indexOf('内容正在加载中')>=0){try{var doc=String(result&&typeof result.select==='function'?result.outerHtml():String(result));var m1=doc.match(\/articleid:\\s*'(\\d+)'\/);var m2=doc.match(\/chapterid:\\s*'(\\d+)'\/);if(m1&&m2){var host=String(baseUrl).replace(\/(https?:\\\/\\\/[^\\\/]+).*\/,'$1');var r2=java.post(host+'\/api\/reader_js.php','articleid='+m1[1]+'&chapterid='+m2[1]+'&pid=1',{});var body=String(r2.body());var D2=Packages.org.jsoup.Jsoup.parse(body);var ps3=D2.select('p');var sb2='';for(var i=0;i<ps3.size();i++){var t2=String(ps3.get(i).text());if(t2.trim())sb2+=t2.trim()+'\\n';}if(sb2.trim())out=sb2.trim();}}catch(x){}}return out;})()","nextContentUrl":"@js:(function(){var D=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var es=D.select('#pt_next');for(var i=0;i<es.size();i++){  var a=es.get(i);  var t=String(a.text());  var h=String(a.attr('href'));  if(t.indexOf('下一页')>=0&&h&&h.indexOf('javascript')<0&&h!='#'){return h;}}return null;})()"},"ruleExplore":{"author":"@js:(function(){var e=result;var t='';try{var p=e.select('p.author').first();if(p!=null)t=String(p.text());}catch(x){}if(!t){try{var d=e.select('div.author').first();if(d!=null)t=String(d.text());}catch(x){}}t=t.replace(\/^.*作者：\/,'');var m=t.match(\/^(.+?)\\s*\\|\/);if(m)t=m[1];return t.trim();})()","bookList":".hot_sale||.bookbox","bookUrl":"@js:(function(){var e=result;try{var a=e.select('a').first();if(a!=null)return String(a.attr('href'));}catch(x){}return '';})()","coverUrl":"@js:(function(){var e=result;try{var im=e.select('img').first();if(im!=null)return String(im.attr('src'));}catch(x){}return '';})()","name":"@js:(function(){var e=result;var t='';try{var p=e.select('p.title').first();if(p!=null)t=String(p.text());}catch(x){}if(!t){try{var a=e.select('h4.bookname a').first();if(a!=null)t=String(a.text());}catch(x){}}return t;})()"},"ruleSearch":{"author":"@js:(function(){var e=result;var t='';try{var p=e.select('p.author').first();if(p!=null)t=String(p.text());}catch(x){}if(!t){try{var d=e.select('div.author').first();if(d!=null)t=String(d.text());}catch(x){}}t=t.replace(\/^.*作者：\/,'');var m=t.match(\/^(.+?)\\s*\\|\/);if(m)t=m[1];return t.trim();})()","bookList":".hot_sale||.bookbox","bookUrl":"@js:(function(){var e=result;try{var a=e.select('a').first();if(a!=null)return String(a.attr('href'));}catch(x){}return '';})()","kind":"@js:(function(){var e=result;var t='';try{var p=e.select('p.author').first();if(p!=null)t=String(p.text());}catch(x){}if(!t){try{var ds=e.select('div.author');if(ds.size()>1)t=String(ds.get(1).text());}catch(x){}}var m=t.match(\/^(.+?)\\s*\\|\/);if(m)t=m[1];t=t.replace(\/^.*类型：\/,'');return t.trim();})()","lastChapter":"@js:(function(){var e=result;var t='';try{var ps=e.select('p.author');if(ps.size()>1)t=String(ps.get(1).text());}catch(x){}if(!t){try{var u=e.select('div.update a').first();if(u!=null)t=String(u.text());}catch(x){}}t=t.replace(\/^.*更新：\/,'').replace(\/^.*最后章节：\/,'');return t.trim();})()","name":"@js:(function(){var e=result;var t='';try{var p=e.select('p.title').first();if(p!=null)t=String(p.text());}catch(x){}if(!t){try{var a=e.select('h4.bookname a').first();if(a!=null)t=String(a.text());}catch(x){}}return t;})()"},"ruleToc":{"chapterList":"@js:(function(){var D=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));function ok(u){return \/(?:https?:\\\/\\\/[^\\\/\\s]+)?\\\/shoujixs_\\d+_\\d+\\.html$\/.test(String(u||''));}var out=new Packages.java.util.ArrayList();try{  var divs=D.select('div.directoryArea');  var as=null;  if(divs.size()>1){    as=divs.get(1).select('p a');  }else if(divs.size()==1){    as=divs.get(0).select('h2 ~ p a');    if(as.size()==0){as=divs.get(0).select('p a');}  }  if(as!=null){    for(var i=0;i<as.size();i++){      var a=as.get(i);      if(ok(String(a.attr('href'))))out.add(a.parentNode());    }  }}catch(e){}return out;})()","chapterName":"a@text","chapterUrl":"a@href","nextTocUrl":"@js:(function(){var D=(result&&typeof result.select==='function')?result:Packages.org.jsoup.Jsoup.parse(String(result));var es=D.select('a.index-container-btn');for(var i=0;i<es.size();i++){  var a=es.get(i);  if(String(a.text()).indexOf('下一页')>=0){    var h=String(a.attr('href'));    if(h&&h.indexOf('javascript')<0&&h!='#'){return h;}  }}return null;})()"},"searchUrl":"@js:(function(){var h='';try{h=String(source.getVariable()||'')}catch(e){h=''}if(h.indexOf('http')!==0){h='https:\/\/wap.shoujixs.net'}h=h.replace(\/\\\/+$\/,'');return h+'\/search\/,{\\\"js\\\":\\\"try{cookie.removeCookie(String(baseUrl))}catch(e){}try{cookie.removeCookie(h+\\'\/\\')}catch(e){}try{cookie.removeCookie(\\'https:\/\/wap.shoujixs.net\/\\')}catch(e){}try{cookie.removeCookie(\\'https:\/\/open-ki.jishouzj.cc\/\\')}catch(e){}try{cookie.removeCookie(\\'https:\/\/open-ki.jishouxs.cc\/\\')}catch(e){}\\\",\\\"method\\\":\\\"POST\\\",\\\"body\\\":\\\"searchkey={{key}}&t=1\\\",\\\"charset\\\":\\\"utf-8\\\",\\\"timeout\\\":20000}';})()","variableComment":"sjMs0\/sjMs1\/sjMs2=各线路测速结果；当前线路存于书源变量（登录面板管理）","weight":0}]