智能书库(zzbook MO版)

https://www.zzbook.net

momomo12312 (15125)10/08 11:06

UAA盗版站,国内环境访问,速度比较慢
二维码导入
{
    "bookSourceComment": "智能书库(zzbook.net)书源,支持发现、搜索、书籍详情、目录、正文与跨页续读。\n\n【站点特征】\n站点以短篇同人作品为主,全站启用 JS Cookie 校验:由前端脚本 document.cookie 写入 ge_js_validator_20(末尾数字为版本号,站点升级时可能变化),响应头不下发 Set-Cookie;请求未携带该 Cookie 时,所有页面均只返回约 278 字节的壳页。搜索接口为 POST \/search.html,目录按 \/go\/{分类}\/{书号}\/{页}\/ 分页,正文以 document.writeln(fn('base64')) 形式混淆输出,超长章节拆分为 {章节id}_1.html 续页。\n\n【实现说明】\n1. Cookie 获取与续期:jsLib 中的 zzMint 通过 java.ajax 请求首页,从返回内容中提取 Cookie 值写入 CookieStore 并随请求发送;若首页返回真实页面则沿用本地已存值,仅在无法取得时退化为 webView 加载。\n2. 请求头格式:Cookie 须以 \"ge_js_validator_20=值\" 的完整形式置于 headers 中,仅发送值会被服务端拒绝。Legado 的 java.ajax 不会自动携带 CookieStore 中的 Cookie,因此本源在规则内显式拼接请求头。\n3. jsLib 作用域:jsLib 在独立作用域中求值,其中的函数访问不到规则执行时才注入的 java 与 cookie 对象,因此本源所有 jsLib 函数均采用显式传参方式调用。\n4. 有效期处理:站点实际作废时间早于响应头声明的 max-age,故不依赖本地时间戳判断,改为每次请求前访问首页自校验,避免复用已失效的 Cookie 导致页面空白。\n5. 正文解码:正文规则先取 #booktxt 节点内容,再用 java.base64Decode 还原 writeln 中的 base64 片段,并清除残留的 banner 占位段。\n\n【已知限制】\n1. 站点自身的列表分页失效,发现页各分类的后续页与首页内容相同,本源未提供真翻页。\n2. 目录固定从第 1 页进入,正常使用流程不受影响。\n3. 部分分类条目由站点返回空书名,属站点数据问题。\n4. 每次请求需额外访问一次首页以校验 Cookie 有效性,是为保证稳定性的必要代价。\n5. 详情页无法附加 Cookie 守卫(其 URL 由列表项直接给出,不经书源规则),正常流程(先搜索或浏览分类)不受影响。\n\n本源仅供个人学习与阅读使用。站点若改版导致页面空白或解析异常,通常为 Cookie 校验机制变动所致,需同步更新书源。",
    "bookSourceGroup": "R18+",
    "bookSourceName": "智能书库(zzbook MO版)",
    "bookSourceType": 0,
    "bookSourceUrl": "https:\/\/www.zzbook.net",
    "bookUrlPattern": "https?:\/\/www\\.zzbook\\.net\/go\/\\d+\/\\d+\/",
    "customOrder": 0,
    "enabled": true,
    "enabledCookieJar": true,
    "enabledExplore": true,
    "exploreUrl": "首页推荐::<js>zzGet(java,cookie,'\/')<\/js>\n玄幻::<js>zzGet(java,cookie,'\/list\/1\/1\/')<\/js>\n重生::<js>zzGet(java,cookie,'\/list\/2\/1\/')<\/js>\n都市::<js>zzGet(java,cookie,'\/list\/3\/1\/')<\/js>\n军史::<js>zzGet(java,cookie,'\/list\/4\/1\/')<\/js>\n网游::<js>zzGet(java,cookie,'\/list\/5\/1\/')<\/js>\n科幻::<js>zzGet(java,cookie,'\/list\/6\/1\/')<\/js>\n灵异::<js>zzGet(java,cookie,'\/list\/7\/1\/')<\/js>\n言情::<js>zzGet(java,cookie,'\/list\/8\/1\/')<\/js>\n其他::<js>zzGet(java,cookie,'\/list\/9\/1\/')<\/js>",
    "header": "{\"User-Agent\":\"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36\"}",
    "jsLib": "function zzKey(){\n  return 'ge_js_validator_20';\n}\nfunction zzHome(){\n  return 'https:\/\/www.zzbook.net\/';\n}\nfunction zzJar(ck){\n  try{\n    var v = ck.getKey(zzHome(), zzKey());\n    return v ? String(v) : '';\n  }catch(e){ }\n  return '';\n}\nfunction zzMint(jv, ck){\n  var cached = zzJar(ck);\n  var s = '';\n  try{ s = String(jv.ajax(zzHome()) || ''); }catch(e){ s = ''; }\n  if(s.indexOf('hotcontent') >= 0){\n    return cached;\n  }\n  var m = s.match(\/ge_js_validator_\\d+=[^;\"']+\/);\n  if(m){\n    try{ ck.setCookie(zzHome(), m[0]); }catch(e){ }\n    var i = m[0].indexOf('=');\n    if(i > 0){ return m[0].substring(i + 1); }\n  }\n  return cached;\n}\nfunction zzHead(v){\n  if(!v){ return ',{\"webView\":true,\"webViewDelayTime\":2500}'; }\n  return ',{\"headers\":{\"Cookie\":\"' + zzKey() + '=' + v + '\"}}';\n}\nfunction zzGet(jv, ck, path){\n  var u = 'https:\/\/www.zzbook.net' + path;\n  var v = zzMint(jv, ck);\n  try{ jv.log('[zzbook] get ' + path + ' ck=' + (v ? 'Y' : 'N')); }catch(e){ }\n  return u + zzHead(v);\n}\nfunction zzPost(jv, ck){\n  var v = zzMint(jv, ck);\n  try{ jv.log('[zzbook] search ck=' + (v ? 'Y' : 'N')); }catch(e){ }\n  var o = '{\"method\":\"POST\",\"body\":\"s={{key}}\"';\n  if(v){ o += ',\"headers\":{\"Cookie\":\"' + zzKey() + '=' + v + '\"}'; }\n  else { o += ',\"webView\":true,\"webViewDelayTime\":2500'; }\n  return 'https:\/\/www.zzbook.net\/search.html,' + o + '}';\n}\nfunction zzToc(jv, ck, u){\n  var v = zzMint(jv, ck);\n  try{ jv.log('[zzbook] toc ck=' + (v ? 'Y' : 'N')); }catch(e){ }\n  return String(u) + zzHead(v);\n}",
    "lastUpdateTime": "1791428813654",
    "respondTime": 0,
    "ruleBookInfo": {
        "author": "@css:meta[property='og:novel:author']@content",
        "coverUrl": "@css:meta[property='og:image']@content",
        "intro": "@css:meta[property='og:description']@content##(<br\\s*\/?>)?\\s*三秒记住本站[\\s\\S]*|^\\s*p\\s*|\\s*\/p\\s*$|(?<![A-Za-z])rn(?![A-Za-z])",
        "kind": "@css:meta[property='og:novel:category']@content",
        "lastChapter": "@css:meta[property='og:novel:latest_chapter_name']@content",
        "name": "@css:meta[property='og:novel:book_name']@content",
        "tocUrl": "@js:(function(){var u=String((book&&book.bookUrl)||baseUrl||'');u=u.replace(\/\\\/$\/,'');u=u?(u+'\/1\/'):'1\/';if(u.indexOf('http')!==0){return u;}return zzToc(java,cookie,u);})()",
        "wordCount": "@css:#info p.visible-xs:contains(万)@text##字数:",
        "updateTime": "@css:meta[property='og:novel:update_time']@content"
    },
    "ruleContent": {
        "content": "@css:#booktxt@all@js:zzMint(java,cookie);var h=String(result);var re=\/writeln\\([^']*'([^']+)'\/g;var m,o='';while((m=re.exec(h))!==null){try{o+=java.base64Decode(m[1]);}catch(e){ }}o.replace(\/<p>banner\"?<\\\/p>|<p>><\\\/p>\/gi,'')",
        "nextContentUrl": "@js:var r=String(java.getString('class.next@href',null,true));var c=String((chapter&&chapter.url)||baseUrl||'');c=c.replace(\/\\.html.*$\/,'').replace(\/_\\d+$\/,'');var id=c.substring(c.lastIndexOf('\/')+1);var f=r.replace(\/.*\\\/\/,'').replace(\/\\.html.*$\/,'');(id&&r&&f.indexOf(id+'_')===0)?r:'javascript:;'",
        "sourceRegex": "",
        "webJs": ""
    },
    "ruleExplore": {
        "author": "@css:.btm@ownText||.s4@text||.s5@text||i@text",
        "bookList": "@css:#hotcontent .item, #hotcontent li, .novelslist li, #newscontent li",
        "bookUrl": "@css:dt a@href||.s2 a@href||a@href",
        "coverUrl": "@css:img@data-original",
        "intro": "@css:dd@text##^[.…]+$",
        "kind": "@css:.s1@text",
        "lastChapter": "@css:.s3 a@text",
        "name": "@css:dt a@text||.s2 a@text||a@text",
        "wordCount": "@css:.btm em.orange@text"
    },
    "ruleSearch": {
        "author": "@css:.btm@ownText",
        "bookList": "@css:#hotcontent .item",
        "bookUrl": "@css:dt a@href",
        "checkKeyWord": "总裁",
        "coverUrl": "@css:img@data-original",
        "intro": "@css:dd@text##^[.…]+$",
        "kind": "@css:.btm em.orange@text",
        "lastChapter": "",
        "name": "@css:dt a@text",
        "wordCount": ""
    },
    "ruleToc": {
        "chapterList": "@css:#list a[rel=chapter]",
        "chapterName": "@css:dd@text",
        "chapterUrl": "href",
        "isVip": "",
        "nextTocUrl": "@css:#list dl>dt:first-child option@value",
        "updateTime": ""
    },
    "searchUrl": "<js>zzPost(java,cookie)<\/js>",
    "weight": 0
}
广告