🌙 69书吧

https://www.69shuba.com

t2157111 (9598)07/26 18:24

v26.07.26 [阅读书源] 69书吧

附注:
做了很多细节上的处理,使用体验上会好很多,自行测试

*二改请标明原作者
// 2026/07/26/ By sjshb57
// 重写过盾流程,修复搜索结果为空的问题

链接:https://shuyuan.nyasama.net/shuyuan/28549968f6b85a99afb687113b1367f6.json

强烈推荐搭配使用主包制作的legado数字标题!!非常智能!代码已开源↓

推推:https://github.com/sjshb57/legado-57
#阅读书源#
二维码导入
{
    "bookSourceComment": "直连 69shuba.com 网页源 \n\n*二改请标明原作者\n\/\/ 2026\/07\/03\/ By sjshb57 首次发布\n\/\/ 2026\/07\/05\/ By sjshb57 新增功能\n\/\/ 发现页补全栏目&优化书籍详情简介排版\n\/\/ 2026\/07\/26\/ By sjshb57\n\/\/ 重写过盾流程,修复搜索结果为空的问题\n\n【搜索需过人机验证 Cloudflare Turnstile】\n· 搜索时若命中验证,会自动弹浏览器让你完成验证,完成后直接取网页结果,无需再搜一次。\n· 已完成验证后 Cookie 会复用一段时间,不会每次发起请求都要验证一次。\n· 无需手动改 UA,本源不受阅读全局 UA 设置影响。",
    "bookSourceGroup": "🌙 小说",
    "bookSourceName": "🌙 69书吧",
    "bookSourceType": 0,
    "bookSourceUrl": "https:\/\/www.69shuba.com",
    "bookUrlPattern": "https?:\/\/www\\.69shuba\\.com\/book\/\\d+\\.htm",
    "customButton": false,
    "customOrder": 5,
    "enabled": true,
    "enabledCookieJar": true,
    "enabledExplore": true,
    "eventListener": false,
    "exploreUrl": "[{\n        \"title\": \"【男生小说】\",\n        \"url\": \"\/novels\/male\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.33\n        }\n    },\n    {\n        \"title\": \"【女生小说】\",\n        \"url\": \"\/novels\/female\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.33\n        }\n    },\n    {\n        \"title\": \"人气\",\n        \"url\": \"\/novels\/monthvisit_0_0_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"推荐\",\n        \"url\": \"\/novels\/allvote_0_0_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"完本\",\n        \"url\": \"\/novels\/monthvisit_0_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"──── 连载 · 选分类 ────\",\n        \"url\": \"\/novels\/monthvisit_0_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        \"title\": \"玄幻魔法\",\n        \"url\": \"\/novels\/monthvisit_1_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"修真武侠\",\n        \"url\": \"\/novels\/monthvisit_2_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"言情小说\",\n        \"url\": \"\/novels\/monthvisit_3_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"历史军事\",\n        \"url\": \"\/novels\/monthvisit_4_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"游戏竞技\",\n        \"url\": \"\/novels\/monthvisit_5_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"科幻空间\",\n        \"url\": \"\/novels\/monthvisit_6_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"悬疑惊悚\",\n        \"url\": \"\/novels\/monthvisit_7_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"同人小说\",\n        \"url\": \"\/novels\/monthvisit_8_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"都市小说\",\n        \"url\": \"\/novels\/monthvisit_9_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"官场职场\",\n        \"url\": \"\/novels\/monthvisit_10_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"穿越时空\",\n        \"url\": \"\/novels\/monthvisit_11_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"青春校园\",\n        \"url\": \"\/novels\/monthvisit_12_2_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"──── 全本 · 选分类 ────\",\n        \"url\": \"\/novels\/monthvisit_0_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        \"title\": \"玄幻魔法\",\n        \"url\": \"\/novels\/monthvisit_1_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"修真武侠\",\n        \"url\": \"\/novels\/monthvisit_2_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"言情小说\",\n        \"url\": \"\/novels\/monthvisit_3_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"历史军事\",\n        \"url\": \"\/novels\/monthvisit_4_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"游戏竞技\",\n        \"url\": \"\/novels\/monthvisit_5_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"科幻空间\",\n        \"url\": \"\/novels\/monthvisit_6_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"悬疑惊悚\",\n        \"url\": \"\/novels\/monthvisit_7_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"同人小说\",\n        \"url\": \"\/novels\/monthvisit_8_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"都市小说\",\n        \"url\": \"\/novels\/monthvisit_9_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"官场职场\",\n        \"url\": \"\/novels\/monthvisit_10_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"穿越时空\",\n        \"url\": \"\/novels\/monthvisit_11_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"title\": \"青春校园\",\n        \"url\": \"\/novels\/monthvisit_12_1_{{page}}.htm\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    }\n]",
    "header": "<js>\n(function() {\n    var u = \"\";\n    try {\n        u = String(java.getWebViewUA() || \"\");\n    } catch (e) {\n        u = \"\";\n    }\n    if (u.indexOf(\"Mozilla\") !== 0) {\n        u = \"Mozilla\/5.0 (Linux; Android 13; SM-S901U) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/125.0.6422.165 Mobile Safari\/537.36\";\n    }\n    return JSON.stringify({\n        \"User-Agent\": u,\n        \"Referer\": \"https:\/\/www.69shuba.com\/\",\n        \"Accept-Language\": \"zh-CN,zh;q=0.9\",\n        \"Upgrade-Insecure-Requests\": \"1\"\n    });\n})()\n<\/js>",
    "lastUpdateTime": "1785061489559",
    "loginUrl": "login.php?jumpurl=https:\/\/www.69shuba.com\/",
    "respondTime": 180000,
    "ruleBookInfo": {
        "author": "[property$=author]@content",
        "coverUrl": "[property$=image]@content",
        "intro": "<js>\n(function() {\n    var g = function(r) {\n        try {\n            return String(java.getString(r) || \"\").trim();\n        } catch (e) {\n            return \"\";\n        }\n    };\n    var html = String(result);\n    var name = g(\"[property$=book_name]@content\");\n    var author = g(\"[property$=author]@content\");\n    var cat = g(\"[property$=category]@content\");\n    var update = g(\"[property$=update_time]@content\");\n    var last = g(\"[property$=latest_chapter_name]@content\");\n    var words = g(\"class.booknav2@tag.p.2@text\").replace(\/\\s*\\|\\s*\/g, \" \\u00b7 \");\n    var mt = html.match(\/tags:\\s*\\x27([^\\x27]*)\\x27\/);\n    var tags = mt ? mt[1].replace(\/\\|+\/g, \" \\u00b7 \").replace(\/(^\\s*\\u00b7\\s*|\\s*\\u00b7\\s*$)\/g, \"\").trim() : \"\";\n    var desc = g(\"class.navtxt@tag.p.0@textNodes\")\n        .replace(\/^[\\s\\u3000]+\/, \"\")\n        .replace(\/[\\r\\n]+\/g, \"\\n\")\n        .replace(\/\\n\/g, \"\\n\\u3000\\u3000\");\n\n    var L = [];\n    var add = function(icon, label, val) {\n        if (val && String(val).trim()) {\n            L.push(\"\\u3000\\u3000\" + icon + \" \" + label + \"\\uff1a\" + val);\n        }\n    };\n    add(\"\\ud83d\\udcd5\", \"\\u4e66\\u540d\", name);\n    add(\"\\ud83d\\udc64\", \"\\u4f5c\\u8005\", author);\n    add(\"\\ud83c\\udff7\\ufe0f\", \"\\u5206\\u7c7b\", cat);\n    add(\"\\ud83d\\udcca\", \"\\u5b57\\u6570\", words);\n    add(\"\\ud83d\\udd16\", \"\\u6807\\u7b7e\", tags);\n    add(\"\\ud83d\\udd50\", \"\\u66f4\\u65b0\", update);\n    add(\"\\ud83d\\udcd6\", \"\\u6700\\u65b0\", last);\n    if (desc) {\n        L.push(\"\\u3000\\u3000\\u200b\");\n        L.push(\"\\u3000\\u3000\\ud83d\\udcdc \\u7b80\\u4ecb\\uff1a\");\n        L.push(\"\\u3000\\u3000\" + desc);\n    }\n    L.push(\"\\u3000\\u3000\\u200b\");\n    L.push(\"\\u3000\\u3000\\ud83d\\udccd \\u4e66\\u7c4d\\u72b6\\u6001\\uff1a\\u6b63\\u5e38\");\n    return L.join(\"\\n\");\n})()\n<\/js>",
        "kind": "[property~=category|status|update_time]@content",
        "lastChapter": "[property$=latest_chapter_name]@content",
        "name": "[property$=book_name]@content",
        "tocUrl": "class.more-btn@href||class.addbtn@tag.a.0@href",
        "wordCount": "class.booknav2@tag.p.2@text##\\s*\\|.*$##"
    },
    "ruleContent": {
        "content": "class.txtnav@textNodes",
        "replaceRegex": "##\\s*[((]?本章完[))]?\\s*$|新.{0,2}书吧|吧书.{0,2}新|请记住本书首发域名.*|www\\.69shuba\\.com|loadAdv\\([\\d, ]*\\);?"
    },
    "ruleExplore": {
        "author": "class.labelbox@tag.label.0@text",
        "bookList": "id.article_list_content@tag.li",
        "bookUrl": "tag.h3@tag.a@href",
        "coverUrl": "tag.img@data-src",
        "intro": "class.ellipsis_2@text",
        "kind": "<js>\n(function () {\n    var u = String(baseUrl || \"\");\n    var st = String(java.getString(\"class.labelbox@tag.label!0@text\") || \"\").trim();\n    if (\/monthvisit_\\d+_[12]_\/.test(u)) st = \"\";\n    return st;\n})()\n<\/js>",
        "lastChapter": "class.zxzj@tag.p@ownText",
        "name": "tag.h3@tag.a@text"
    },
    "ruleSearch": {
        "author": "class.labelbox@tag.label.0@text",
        "bookList": "<js>\n(function() {\n    var LR = \"class.newbox@tag.li\";\n    var API = \"https:\/\/www.69shuba.com\/modules\/article\/search.php\";\n\n    var isCF = function(h) {\n        return \/_cf_chl_opt|cf_chl_prog|cf-browser-verification|challenge-form|Just a moment|Checking your browser|\\\/verify\\.php\/i.test(String(h));\n    };\n    var isLimit = function(h) {\n        return \/间隔时间不得少于|間隔時間不得少於|两次搜索的间隔|兩次搜索的間隔\/.test(String(h));\n    };\n    var isShort = function(h) {\n        return \/搜索关键字请不要少于|搜索關鍵字請不要少於\/.test(String(h));\n    };\n    var parse = function(h) {\n        if (!h) return null;\n        java.setContent(h);\n        var l = java.getElements(LR);\n        return (l != null && l.size() > 0) ? l : null;\n    };\n\n    var html = String(result || \"\");\n    var list = parse(html);\n    if (list) return list;\n\n    if (isShort(html)) throw new Error(\"关键词太短, 中文至少两个字\");\n    if (isLimit(html)) throw new Error(\"站点限制搜索频率, 请隔几秒再搜\");\n    if (!isCF(html)) return null;\n\n    var key = java.get(\"69key\");\n    var vUrl = API + \"?searchkey=\" + java.encodeURI(key, \"gbk\") + \"&searchtype=all&page=1\";\n    var r = java.startBrowserAwait(vUrl, \"69书吧 · 人机验证\", false);\n    list = parse(r ? String(r.body() || \"\") : \"\");\n    if (list) return list;\n\n    var req = API + ',{\"method\":\"POST\",\"body\":\"searchkey=' + key + '&searchtype=all&page=1\",\"charset\":\"gbk\"}';\n    var h2 = String(java.ajax(req) || \"\");\n    if (isCF(h2)) throw new Error(\"Cloudflare 未放行, 请重新搜索一次\");\n    if (isLimit(h2)) throw new Error(\"站点限制搜索频率, 请隔几秒再搜\");\n    return parse(h2);\n})()\n<\/js>",
        "bookUrl": "tag.h3@tag.a@href",
        "checkKeyWord": "宿命之环",
        "coverUrl": "tag.img@data-src",
        "intro": "class.ellipsis_2@text",
        "kind": "class.labelbox@tag.label!0@text",
        "lastChapter": "class.zxzj@tag.p@ownText",
        "name": "tag.h3@tag.a@text"
    },
    "ruleToc": {
        "chapterList": "-id.catalog@tag.li",
        "chapterName": "tag.a@text",
        "chapterUrl": "tag.a@href"
    },
    "searchUrl": "\/modules\/article\/search.php,{\"method\":\"POST\",\"body\":\"searchkey={{java.put('69key',key)}}&searchtype=all&page={{page}}\",\"charset\":\"gbk\"}",
    "weight": 0
}
广告