[{"bookSourceName":"书豪小说网","bookSourceGroup":"小说","bookSourceType":0,"bookSourceUrl":"https:\/\/www.shuhaoxs.com\/","bookUrlPattern":"https:\/\/www\\.shuhaoxs\\.com\/book\/[0-9a-z]+\\.html","enabled":true,"enabledCookieJar":false,"enabledExplore":true,"customOrder":0,"header":"{\"User-Agent\":\"Mozilla\/5.0 (Linux; Android 13; 2211133C) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/126.0.0.0 Mobile Safari\/537.36\"}","concurrentRate":"","loginUrl":"","loginUi":"","loginCheckJs":"","jsLib":"","bookSourceComment":"书豪小说网 shuhaoxs.com。站点已故意移除站内搜索（搜索框 onclick 跳外部 rrssk.com，index.php 只有 askBook\/addBookshelf\/list 三个 action，list 页不接受 wd\/key\/search 参数）→ searchUrl 无法实现，只能靠发现页浏览。正文\/目录\/详情\/发现均已实测通过。","variableComment":"","coverDecodeJs":"","eventListener":false,"customButton":false,"exploreUrl":"排行榜::https:\/\/www.shuhaoxs.com\/rank{{page - 1 == 0 ? '.html' : '-' + page + '.html'}}\n玄幻小说::https:\/\/www.shuhaoxs.com\/list-4{{page == 1 ? '\/' : '-' + page + '\/'}}\n奇幻小说::https:\/\/www.shuhaoxs.com\/list-5{{page == 1 ? '\/' : '-' + page + '\/'}}\n武侠小说::https:\/\/www.shuhaoxs.com\/list-6{{page == 1 ? '\/' : '-' + page + '\/'}}\n仙侠小说::https:\/\/www.shuhaoxs.com\/list-7{{page == 1 ? '\/' : '-' + page + '\/'}}\n都市小说::https:\/\/www.shuhaoxs.com\/list-8{{page == 1 ? '\/' : '-' + page + '\/'}}\n军事小说::https:\/\/www.shuhaoxs.com\/list-9{{page == 1 ? '\/' : '-' + page + '\/'}}\n历史小说::https:\/\/www.shuhaoxs.com\/list-10{{page == 1 ? '\/' : '-' + page + '\/'}}\n游戏小说::https:\/\/www.shuhaoxs.com\/list-11{{page == 1 ? '\/' : '-' + page + '\/'}}\n体育小说::https:\/\/www.shuhaoxs.com\/list-12{{page == 1 ? '\/' : '-' + page + '\/'}}\n科幻小说::https:\/\/www.shuhaoxs.com\/list-13{{page == 1 ? '\/' : '-' + page + '\/'}}\n诸天无限::https:\/\/www.shuhaoxs.com\/list-14{{page == 1 ? '\/' : '-' + page + '\/'}}\n悬疑小说::https:\/\/www.shuhaoxs.com\/list-15{{page == 1 ? '\/' : '-' + page + '\/'}}\n古代言情::https:\/\/www.shuhaoxs.com\/list-16{{page == 1 ? '\/' : '-' + page + '\/'}}\n仙侠奇缘::https:\/\/www.shuhaoxs.com\/list-17{{page == 1 ? '\/' : '-' + page + '\/'}}\n现代言情::https:\/\/www.shuhaoxs.com\/list-18{{page == 1 ? '\/' : '-' + page + '\/'}}\n浪漫青春::https:\/\/www.shuhaoxs.com\/list-19{{page == 1 ? '\/' : '-' + page + '\/'}}\n玄幻言情::https:\/\/www.shuhaoxs.com\/list-20{{page == 1 ? '\/' : '-' + page + '\/'}}\n悬疑推理::https:\/\/www.shuhaoxs.com\/list-21{{page == 1 ? '\/' : '-' + page + '\/'}}\n科幻空间::https:\/\/www.shuhaoxs.com\/list-22{{page == 1 ? '\/' : '-' + page + '\/'}}\n游戏竞技::https:\/\/www.shuhaoxs.com\/list-23{{page == 1 ? '\/' : '-' + page + '\/'}}\n短篇言情::https:\/\/www.shuhaoxs.com\/list-24{{page == 1 ? '\/' : '-' + page + '\/'}}\n轻小说::https:\/\/www.shuhaoxs.com\/list-42{{page == 1 ? '\/' : '-' + page + '\/'}}\n原生幻想::https:\/\/www.shuhaoxs.com\/list-25{{page == 1 ? '\/' : '-' + page + '\/'}}\n恋爱日常::https:\/\/www.shuhaoxs.com\/list-26{{page == 1 ? '\/' : '-' + page + '\/'}}\n衍生同人::https:\/\/www.shuhaoxs.com\/list-27{{page == 1 ? '\/' : '-' + page + '\/'}}\n搞笑吐槽::https:\/\/www.shuhaoxs.com\/list-28{{page == 1 ? '\/' : '-' + page + '\/'}}","exploreScreen":"","searchUrl":"{{java.log('SEARCH-TOAST-FIRED'); java.toast('本书源不支持搜索：请复制小说详情页网址，用「添加网址」加入书籍'); 'https:\/\/www.shuhaoxs.com\/index.php?action=book'}}","ruleSearch":{"bookList":"","name":"","author":"","kind":"","wordCount":"","lastChapter":"","intro":"","coverUrl":"","bookUrl":"","updateTime":"","checkKeyWord":"沙雕只是保护色"},"ruleExplore":{"bookList":"class.dList@tag.li||class.rankIBox@class.list@tag.li","name":"class.name.0@tag.a.0@text","author":"class.info.0@class.dlS.0@tag.dd@text","kind":"","wordCount":"","lastChapter":"class.dlS.1@tag.dd@text##\\s+## ","intro":"class.intro@text##\\s+## ","coverUrl":"class.pic@tag.img@src","bookUrl":"class.name.0@tag.a.0@href","updateTime":""},"ruleBookInfo":{"init":"","name":"@css:meta[property=og:novel:book_name]@content","author":"@css:meta[property=og:novel:author]@content","kind":"@css:meta[property=og:novel:category]@content","wordCount":"","lastChapter":"@css:meta[property=og:novel:latest_chapter_name]@content","intro":"class.intro.0@text","coverUrl":"{{@@class.pic.0@tag.img@src}}","tocUrl":"","updateTime":"@css:meta[property=og:novel:update_time]@content","canReName":"","downloadUrls":""},"ruleToc":{"chapterList":"@js:(function(){var s=String(result);var id='';var m1=\/\\\/chapter\\\/([0-9A-Za-z]+)\\.html\/.exec(String(baseUrl));if(m1){id=m1[1];}if(!id){var m2=\/\\\/book\\\/([0-9A-Za-z]+)-\\d+\\.html\/.exec(String(baseUrl));if(m2){id=m2[1];}}if(!id){var m3=\/\\\/book\\\/([0-9A-Za-z]+)\\.html\/.exec(String(baseUrl));if(m3){id=m3[1];}}if(!id){var m4=\/\\\/chapter\\\/([0-9A-Za-z]+)\\.html\/.exec(s);if(m4){id=m4[1];}}if(!id){var m5=\/\\\/book\\\/([0-9A-Za-z]+)-\\d+\\.html\/.exec(s);if(m5){id=m5[1];}}if(!id){return [];}var map={};function add(url,name){if(url&&name){if(!map[url]){map[url]=name;}}}var re=\/<li>\\s*<a href=\"(\\\/book\\\/[0-9A-Za-z]+-\\d+\\.html)\">([^<]+)<\\\/a>\\s*<\\\/li>\/g,g;while((g=re.exec(s))!=null){add(g[1],g[2]);}var max=0,r2=\/-([0-9]+)\\.html\/g,h;while((h=r2.exec(s))!=null){var v=parseInt(h[1],10);if(v>max){max=v;}}if(max>100){var last=Math.ceil(max\/100);if(last>30){last=30;}var OB=String.fromCharCode(123),CB=String.fromCharCode(125),Q=String.fromCharCode(34);var c=java.createSymmetricCrypto('AES\/CBC\/PKCS5Padding','c5qYWt3ej45bbLVu1lkVnMYhfKc0uej9','7657385111503414');for(var p=2;p<=last;p++){try{var payload=OB+Q+'id'+Q+':'+Q+id+Q+','+Q+'page'+Q+':'+p+CB;var e=java.encodeURI(String(c.encryptBase64(payload)));var raw=String(java.ajax('https:\/\/www.shuhaoxs.com\/index.php?action=loadChapterPage&data='+e+',{\"method\":\"POST\",\"body\":\"data='+e+'\"}'));var o=JSON.parse(raw);if(o&&o.data){for(var i=0;i<o.data.length;i++){add(o.data[i].chapterurl,o.data[i].chaptername);}}}catch(err){java.log('api page '+p+' fail '+err);}}}var need=false,stamp=0,old='';try{old=String(source.get('_tocEnum_'+id));}catch(e0){old='';}if(old){var pp=old.split('|');if(pp.length>1){stamp=parseInt(pp[1],10)||0;}}var nowMs=new Date().getTime();if(max>100&&(nowMs-stamp>43200000)){need=true;}if(need){var cnt=0,guard=0;for(var q=101;q<=max&&guard<250;q++){var ku='\/book\/'+id+'-'+q+'.html';if(map[ku]){continue;}guard++;try{var ph=String(java.ajax('https:\/\/www.shuhaoxs.com\/book\/'+id+'-'+q+'.html'));var pm=\/<title>([^<]*)<\\\/title>\/.exec(ph);var pn=pm?String(pm[1]).split('|')[0].replace(\/^\\s+|\\s+$\/g,''):'';if(!pn||pn.indexOf('书豪小说网')>=0){pn='第'+q+'章';}map[ku]=pn;cnt++;}catch(pe){java.log('enum '+q+' fail '+pe);}}try{var parts=[];for(var uu in map){parts.push(uu+'>'+map[uu]);}source.put('_tocEnum_'+id,'v2|'+nowMs+'|'+parts.join('\\n'));}catch(e3){java.log('cache save fail '+e3);}java.log('ENUM done new='+cnt+' guard='+guard);}else if(old.indexOf('v2|')===0){var body2=old.substring(old.indexOf('|',old.indexOf('|')+1)+1);var rows=body2.split('\\n'),added=0;for(var r=0;r<rows.length;r++){var line=rows[r];if(!line){continue;}var gt=line.indexOf('>');if(gt<0){continue;}var u2=line.substring(0,gt),n2=line.substring(gt+1);if(u2&&!map[u2]){map[u2]=n2;added++;}}java.log('ENUM cache-hit restored='+added+' age='+(nowMs-stamp));}else{java.log('ENUM cached age='+(nowMs-stamp));}var order=[];for(var u in map){order.push({u:u,n:map[u]});}order.sort(function(a,b){var x=\/-([0-9]+)\\.html$\/.exec(a.u),y=\/-([0-9]+)\\.html$\/.exec(b.u);return (x?parseInt(x[1],10):0)-(y?parseInt(y[1],10):0);});var out=[];for(var k=0;k<order.length;k++){out.push('<li><a href=\"'+order[k].u+'\">'+order[k].n+'<\/a><\/li>');}java.log('CL id='+id+' total='+out.length+' max='+max);return out;})()","chapterName":"@@tag.a@text","chapterUrl":"@@tag.a@href","nextTocUrl":"","isVolume":"","isVip":"","isPay":"","updateTime":"","preUpdateJs":"","formatJs":""},"ruleContent":{"content":"@js:(function(){var s=String(result);var m=\/<div class=\"content\">([\\s\\S]*?)<\\\/div>\/.exec(s);if(m){s=m[1];}s=s.replace(\/<br\\s*\\\/?>\/gi,String.fromCharCode(10)).replace(\/<\\\/p>\/gi,String.fromCharCode(10)).replace(\/<[^>]+>\/g,'').replace(\/&nbsp;\/g,' ').replace(\/&amp;\/g,'&');var L=s.split(\/\\r?\\n\/),o=[],i,l,j,had,k;var KW=['书豪小说网','专注提供最舒适的阅读体验','探索原生幻想','分类导航','抢先更新','独家首发','诚意奉献','新作来袭','精彩不容错过','全本放送','推荐阅读','人人书库','欢迎访问','您喜欢的','喜欢的原生幻想','我们都有','APP，访问','APP，请','使用“人人书库”'];var SAFE=['shuhaoxs.com','github.com','github.io','gitlab.com','stackoverflow.com','baidu.com','google.com','gmail.com','youtube.com','wikipedia.org','qq.com','weibo.com','bilibili.com','zhihu.com','douban.com','tieba.com','163.com','126.com','sina.com','sohu.com','ifeng.com','cnblogs.com','taobao.com','tmall.com','jd.com','alipay.com','alibaba.com','aliyun.com','wechat.com','tencent.com','xiaomi.com','huawei.com','mi.com','microsoft.com','apple.com','amazon.com','netflix.com','spotify.com','twitter.com','facebook.com','instagram.com','whatsapp.com','telegram.org','openai.com','cloudflare.com','mozilla.org','python.org','nodejs.org','npmjs.com','jetbrains.com','adobe.com','intel.com','nvidia.com','amd.com'];var BAD=\/(^|[^A-Za-z0-9_.-])((?:[A-Za-z0-9][A-Za-z0-9_-]{4,61}\\.)+(?:com|net|org|cc|cn|la|top|xyz|vip|me|info|biz|tv|co|io|us|pw|site|online|shop|fun|live|club))(?![.\\\/:A-Za-z0-9_-])\/gi;function cjk(c){return (c>=0x2018&&c<=0x201d)||(c>=0x3000&&c<=0x303f)||(c>=0x4e00&&c<=0x9fff)||(c>=0xff00&&c<=0xffef)||c===0x2026||c===0x2014||c===0x22||c===0x27;}for(i=0;i<L.length;i++){l=L[i].replace(\/^\\s+|\\s+$\/g,'');if(l.length<1){continue;}var hold=[],sd;for(sd=0;sd<SAFE.length;sd++){var sr=new RegExp('(?:[A-Za-z0-9_-]+\\\\.)*'+SAFE[sd].replace(\/\\\\.\/g,'\\\\.'),'gi');l=l.replace(sr,function(mm){hold.push(mm);return String.fromCharCode(1)+(hold.length-1)+String.fromCharCode(2);});}for(k=0;k<8;k++){var t=l.replace(BAD,'$1');if(t===l){break;}l=t;}l=l.replace(new RegExp(String.fromCharCode(1)+'(\\\\d+)'+String.fromCharCode(2),'g'),function(mm,ix){return hold[+ix];});var out2='',ci,pr,nx;for(ci=0;ci<l.length;ci++){var ch=l.charAt(ci);if(ch===' '||ch==='\\t'){pr=out2.length?out2.charCodeAt(out2.length-1):0;nx=(ci+1<l.length)?l.charCodeAt(ci+1):0;if(cjk(pr)&&cjk(nx)){continue;}}out2+=ch;}l=out2.replace(\/^[ \\t]+|[ \\t]+$\/g,'').replace(\/[ \\t]{2,}\/g,' ');l=l.replace(\/[\\uFF08(]\\s*[\\uFF09)]|[\\u300A\\u3008]\\s*[\\u300B\\u3009]\/g,'');if(l.length<1){continue;}had=false;for(j=0;j<KW.length;j++){if(l.indexOf(KW[j])>=0){had=true;break;}}if(had){continue;}o.push(l);}return o.join(String.fromCharCode(10));})()","replaceRegex":"","nextContentUrl":"@css:.btnW.font16 a:contains(下一页)@href","webJs":"","subContent":"","title":"","sourceRegex":"","imageStyle":"","imageDecode":"","payAction":"","callBackJs":""},"lastUpdateTime":"1792064756811"}]