[{"bookSourceGroup":"自己使用","bookSourceName":"八叉书库","bookSourceType":0,"bookSourceUrl":"https:\/\/bcshuku.com\/","bookUrlPattern":"https:\/\/bcshuku.com\/novel\\d+\/","customButton":false,"customOrder":0,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"eventListener":false,"exploreUrl":"[\n{\"title\":\"分类\",\"url\":\"\",\"style\":{\"layout_flexBasisPercent\":1,\"layout_flexGrow\":1}},\n{\"title\":\"长篇\",\"url\":\"\/booklist1\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"综合\",\"url\":\"\/booklist2\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"武侠\",\"url\":\"\/booklist3\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"历史\",\"url\":\"\/booklist4\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"都市\",\"url\":\"\/booklist5\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"玄幻\",\"url\":\"\/booklist6\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},   \n{\"title\":\"女生\",\"url\":\"\/booklist7\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},   \n{\"title\":\"其他\",\"url\":\"\/booklist8\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"现代\",\"url\":\"\/booklist9\/{{page-1}}.html\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"排行榜单\",\"url\":\"\",\"style\":{\"layout_flexBasisPercent\":1,\"layout_flexGrow\":1}},\n{\"title\":\"热门排行\",\"url\":\"\/popular\/{{\n\tvar pjstr = 'index.html';\n\tif(page!=1)  pjstr='index_'+page+'.html';\n\tpjstr}}\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"最新更新\",\"url\":\"\/latest\/{{\n\tvar pjstr = 'index.html';\n\tif(page!=1)  pjstr='index_'+page+'.html';\n\tpjstr}}\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"最新入库\",\"url\":\"\/release\/{{\n\tvar pjstr = 'index.html';\n\tif(page!=1)  pjstr='index_'+page+'.html';\n\tpjstr}}\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}},\n{\"title\":\"完本小说\",\"url\":\"\/completed\/{{\n\tvar pjstr = 'index.html';\n\tif(page!=1)  pjstr='index_'+page+'.html';\n\tpjstr}}\",\"style\":{\"layout_flexBasisPercent\":0.25,\"layout_flexGrow\":1}}\n]","header":"\"accept\": \"application\/json, text\/javascript, *\/*; q=0.01\",\n    \"accept-language\": \"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6\",\n    \"cache-control\": \"no-cache\",\n    \"content-type\": \"application\/x-www-form-urlencoded; charset=UTF-8\",\n    \"origin\": \"https:\/\/bcshuku.com\",\n    \"pragma\": \"no-cache\",\n    \"priority\": \"u=1, i\",\n    \"sec-ch-ua\": \"\\\"Microsoft Edge\\\";v=\\\"143\\\", \\\"Chromium\\\";v=\\\"143\\\", \\\"Not A(Brand\\\";v=\\\"24\\\"\",\n    \"sec-ch-ua-mobile\": \"?0\",\n    \"sec-ch-ua-platform\": \"\\\"Windows\\\"\",\n    \"sec-fetch-dest\": \"empty\",\n    \"sec-fetch-mode\": \"cors\",\n    \"sec-fetch-site\": \"same-origin\",\n    \"user-agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/143.0.0.0 Safari\/537.36 Edg\/143.0.0.0\",\n    \"x-requested-with\": \"XMLHttpRequest\"\n","lastUpdateTime":"1792651808408","respondTime":180000,"ruleBookInfo":{"author":"[property=\"og:novel:author\"]@content","coverUrl":"[property=\"og:image\"]@content","intro":"{{@@div[itemprop=\"description\"]@textNodes}}\n阅读👁：{{@@div.info-chitiet span[7]@text}}\n{{@@span.text-primary@text}}\n{{baseUrl}}","kind":"div.info-chitiet span[3]@text","lastChapter":"div[id=\"new-chapter\"] span[class=\"chapter-text\"][0]@text","name":"[property=\"og:novel:book_name\"]@content"},"ruleContent":{"content":"@js:\n(() => {\n    let html = String(result || \"\");\n    if (!html) return \"\";\n\n    \/* ========== 第2段：通用字段提取（顺序无关 \/ 带不带引号都行） ========== *\/\n    let pick = (key) => {\n        let m = html.match(new RegExp('\"' + key + '\"\\\\s*:\\\\s*\"([^\"]*)\"'));\n        if (m) return m[1].trim();\n        m = html.match(new RegExp('\"' + key + '\"\\\\s*:\\\\s*([^,\\\\s}]+)'));\n        return m ? m[1].trim() : \"\";\n    };\n\n    let url     = pick(\"url\");\n    let mobile  = pick(\"mobile\") || \"1\";\n    let isk     = pick(\"isk\")    || \"1\";\n    let novel   = pick(\"novel\");\n    let chapter = pick(\"chapter\");\n    let t       = pick(\"t\");\n    let n       = pick(\"n\");\n    let sign    = pick(\"sign\");\n\n    \/* ========== 第2段：保留参数日志 ========== *\/\n    let paramsObj = { url, mobile, isk, novel, chapter, t, n, sign };\n    java.log(\n        Object.keys(paramsObj).map(k => k + \"=\" + paramsObj[k] + \",\\n\").join(\"\")\n    );\n\n    if (!url || !sign || !novel || !chapter) {\n        java.log(\"参数提取不完整\");\n        return \"\";\n    }\n\n    \/* ========== 第1段：请求体用 encodeURIComponent 编码 ========== *\/\n    let body =\n        \"url=\" + encodeURIComponent(url) +\n        \"&mobile=\" + encodeURIComponent(mobile) +\n        \"&isk=\" + encodeURIComponent(isk) +\n        \"&novel=\" + encodeURIComponent(novel) +\n        \"&chapter=\" + encodeURIComponent(chapter) +\n        \"&t=\" + encodeURIComponent(t) +\n        \"&n=\" + encodeURIComponent(n) +\n        \"&sign=\" + encodeURIComponent(sign);\n\n    java.log(\"body: \" + body);\n\n    let siteurl = \"https:\/\/bcshuku.com\";\n    let referer = (typeof baseUrl === \"string\" && baseUrl)\n        ? baseUrl\n        : siteurl + \"\/novel\/\" + novel + \"\/chapter\" + chapter + \".html\";\n\n    \/* ========== 第1段：请求头 \/ java.post ========== *\/\n    let response = java.post(siteurl + \"\/conapi.php\", body, {\n        'User-Agent': 'Mozilla\/5.0 (Linux; U; Android 10; zh-CN; MI 9 Build\/QKQ1.190828.002) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/100.0.4896.58 Quark\/10.5.1.1026 Mobile Safari\/537.36',\n        'Accept': 'application\/json, text\/javascript, *\/*; q=0.01',\n        'x-requested-with': 'XMLHttpRequest',\n        'content-type': 'application\/x-www-form-urlencoded; charset=UTF-8',\n        'origin': 'https:\/\/www.bcshuku.com',\n        'sec-fetch-site': 'same-origin',\n        'sec-fetch-mode': 'cors',\n        'sec-fetch-dest': 'empty',\n        'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',\n        'referer': referer,\n    });\n\n    \/* ========== 第1段：响应处理 ========== *\/\n    if (response && response.body()) {\n        try {\n            let data = JSON.parse(response.body());\n\n            \/\/ 补上第2段的 success 判断，避免把失败响应当正文\n            if (!data || data.success === false || data.success === 0 ||\n                data.success === \"0\" || !data.content) {\n                java.log(\"接口失败：\" + response.body());\n                return \"\";\n            }\n\n            let content = String(data.content);\n            java.log(content);\n\n            \/\/ 第2段：内容清洗\n            return content\n                .replace(\/<br\\s*\\\/?>\/gi, \"\\n\")\n                .replace(\/&nbsp;\/g, \" \")\n                .replace(\/&lt;\/g, \"<\")\n                .replace(\/&gt;\/g, \">\")\n                .replace(\/&amp;\/g, \"&\");\n        } catch (e) {\n            java.log(\"运行异常: \" + e.message);\n            return \"\";\n        }\n    } else {\n        java.log(\"响应体为空\");\n        return \"\";\n    }\n})()"},"ruleExplore":{"author":"\/\/div[@class='caption']\/div[@class=\"chi-tiet chuyen-muc\"]\/\/text()","bookList":"\/\/div[@class=\"one-row\"]\/div[@class=\"col-md-3 col-sm-6 col-xs-6 home-truyendecu\"]","bookUrl":"\/\/div[@class='caption']\/a\/@href","coverUrl":"\/\/div[@class='each_truyen']\/a\/img\/@src","lastChapter":"\/\/div[@class='caption']\/div[@class=\"chi-tiet tt-status\"]\/\/small[@class=\"btn-xs label-primary\"]\/text()","name":"\/\/div[@class='caption']\/a\/@title"},"ruleSearch":{"bookList":"div.row div.one-row div.col-md-3","bookUrl":"a[0]@href","checkKeyWord":"https:\/\/bcshuku.com\/novel55078\/","coverUrl":"div.each_truyen a img@src","intro":"书籍状态📖：{{@@span.hoan-thanh-mau[0]@text}}\n阅读👁：{{@@div.luot-xem@textNodes}}\n更新时间🕰：{{@@div.chuyen-muc@textNodes}}\n{{@@a[0]@href##(.*)##https:\/\/bcshuku.com$1###}}","lastChapter":"small.btn-xs@textNodes","name":"h3[itemprop=\"name\"]@text"},"ruleToc":{"chapterList":"div[id=\"list-chapter\"] ul[class=\"list-chapter\"] li a","chapterName":"span[class=\"chapter-text\"]@text","chapterUrl":"@js:\nvar doc = org.jsoup.Jsoup.parse(result);\nvar link = doc.select(\"a\").first();\nvar chapterurl= 'https:\/\/bcshuku.com' + link.attr(\"href\");\nchapterurl;","nextTocUrl":"\/\/div[@id=\"pagination\"]\/\/li[last()-1]\/a\/@href"},"searchUrl":"@js:\n\/\/ 第一步：搜索请求，拿到 searchid\nlet new_url = java.get('https:\/\/bcshuku.com\/e\/search\/index.php?keyboard='+key+'&show=title,writer,byr&searchget=1',{\n    \"accept\": \"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.7\",\n    \"accept-language\": \"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6\",\n    \"cache-control\": \"no-cache\",\n    \"pragma\": \"no-cache\",\n    \"referer\": \"https:\/\/bcshuku.com\",\n    \"sec-ch-ua\": \"\\\"Microsoft Edge\\\";v=\\\"143\\\", \\\"Chromium\\\";v=\\\"143\\\", \\\"Not A(Brand\\\";v=\\\"24\\\"\",\n    \"sec-ch-ua-mobile\": \"?1\",\n    \"sec-ch-ua-platform\": \"\\\"Android\\\"\",\n    \"sec-fetch-dest\": \"document\",\n    \"sec-fetch-mode\": \"navigate\",\n    \"sec-fetch-site\": \"same-origin\",\n    \"sec-fetch-user\": \"?1\",\n    \"upgrade-insecure-requests\": \"1\",\n    \"user-agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/143.0.0.0 Mobile Safari\/537.36 Edg\/143.0.0.0\"\n});\n\nlet location = new_url.header(\"location\");\nlet searchid = location.match(\/searchid=(\\d+)\/)[1];\n\n\/\/ 分页修复（真正从第一页开始）\nlet url;\nif (page == 0) {\n    url = \"https:\/\/bcshuku.com\/e\/search\/result\/?searchid=\" + searchid;\n} else {\n    url = \"https:\/\/bcshuku.com\/e\/search\/result\/index.php?page=\" + (page - 1) + \"&searchid=\" + searchid;\n}\n\nurl;","weight":0}]