🍑西瓜书屋[可换备用站]
https://www.xiguashuwu2.com
laizhiyu (6509)10/30 03:14
≡ 西瓜书屋 v3(2026-10-29 全量重写·多域名切换版) 【域名体系】主站 www.xiguashuwu2.com(CF盾)|备用 www.xiguashuwu.net(免CF)|备用 www.xiguashuwu.com(免CF,http)。 登录界面【切换网址】按钮循环切换三站并自动写入免验证Cookie(nginx_waf_passed=1);搜索/发现/详情/目录/正文规则全部相对路径,切站即全链路跟随;书架书章节为相对URL时同样跟随。 【搜索】绝对URL构造,跟随登录面板所选站点。/search/关键词。主站首次搜索若弹CF盾,弹出的是带关键词的搜索页,通过一次即长期有效;若过盾未完成会自动切到备用站(.net)并提示再搜一次;请勿连续频繁搜索(站点限3秒/次)。 【详情】og:meta+页面字段双保险;封面取页内 _src(og:image 路径有重复段不可用)。 【目录】catalog 正序分页(100章/页),下一页为JS跳转无href,已用页码正则还原;≤100章单页自动收尾(return null终止)。 【正文】单JS三形态适配:①#C0NTENT静态页 ②meta乱序页(base64+UpWz公式 v-(i+1)%code 实证还原) ③AES加密页(newcon+页内passphrase,md5前16=iv/后16=key,CBC/PKCS7)。 广告清理:本站新域名提示/simishuwu间隔域名/本章已阅读完毕/页内标题。 【字图】正文敏感字为站内图片(wzbodyimg/*.png)按原图显示;旧版48KB置换表哈希已被站点轮换失效故移除,需要文字化请自行在替换净化补充映射。 【发现】18入口已修复旧版分类ID动态拼接bug(玄幻=1…复古言情=15,完本/排行独立)。 【兼容】LT(gedoor)+E(Luoyacheng)双版本实测API:createSymmetricCrypto/md5Encode/base64Decode/getVariable/setVariable/refreshExplore/cookie.setCookie;登录按钮action传(java,source)环境真实标识符;viewName动态文本两版支持。 【实测】搜索16本/详情/目录/正文三形态python级验证通过;第3页为空页干扰页自动跳过。
{
"bookSourceComment": "≡ 西瓜书屋 v3(2026-10-29 全量重写·多域名切换版)\n\n【域名体系】主站 www.xiguashuwu2.com(CF盾)|备用 www.xiguashuwu.net(免CF)|备用 www.xiguashuwu.com(免CF,http)。\n登录界面【切换网址】按钮循环切换三站并自动写入免验证Cookie(nginx_waf_passed=1);搜索\/发现\/详情\/目录\/正文规则全部相对路径,切站即全链路跟随;书架书章节为相对URL时同样跟随。\n【搜索】绝对URL构造,跟随登录面板所选站点。\/search\/关键词。主站首次搜索若弹CF盾,弹出的是带关键词的搜索页,通过一次即长期有效;若过盾未完成会自动切到备用站(.net)并提示再搜一次;请勿连续频繁搜索(站点限3秒\/次)。\n【详情】og:meta+页面字段双保险;封面取页内 _src(og:image 路径有重复段不可用)。\n【目录】catalog 正序分页(100章\/页),下一页为JS跳转无href,已用页码正则还原;≤100章单页自动收尾(return null终止)。\n【正文】单JS三形态适配:①#C0NTENT静态页 ②meta乱序页(base64+UpWz公式 v-(i+1)%code 实证还原) ③AES加密页(newcon+页内passphrase,md5前16=iv\/后16=key,CBC\/PKCS7)。\n广告清理:本站新域名提示\/simishuwu间隔域名\/本章已阅读完毕\/页内标题。\n【字图】正文敏感字为站内图片(wzbodyimg\/*.png)按原图显示;旧版48KB置换表哈希已被站点轮换失效故移除,需要文字化请自行在替换净化补充映射。\n【发现】18入口已修复旧版分类ID动态拼接bug(玄幻=1…复古言情=15,完本\/排行独立)。\n【兼容】LT(gedoor)+E(Luoyacheng)双版本实测API:createSymmetricCrypto\/md5Encode\/base64Decode\/getVariable\/setVariable\/refreshExplore\/cookie.setCookie;登录按钮action传(java,source)环境真实标识符;viewName动态文本两版支持。\n【实测】搜索16本\/详情\/目录\/正文三形态python级验证通过;第3页为空页干扰页自动跳过。",
"bookSourceGroup": "AI,R18",
"bookSourceName": "🍑西瓜书屋[可换备用站]",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/www.xiguashuwu2.com",
"bookUrlPattern": "https?:\/\/www\\.xiguashuwu2?\\.(?:com|net)\/book\/\\d+\/.*",
"customButton": false,
"customOrder": 1,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "[{\"title\": \"全部\", \"url\": \"\/category\/0\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1.0}}, {\"title\": \"玄幻\", \"url\": \"\/category\/1\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"修真\", \"url\": \"\/category\/2\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"都市\", \"url\": \"\/category\/3\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"历史\", \"url\": \"\/category\/4\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"网游\", \"url\": \"\/category\/5\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"科幻\", \"url\": \"\/category\/6\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"言情\", \"url\": \"\/category\/7\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"其他\", \"url\": \"\/category\/8\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"经典\", \"url\": \"\/category\/9\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"同人\", \"url\": \"\/category\/10\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"高辣\", \"url\": \"\/category\/11\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"耽美\", \"url\": \"\/category\/12\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"情欲\", \"url\": \"\/category\/13\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"复古耽美\", \"url\": \"\/category\/14\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"复古言情\", \"url\": \"\/category\/15\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"完本\", \"url\": \"\/category\/finish\/0\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1.0}}, {\"title\": \"排行\", \"url\": \"\/rank\/all\/0\/{{page}}.html\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1.0}}]",
"header": "{\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 10; arm64; k) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/126.0.0.0 XiaoMi\/MiuiBrowser\/19.0.0 swan-mibrowser Mobile EdgA\/126.0.0.0 Safari\/537.36\"}",
"lastUpdateTime": "1793301292957",
"loginCheckJs": "(function(){\nvar b='';\ntry{b=String(result.body?(typeof result.body==='function'?result.body():result.body):result)}catch(e){try{b=String(result||'')}catch(e2){b=''}}\nvar isCF=b.indexOf('Just a moment')>=0||b.indexOf('_cf_chl_opt')>=0||b.indexOf('challenges.cloudflare')>=0||b.indexOf('cf-chl')>=0;\nif(!isCF){return result;}\nvar k=String(key||'');\nvar h='';\ntry{h=String(source.getVariable()||'')}catch(e){h=''}\nif(h.indexOf('http')!==0){h='https:\/\/www.xiguashuwu2.com'}\nh=h.replace(\/[\/]+$\/,'');\nfunction bodyOf(x){var t='';try{t=String(x.body?(typeof x.body==='function'?x.body():x.body):x)}catch(e){t=''}return t;}\nfunction good(t){return t.length>500&&t.indexOf('安全验证')<0&&t.indexOf('_cf_chl_opt')<0&&t.indexOf('Just a moment')<0;}\n\/\/ 1) 镜像站透明兜底:同一后端,免CF(先种土盾Cookie保证全新安装也可用)\ntry{\n var alt=(h.indexOf('xiguashuwu2')>=0)?'https:\/\/www.xiguashuwu.net':h;\n if(alt!==h){\n try{cookie.setCookie(alt,'nginx_waf_passed=1')}catch(e0){}\n var r3=java.connect(alt+'\/search\/'+encodeURIComponent(k));\n if(good(bodyOf(r3))){java.toast('主站CF拦截,已用镜像站返回结果');return r3;}\n }\n}catch(e1){}\n\/\/ 2) 人工过盾(弹带关键词的搜索页,不是首页)\ntry{\n var r2=java.startBrowserAwait(h+'\/search\/'+encodeURIComponent(k),'西瓜书屋·CF验证('+k+')');\n if(good(bodyOf(r2))){return r2;}\n}catch(err){}\njava.toast('主站被CF拦截且镜像不可用,请在登录面板切备用站后重试');\nreturn result;\n})()",
"loginUi": "[{\"name\": \"状态栏\", \"type\": \"button\", \"action\": \"FQ_xg_now(java,source)\", \"viewName\": \"'🌐 当前:'+(source.getVariable()||source.getKey())\"}, {\"name\": \"切换网址\", \"type\": \"button\", \"action\": \"FQ_xg_swap(java,source)\", \"viewName\": \"'🔁 切换网址(当前→下一站) '+(source.getVariable()||'')\"}, {\"name\": \"回主站\", \"type\": \"button\", \"action\": \"FQ_xg_pick0(java,source)\", \"viewName\": \"'🏠 回主站 xiguashuwu2.com'\"}, {\"name\": \"用备用站\", \"type\": \"button\", \"action\": \"FQ_xg_pick2(java,source)\", \"viewName\": \"'🛡 备用站 xiguashuwu.net(免CF)'\"}, {\"name\": \"检查连接状态\", \"type\": \"button\", \"action\": \"FQ_xg_check(java,source)\", \"viewName\": \"'🔍 检查连接状态'\"}, {\"name\": \"手动过CF验证\", \"type\": \"button\", \"action\": \"FQ_xg_cf(java,source)\", \"viewName\": \"'🛂 手动过CF验证'\"}, {\"name\": \"⚠️ 站点限频3秒\/次;主站搜索过一次CF盾长期有效;备用站免CF。\", \"type\": \"label\"}]",
"loginUrl": "function login(){java.toast('本站无需账号登录;如遇CF盾请直接搜索一次,会自动弹出验证')}\nfunction xgHosts(){\n return ['https:\/\/www.xiguashuwu2.com','https:\/\/www.xiguashuwu.net','http:\/\/www.xiguashuwu.com'];\n}\nfunction xgHost(sv){\n var h=String(sv.getVariable()||'');\n var hs=xgHosts();\n for(var i=0;i<hs.length;i++){if(h==hs[i]){return hs[i];}}\n return String(sv.getKey());\n}\nfunction xgSet(sv,u){\n sv.setVariable(u);\n cookie.setCookie(u,'nginx_waf_passed=1');\n if(u.indexOf('xiguashuwu2')>=0){\n java.toast('已切换主站(需过CF验证,通过一次长期有效)');\n }else{\n java.toast('已切换备用站并写入免验证Cookie');\n }\n return u;\n}\nfunction FQ_xg_now(java,source){java.toast('当前网址:'+xgHost(source)+'(点击切换按钮换站)');}\nfunction FQ_xg_swap(java,source){\n var hs=xgHosts();\n var cur=xgHost(source);\n var k=0;\n for(var i=0;i<hs.length;i++){if(hs[i]==cur){k=(i+1)%hs.length;break;}}\n xgSet(source,hs[k]);\n}\nfunction FQ_xg_pick0(java,source){xgSet(source,xgHosts()[0]);}\nfunction FQ_xg_pick2(java,source){xgSet(source,xgHosts()[1]);}\nfunction FQ_xg_check(java,source){\n var u=xgHost(source);\n try{\n var r=String(java.ajax(u)||'');\n if(r.indexOf('安全验证')>=0){\n java.toast('站点在线,但缺免验证Cookie,点【切换网址】重新选一次即可修复');\n }else if(r.indexOf('Just a moment')>=0){\n java.toast('主站CF盾拦截中:正常搜索一次会自动弹出验证');\n }else if(r.length<500){\n java.toast('网站响应异常('+r.length+'字符),站点可能已更换域名');\n }else{\n java.toast('站点连接正常('+u+')');\n }\n }catch(e){java.toast('检查失败:'+e)}\n}\nfunction FQ_xg_cf(java,source){\n try{\n java.startBrowserAwait(xgHost(source)+'\/search\/','西瓜书屋·人机验证');\n java.toast('验证流程结束,若搜索仍失败请稍后重试');\n }catch(e){java.toast('未完成:'+e)}\n}",
"respondTime": 180000,
"ruleBookInfo": {
"author": "class.author@a@text",
"coverUrl": "class.BGsectionOne-top-left@img@_src||class.BGsectionOne-top-left@img@src",
"intro": "class.BGsectionTwo-bottom@html",
"kind": "class.category@span.0@text",
"lastChapter": "class.newestChapter@span@text",
"name": "class.title@text",
"tocUrl": "text.查看全部章节@href||text.章节目录@href"
},
"ruleContent": {
"content": "<js>(function(){\nvar pg=String(src||result||'');\nif(!pg){return '';}\nvar out='';\ntry {\n var endIdx=pg.indexOf('<div id=\"cload\"');\n var seg=endIdx>=0?pg.substring(0,endIdx):pg;\n var mnr=pg.match(\/nrid=\"(.*?)\"\/);\n var nid=mnr?mnr[1]:'C0NTENT';\n var startIdx=pg.indexOf('id=\"'+nid+'\"');\n if(startIdx>=0){seg=pg.substring(startIdx,endIdx>=0?endIdx:pg.length);}\n var smIdx=seg.indexOf('<div class=\"s_m\"');\n if(smIdx>=0){var smEnd=seg.indexOf('<\/div>',smIdx)+6;seg=seg.substring(0,smIdx)+seg.substring(smEnd);}\n var blocks=seg.match(\/<div><p[\\s\\S]*?<\\\/p><\\\/div>\/g)||[];\n \/\/ 块内明文长度\n var plainLen=0;\n for(var bi=0;bi<blocks.length;bi++){\n plainLen+=blocks[bi].replace(\/<[^>]+>\/g,'').replace(\/\\s\/g,'').length;\n }\n \/\/ UpWz 判据: nid 非 C0NTENT + meta client(b64序号) + codeurl + 序号数==块数 + 序号范围在[0,块数*2)内\n var b6=pg.match(\/<meta name=\"client\" content=\"([^\"]+)\"\/);\n var cd=pg.match(\/codeurl=\"(\\d+)\"\/);\n var isUpWz=false; var nums=null; var code=0;\n if(b6&&cd&&nid!=='C0NTENT'&&blocks.length>1){\n var seq=String(java.base64Decode(b6[1]));\n nums=seq.split(\/[A-Z]+%\/);\n var cnt=0;\n for(var qi=0;qi<nums.length;qi++){ if(!isNaN(parseInt(nums[qi],10))) cnt++; }\n code=parseInt(cd[1],10);\n if(cnt===blocks.length){ isUpWz=true; }\n }\n \/\/ AES 判据: 页面有 newcon=decodeURIComponent 且容器无正文(全部块合计明文<10字)\n var m1=pg.match(\/newcon=decodeURIComponent\\(\"([^\"]+)\"\\)\/);\n var m2=pg.match(\/d\\(newcon,\"([^\"]+)\"\\)\/);\n if(plainLen<10 && m1 && m2){\n var md=String(java.md5Encode(m2[1]));\n out=String(java.createSymmetricCrypto('AES\/CBC\/PKCS5Padding', md.substring(16), md.substring(0,16)).decryptStr(decodeURIComponent(m1[1])));\n } else if(isUpWz && plainLen>=10){\n var slots=[];\n for(var i=0;i<blocks.length;i++){\n var v=parseInt(nums[i],10);\n if(isNaN(v)){continue;}\n var hh=blocks[i];\n if(hh.indexOf('本站新')>=0||\/[\\s\\..]*si[\\s\\..]*m[\\s\\..]*i\/i.test(hh)){continue;}\n slots[v-Math.ceil((i+1)%code)]=hh;\n }\n var ps=[];\n for(var j=0;j<slots.length;j++){if(slots[j]){ps.push(slots[j]);}}\n out=ps.join('');\n } else if(plainLen>=10){\n out=blocks.join('');\n } else { out=''; }\n out=String(out||'');\n out=out.replace(\/<h1>[\\s\\S]*?<\\\/h1>\/g,'');\n out=out.replace(\/本站新(短)域名[^<]*\/g,'');\n out=out.replace(\/[\\??\\s]*s[\\s\\..]*i[\\s\\..]*m[\\s\\..]*i[\\s\\..]*s[\\s\\..]*h[\\s\\..]*u[\\s\\..]*w[\\s\\..]*u[\\s\\..]*c[\\s\\..]*o[\\s\\..]*m[\\s\\..]*\/gi,'');\n out=out.replace(\/本章(已阅读)?完毕[^<]*\/g,'');\n out=out.replace(\/本章尚未读完[^<]*\/g,'');\n return out;\n} catch(e){ java.log('xg content err: '+e); return String(out||''); }\n})()<\/js>",
"nextContentUrl": "text.下一页@href"
},
"ruleExplore": {
"author": "p.1@span@a@text",
"bookList": "class.CGsectionTwo-right-content-unit",
"bookUrl": "a.title@href||p.0@a@href",
"intro": "p.2@text",
"name": "a.title@text||p.0@a@text"
},
"ruleSearch": {
"author": "span.2@text",
"bookList": "<js>String(result||'').indexOf('未搜索到相关的小说')>=0?null:result<\/js>\n.SHsectionThree-middle p",
"bookUrl": "span.1@a@href",
"checkKeyWord": "清和",
"kind": "span.0@text##\\[|\\]",
"name": "span.1@text"
},
"ruleToc": {
"chapterList": "class.BCsectionTwo-top@li@a",
"chapterName": "text",
"chapterUrl": "href",
"nextTocUrl": "text.下一页@href##.*\\('(\\d+)','(\\d+)'\\).*##\/book\/$1\/catalog\/$2.html"
},
"searchUrl": "@js:(function(){var k=String(key||'');var h='';try{h=String(source.getVariable()||'')}catch(e){h=''}if(h.indexOf('http')!==0){h='https:\/\/www.xiguashuwu2.com'}h=h.replace(\/[\/]+$\/,'');var u=h+'\/search\/'+encodeURIComponent(k);var isLT=false;try{isLT=(typeof source.getLoginUiJs==='function')}catch(e){isLT=false}if(isLT&&h.indexOf('xiguashuwu2')>=0){return u+',{\"webView\":true,\"webViewDelayTime\":1800,\"timeout\":30000,\"retry\":1}'}return u+',{\"timeout\":30000,\"retry\":1}';})()",
"weight": 0
}