{
"bookSourceComment": "by天天的鸟蛋蛋 2025\/04\/20\n使用明月大佬的多线路选择器\n新包子漫画\n",
"bookSourceGroup": "包子漫画,漫画",
"bookSourceName": "G社漫画\/包子漫画",
"bookSourceType": 2,
"bookSourceUrl": "https:\/\/manhuafree.com",
"customOrder": 0,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"exploreUrl": "[{\"title\":\"---------✨分类------------\",\"url\":\"\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":1}},{\"title\":\"全部\",\"url\":\"{{bhost()}}\/manga\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"韩漫\",\"url\":\"{{bhost()}}\/manga-genre\/kr\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"热门\",\"url\":\"{{bhost()}}\/manga-genre\/hots\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"国漫\",\"url\":\"{{bhost()}}\/manga-genre\/cn\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"其他\",\"url\":\"{{bhost()}}\/manga-genre\/qita\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"日漫\",\"url\":\"{{bhost()}}\/manga-genre\/jp\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"欧美\",\"url\":\"{{bhost()}}\/manga-genre\/ou-mei\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"---------🔥热门标签------------\",\"url\":\"\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":1}},{\"title\":\"#复仇\",\"url\":\"{{bhost()}}\/manga-tag\/fuchou\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#古风\",\"url\":\"{{bhost()}}\/manga-tag\/gufeng\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#奇幻\",\"url\":\"{{bhost()}}\/manga-tag\/qihuan\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#逆袭\",\"url\":\"{{bhost()}}\/manga-tag\/nixi\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#异能\",\"url\":\"{{bhost()}}\/manga-tag\/yineng\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#宅向\",\"url\":\"{{bhost()}}\/manga-tag\/zhaixiang\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#穿越\",\"url\":\"{{bhost()}}\/manga-tag\/chuanyue\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#热血\",\"url\":\"{{bhost()}}\/manga-tag\/rexue\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#纯爱\",\"url\":\"{{bhost()}}\/manga-tag\/chunai\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#系统\",\"url\":\"{{bhost()}}\/manga-tag\/xitong\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#重生\",\"url\":\"{{bhost()}}\/manga-tag\/zhongsheng\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#冒险\",\"url\":\"{{bhost()}}\/manga-tag\/maoxian\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#灵异\",\"url\":\"{{bhost()}}\/manga-tag\/lingyi\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#大女主\",\"url\":\"{{bhost()}}\/manga-tag\/danvzhu\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#剧情\",\"url\":\"{{bhost()}}\/manga-tag\/juqing\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#恋爱\",\"url\":\"{{bhost()}}\/manga-tag\/lianai\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#玄幻\",\"url\":\"{{bhost()}}\/manga-tag\/xuanhuan\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#女神\",\"url\":\"{{bhost()}}\/manga-tag\/nvshen\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#科幻\",\"url\":\"{{bhost()}}\/manga-tag\/kehuan\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#魔幻\",\"url\":\"{{bhost()}}\/manga-tag\/mohuan\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#推理\",\"url\":\"{{bhost()}}\/manga-tag\/tuili\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#猎奇\",\"url\":\"{{bhost()}}\/manga-tag\/lieqi\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#治愈\",\"url\":\"{{bhost()}}\/manga-tag\/zhiyu\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#都市\",\"url\":\"{{bhost()}}\/manga-tag\/doushi\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#异形\",\"url\":\"{{bhost()}}\/manga-tag\/yixing\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#青春\",\"url\":\"{{bhost()}}\/manga-tag\/qingchun\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#末日\",\"url\":\"{{bhost()}}\/manga-tag\/mori\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#悬疑\",\"url\":\"{{bhost()}}\/manga-tag\/xuanyi\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#修仙\",\"url\":\"{{bhost()}}\/manga-tag\/xiuxian\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}},{\"title\":\"#战斗\",\"url\":\"{{bhost()}}\/manga-tag\/zhandou\/page\/{{page}}\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.25}}]",
"header": "<js>\nheaders={\"Referer\":baseUrl};\nJSON.stringify(headers)\n<\/js>",
"jsLib": "function bhost(){var d=\"manhuafree.com\",s=this.source;try{var u=(p=>p?Object.values(p[0])[0]:d)(s.getVariable()&&JSON.parse(s.getVariable()))||d;return(\/^https?:\/.test(u)?u:\"https:\/\/\"+u).replace(\/\\\/$\/,\"\")}catch(e){return(\/^https?:\/.test(d)?d:\"https:\/\/\"+d).replace(\/\\\/$\/,\"\")}}",
"lastUpdateTime": "1745107613965",
"loginUi": "[\n{\"name\":\"多线路优选\",\"type\":\"button\",\n\"action\":\"checkHostsLatency(hosts)\"}\n]",
"loginUrl": "var Importer = new JavaImporter(\n Packages.java.net,\n Packages.java.io,\n Packages.java.util,\n Packages.java.lang,\n Packages.java.util.concurrent\n);\n\nvar hosts = [\n \"manhuafree.com\",\n \"m.g-mh.org\",\n \"baozimh.org\",\n \"bzmh.org\"\n \n];\n\nfunction getTimestamp() {\n return Packages.java.lang.System.currentTimeMillis();\n}\n\nfunction checkLatency(urlString) {\n var connection = null;\n try {\n if (!urlString.startsWith(\"http:\/\/\") && !urlString.startsWith(\"https:\/\/\")) {\n urlString = \"https:\/\/\" + urlString;\n }\n var startTime = getTimestamp();\n var url = new Packages.java.net.URL(urlString);\n connection = url.openConnection();\n connection.setRequestMethod(\"GET\");\n connection.setConnectTimeout(3000);\n connection.setReadTimeout(3000);\n \n var inputStream = connection.getInputStream();\n inputStream.close();\n \n var latency = getTimestamp() - startTime;\n java.log(\"[SUCCESS] \" + urlString + \" | \" + latency + \"ms\");\n return latency;\n } catch (e) {\n java.log(\"[FAILED] \" + urlString + \" | \" + e);\n return null;\n } finally {\n try {\n if (connection) connection.disconnect();\n } catch (e) {}\n }\n}\n\nfunction checkHostsLatency(hosts) {\n with (Importer) {\n try {\n var totalStart = getTimestamp();\n java.longToast(\"🚀 启动检测\");\n \n var results = [];\n var total = hosts.length;\n \n for (var i = 0; i < hosts.length; i++) {\n var host = hosts[i];\n \/\/ 更新进度提示\n java.longToast(\"🔍 检测中 (\" + (i+1) + \"\/\" + total + \")\");\n \n var latency = checkLatency(host);\n if (latency !== null) {\n results.push({\n host: host,\n latency: latency\n });\n }\n }\n\n var totalTime = getTimestamp() - totalStart;\n java.log(\"总耗时: \" + totalTime + \"ms\");\n \n if (results.length === 0) {\n java.toast(\"❌ 无可用主机\");\n } else {\n results.sort(function(a, b) {\n return a.latency - b.latency;\n });\n \n var best = results[0];\n var summary = \"✅ 完成检测\\n最佳: \" + best.host + \"\\n⏱️ \" + best.latency + \"ms\";\n java.longToast(summary);\n let ms = \"共找到 \" + results.length + \"\/\" + total + \" 可用节点\"\n java.longToast(ms);\n java.log(ms);\n source.setVariable(JSON.stringify(results, null, 2));\n }\n } catch (e) {\n java.log(\"[FATAL] \" + e);\n }\n }\n}",
"respondTime": 180000,
"ruleBookInfo": {
"author": ".text-small@a@span@text##\\s",
"coverUrl": "",
"init": "",
"intro": "<js>\nvar novelIntro=({title,author,genre,score,desc})=>['','✧*̥₊˚‧☆・゚'.repeat(3),`📖书名:《${title}》`,`👤作者:${author}`,`🏷️类型:${genre}`,`✨最新章节:${latestChapterTitle}`,'✦ ─────────────── ✦',`${desc}`,'❈'.padEnd(20,'~*')].join('\\n').replace(\/^\/gm,' ');\nvar latestChapterTitle=`{{@@.my-unit-md@span@text}}`\nvar intro=`{{@@.text-medium@text##最近章節}}`\nnovelIntro({\n \"title\": book.name,\n \"author\": book.author,\n \"genre\": book.kind,\n \"latestChapterTitle\":latestChapterTitle,\n \"desc\": intro\n})\n<\/js>##(^|[。!?]+[”」)】]?)##$1<br>",
"kind": ".text-sm:nth-child(3)>a@text&&.text-xl@span@text&&.py-1:nth-child(4) > a:nth-child(n+1)@text<js>java.t2s(result);<\/js>##\\[|\\]",
"lastChapter": ".my-unit-md@span@text",
"name": ".text-xl@textNodes",
"tocUrl": "<js>\n\nvar mid=src.match(\/data\\-mid\\=\"(\\d+)\"\/)[1];\njava.put(\"mid\",mid)\nvar r=`https:\/\/api-get-v2.mgsearcher.com\/api\/manga\/get?mid=${mid}&mode=all`\nr;\n\n<\/js>"
},
"ruleContent": {
"content": "<js>\nvar data=JSON.parse(result)\nvar imageList=data.data.info.images.images\nvar imgTags = imageList.map(item => `<img src=\"https:\/\/f40-1-4.g-mh.online${item.url}\">`).join('\\n');\nimgTags;\n<\/js>"
},
"ruleExplore": {
"bookList": ""
},
"ruleSearch": {
"bookList": ".grid-cols-3@.pb-2",
"bookUrl": "a@href",
"checkKeyWord": "",
"coverUrl": "img@src",
"name": "h3@text"
},
"ruleToc": {
"chapterList": ".chapters[*]",
"chapterName": ".title",
"chapterUrl": "<js>\nvar mid=java.get(\"mid\")\nvar id=`{{$..id}}`\nvar r=`https:\/\/api-get-v2.mgsearcher.com\/api\/chapter\/getinfo?m=${mid}&c=${id}`\nr;\n<\/js>",
"updateTime": ".updatedAt"
},
"searchUrl": "{{bhost()}}\/s\/{{key}}?page={{page}}",
"weight": 0
}