🍑西瓜书屋[可换备用站]

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
}
广告