🌙 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
}