🎨禁漫天堂[国内]
https://jmcomicgo.me
jiajunjin (10775)4天前
① 复制了xiaohan231大佬的图片解密,支持了部分未加密图片的观看
② 优化了登录函数
{ "bookSourceComment": "① 发布页:https:\/\/jmcomicgo.me\n \n②❗❗❗需要在登录页面获取网址❗❗❗\n\n③ 部分内容需要登录才会显示\n \n④ 目录>章节URL规则,最后的数字可用1、2、3、4,代表站内分流线路\n\n⑤ 更改发现排列在登录切换\n\n⑥ 复制xiaohan231大佬图片解密,支持了对未加密图片观看", "bookSourceGroup": "寿横大佬最新力作", "bookSourceName": "🎨禁漫天堂[国内]", "bookSourceType": 2, "bookSourceUrl": "https:\/\/jmcomicgo.me", "customOrder": 0, "enabled": true, "enabledCookieJar": true, "enabledExplore": true, "exploreUrl": "@js:\neval(String(source.loginUrl));\nlet URL = $$$.url\n let list = [],\n push = (title, url, size) => list.push({\n \"title\": title,\n \"url\": url,\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": size\n }\n });\n push('[▶ '+$$$.name+' ◀]', '', 1);\n let _list = [[\"最新\", \"albums?o=mr&page=\"], [\"COS\", \"albums\/another\/sub\/cosplay?page=\"], [\"3D\", \"search\/photos?search_query=3D&page=\"]];\n _list.map(([t, u]) => {\n \t push(t, `${URL}\/${u}` + '{{page}}', 0.25);\n \t});\n push('👁🗨阅读排行榜👁🗨', '', 1);\n let typeList = [[\"日榜\", \"&t=t\"], [\"周榜\", \"&t=w\"], [\"月榜\", \"&t=m\"],[\"总榜\", \"\"]];\n typeList.map(([t, type]) => {\n \t push(t, `${URL}\/albums?o=mv${type}&page=` + '{{page}}' , 0.2);\n \t});\n \tpush('♥️收藏排行榜♥️', '', 1);\n \ttypeList.map(([t, type]) => {\n \t push(t, `${URL}\/albums?o=mo${type}&page=` + '{{page}}', 0.2);\n \t});\n let sorts1 = [\"無修正\",\"劇情向\",\"青年漫\",\"校服\",\"純愛\",\"人妻\",\"教師\",\"百合\",\"Yaoi\",\"性轉\",\"NTR\",\"女裝\",\"癡女\",\"全彩\",\"女性向\",\"完結\",\"純愛\",\"禁漫漢化組\"];\n let sorts2 = [\"御姐\",\"熟女\",\"未成年\",\"巨乳\",\"貧乳\",\"女性支配\",\"教師\",\"女僕\",\"護士\",\"泳裝\",\"眼鏡\",\"連褲襪\",\"其他制服\",\"兔女郎\"];\n let sorts3 = [\"群交\",\"足交\",\"束縛\",\"肛交\",\"阿黑顏\",\"藥物\",\"扶他\",\"調教\",\"野外露出\",\"催眠\",\"自慰\",\"觸手\",\"獸交\",\"亞人\",\"怪物女孩\",\"皮物\",\"附身\",\"ryona\",\"騎大車\"];\n let sorts4 = [\"CG\",\"重口\",\"獵奇\",\"非H\",\"血腥暴力\",\"站長推薦\"];\n const sortCriteria = [\n { label: '🏷️标签---按时间🏷️', sort: 'mr' },\n { label: '🏷️标签---按阅读🏷️', sort: 'mv' },\n { label: '🏷️标签---按收藏🏷️', sort: 'mo' }\n];\nvar sort = sortCriteria[$$$.tag].sort;\nvar label = sortCriteria[$$$.tag].label;\n push(label, '', 1);\n push('▶主题A漫◀','', 1)\n sorts1.forEach(s => {\n push(s, `${URL}\/search\/photos?search_query=${s}&o=${sort}&page=` + '{{page}}', 0.25\n );\n });\n push('▶角色\/扮演◀','', 1)\n sorts2.forEach(s => {\n push(s, `${URL}\/search\/photos?search_query=${s}&o=${sort}&page=` + '{{page}}', 0.25\n );\n });\n push('▶特殊PLAY◀','', 1)\n sorts3.forEach(s => {\n push(s, `${URL}\/search\/photos?search_query=${s}&o=${sort}&page=` + '{{page}}', 0.25\n );\n });\n push('▶其他◀','', 1)\n sorts4.forEach(s => {\n push(s, `${URL}\/search\/photos?search_query=${s}&o=${sort}&page=` + '{{page}}', 0.25\n );\n });\nJSON.stringify(list);", "header": "{\n\t\"User-Agent\":\"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36 Edg\/138.0.0.0\",\n\t\"Referer\":\"https:\/\/18comic.vip\/\"\n}", "jsLib": "function Get(e) {\n const { java, source, cookie } = this;\n var get = JSON.parse(source.getVariable());\n return get[e];\n}", "lastUpdateTime": "1757801354363", "loginCheckJs": " var resultUrl = result.url();\n var resultCode = result.code();\n var resultBoDy = result.body();\n if (\/_cf_|ge_ua|verify.php\/ig.test(resultBoDy) ) {\n if (key) {\n url = baseUrl + java.ruleUrl;\n }\n cookie.removeCookie(baseUrl)\n result = java.startBrowserAwait(resultUrl, \n \t\"验证\", false);\n \/\/java.log(result.body())\n \/\/result = java.connect(resultUrl)\n }\nresult;", "loginUi": "[ \n {\n \"name\": \"账号\",\n \"type\": \"text\"\n },\n {\n \"name\": \"密码\",\n \"type\": \"password\"\n },\n { name: \"༺ˇ»`ʚ 点击切换排序 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"时间\", type: \"button\", action: \"tag(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"阅读\", type: \"button\", action: \"tag(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"收藏\", type: \"button\", action: \"tag(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n {\n \t \"name\": \"获取链接\",\n \t \"type\": \"button\",\n \"action\": \"url()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n \t}\n]", "loginUrl": "original = {\n'url' : 'https:\/\/jmcomicgo.me',\n'name' : '寿横',\n'tag' : 0\n};\ntry {\n $$$ = JSON.parse(source.getVariable());\n if ($$$ == null) {\n error;\n } else {\n '';\n };\n} catch (e) {\n $$$ = original;\n put($$$);\n}\nfunction put(data) {\n return source.setVariable(JSON.stringify(data, null, '\\t'));\n}\nfunction n(e) {\n n = '\\n';\n for (m = 1; m < e; m++) {\n n = n + '\\n';\n }\n return n;\n}\nfunction log(e) {\n if (e == undefined) {\n return;\n }\n java.longToast(e);\n}\nfunction login() {\n result = JSON.parse(source.getLoginInfo());\n var username = result['账号'];\n $$$.name = username;\n var password = result['密码'];\n var options = {\n\t body: `username=${username}&password=${password}&submit_login=1`,\n\t method: 'POST'\n\t}\n var urls = java.ajax(`https:\/\/jmcomicgo.me`)\n\tvar url = urls.match(\/china\"><span>(.*?)<\\\/span>\/)[1];\n $$$.url = url;\n\tjava.ajax(`${url}\/login,${JSON.stringify(options)}`)\n\treturn put($$$);\n\t}\n\nP = ['时间','阅读','收藏'];\nfunction typeP(e) {\n if (e == undefined) {\n e = 0;\n }\n return P[e];\n}\nfunction tag(e) {\n if (tag == undefined) {\n tag = result.tag;\n }\n if (e == $$$.tag) {\n return log('【标签切换提示】' + n(2) + '已经选择此标签,无需更换');\n }\n log('【标签切换提示】' + n(2) + '已经切换到[' + typeP(e) + ']');\n $$$.tag = e;\n return put($$$);\n}\n\nfunction url() {\n var urls = java.ajax(`https:\/\/jmcomicgo.me`)\n var url = urls.match(\/china\"><span>(.*?)<\\\/span>\/)[1];\n if (url == $$$.url) {\n return log('【站点提示】' + n(2) + '站点无需更换');\n }\n log('站点变更:' + url)\n $$$.url = url;\n return put($$$);\n\t}\n", "respondTime": 180000, "ruleBookInfo": { "author": ".tag-block.42@text", "coverUrl": ".thumb-overlay.2@img@src", "intro": " \n{{@@class.p-t-5 float-left@text##日期}} {{@@class.p-t-5 float-right@text##日期}}\n{{@@class.col-xs-12 col-lg-7 [email protected] p-b-5@text##叙述:|敘述:}}", "kind": "sapn.tags a@text", "name": "id.book-name@text", "tocUrl": "baseUrl" }, "ruleContent": { "content": "{{@class.row [email protected]@data-original}}\n@js:result.split(\"\\n\").map(x=>'<img src=\"'+x+'\">').join(\"\\n\")", "imageDecode": "if (src.search(\"qyyuapi.com\") != -1) {\n result;\n} else {\n var Magua = new JavaImporter();\n Magua.importPackage(Packages.java.io, Packages.android.graphics);\n with(Magua) {\n let mac = src.match(\/photos\\\/(\\d+)?\\\/(\\d+)?\/);\n let bookId = mac[1];\n let imgId = mac[2];\n if (src.search(\"gif\") != -1 || Number(bookId) < 220980) {\n result;\n } else {\n if (Number(bookId) > 421925) {\n let md5 = java.md5Encode((bookId + imgId));\n let ascii = md5.substr( - 1).charCodeAt(0);\n var num = (ascii % 8 + 1) * 2;\n } else if (Number(bookId) >= 268850) {\n let md5 = java.md5Encode((bookId + imgId));\n let ascii = md5.substr( - 1).charCodeAt(0);\n var num = (ascii % 10 + 1) * 2;\n } else {\n var num = 10;\n }\n var img = BitmapFactory.decodeByteArray(result, 0, result.length);\n var height = img.getHeight();\n var width = img.getWidth();\n var y = Math.floor(height \/ num);\n var remainder = height % num;\n var newImg = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);\n let canvas = new Canvas(newImg);\n for (let i = 1; i <= num; i++) {\n let h = i === num ? remainder: 0;\n canvas.drawBitmap(Bitmap.createBitmap(img, 0, y * (i - 1), width, y + h), 0, height - y * i - h, null);\n }\n var newbit = new ByteArrayOutputStream();\n newImg.compress(Bitmap.CompressFormat.PNG, 100, newbit);\n newbit.toByteArray();\n }\n }\n}", "imageStyle": "FULL" }, "ruleExplore": {}, "ruleSearch": { "author": ".title-truncate.1@text", "bookList": ".p-b-15", "bookUrl": "tag.a.0@href", "coverUrl": "img@data-original||img@src", "intro": ".video-title@text", "kind": ".tag@text", "name": ".video-title@text", "wordCount": "span.0@text##^##👍🏻" }, "ruleToc": { "chapterList": "[email protected]||.reading", "chapterName": "text", "chapterUrl": "href##(.*)##$1\/?shunt=1", "updateTime": "span@text" }, "searchUrl": "{{Get('url')}}\/search\/photos?search_query={{key}}&search-type=photos&main_tag=0&page={{page}}", "weight": 0 }