📖💵书耽🆔🅰
https://app.shubl.com
采集机器人 (2)2023/04/06
该用户很懒,什么介绍也没有写!
{ "bookSourceComment": "login_name:账号\npasswd:密码\nlogin_token:填写账号密码调试后获取\naccount:填写账号密码调试后获取\n请填写账号密码,调试后复制 login_token 和 account,粘贴到搜索里。如需发现,粘贴到发现列表相关位置。", "bookSourceGroup": "📖 正版,🌟 ΑΡΙ", "bookSourceName": "📖💵书耽🆔🅰", "bookSourceType": 0, "bookSourceUrl": "https:\/\/app.shubl.com", "bookUrlPattern": "", "customOrder": 280, "enabled": true, "enabledCookieJar": false, "enabledExplore": true, "enabledReview": false, "exploreUrl": "全部纯爱::https:\/\/www.baidu.com\/category_type=1&order=week_click&page={{page}}\n现纯::https:\/\/www.baidu.com\/category_type=4&order=week_click&page={{page}}\n幻纯::https:\/\/www.baidu.com\/category_type=5&order=week_click&page={{page}}\n古纯::https:\/\/www.baidu.com\/category_type=6&order=week_click&page={{page}}\n百合::https:\/\/www.baidu.com\/category_type=3&order=week_click&page={{page}}\n全部言情::https:\/\/www.baidu.com\/category_type=20&order=week_click&page={{page}}\n现言::https:\/\/www.baidu.com\/category_type=8&order=week_click&page={{page}}\n幻言::https:\/\/www.baidu.com\/category_type=9&order=week_click&page={{page}}\n古言::https:\/\/www.baidu.com\/category_type=10&order=week_click&page={{page}}\n无CP::https:\/\/www.baidu.com\/category_type=21&order=week_click&page={{page}}\n付费&连载&更新时间::https:\/\/www.baidu.com\/category_type=1&order=uptime&up_status=0&is_paid=1&page={{page}}\n付费&完本&更新时间::https:\/\/www.baidu.com\/category_type=1&order=uptime&up_status=1&is_paid=1&page={{page}}\n每日签到::https:\/\/www.baidu.com\/get_daily_task_bonus", "header": "", "lastUpdateTime": 1672719374812, "loginUrl": "", "respondTime": 6228, "ruleBookInfo": { "author": "$.author_name", "coverUrl": "$.cover", "init": "<js>\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function decode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n let bytes=Base64.decode(String(word).getBytes(),2);\n chipher.init(2,key,iv);\n return String(chipher.doFinal(bytes));\n }\n}\ndecode(result)\n<\/js>\n$.data.book_info", "intro": "$.description", "kind": "$.tag", "lastChapter": "{{$.last_chapter_info.chapter_title}} \/ {{$.last_chapter_info.uptime}}", "name": "$.book_name", "tocUrl": "@js:\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function encode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n chipher.init(1,key,iv);\n return java.encodeURI(Base64.encodeToString(chipher.doFinal(String(word).getBytes()),Base64.NO_WRAP));\n }\n}\n\nlet jsonObj={\"app_signature_md5\":\"f73576612783f8ed8b68cdf73a56be94\",\"app_version\":\"2.1.6\",\"channel\":\"default\",\"last_update_time\":\"0\",\"book_id\":{{$.book_id}},\"login_token\":String(java.get('login_token')),\"account\":String(java.get('account'))}\nlet body = \"secret_content=\"+encode(JSON.stringify(jsonObj));\nlet option = {\"method\": \"POST\",\"body\": String(body)};\n\"https:\/\/app.shubl.com\/chapter\/get_chapter_list_group_by_division,\" + JSON.stringify(option)", "wordCount": "$.total_word_count" }, "ruleContent": { "content": "<js>\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function decode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n let bytes=Base64.decode(String(word).getBytes(),2);\n chipher.init(2,key,iv);\n return String(chipher.doFinal(bytes));\n }\n}\ndecode(result)\n<\/js>\n$.data.chapter_info.txt_content" }, "ruleExplore": { "author": "$.author_name", "bookList": "<js>\njava.put('login_token','32940914bd5e10756142366b6b9c7cd6')\njava.put('account','萌友28482221176')\n<\/js>\n<js>\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function encode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n chipher.init(1,key,iv);\n return java.encodeURI(Base64.encodeToString(chipher.doFinal(String(word).getBytes()),Base64.NO_WRAP));\n }\n function decode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n let bytes=Base64.decode(String(word).getBytes(),2);\n chipher.init(2,key,iv);\n return String(chipher.doFinal(bytes));\n }\n}\nresponse=null\nif(!baseUrl.match(\/get_daily_task_bonus\/)){\ncategory_type=baseUrl.match(\/category_type=(\\d+)\/)?baseUrl.match(\/category_type=(\\d+)\/)[1]:\"\"\norder=baseUrl.match(\/order=(.+?)&\/)?baseUrl.match(\/order=(.+?)&\/)[1]:\"\"\nis_paid=baseUrl.match(\/is_paid=(\\d)&\/)?baseUrl.match(\/is_paid=(\\d)&\/)[1]:\"\"\nup_status=baseUrl.match(\/up_status=(\\d)&\/)?baseUrl.match(\/up_status=(\\d)&\/)[1]:\"\"\njsonObj={\"category_type\":category_type,\"app_signature_md5\":\"f73576612783f8ed8b68cdf73a56be94\",\"app_version\":\"2.1.6\",\"channel\":\"default\",\"order\":order,\"count\":\"15\",\"is_paid\":is_paid,\"page\":String(baseUrl.match(\/page=(\\d+)\/)[1]-1),\"up_status\":up_status,\"login_token\":String(java.get('login_token')),\"account\":String(java.get('account'))}\njava.log(JSON.stringify(jsonObj))\noption={\"method\":\"POST\",\"body\":\"secret_content=\"+encodeURIComponent(encode(JSON.stringify(jsonObj)))}\nurl=\"https:\/\/app.shubl.com\/bookcity\/get_filter_search_book_list,\"+JSON.stringify(option)\nresponse=decode(java.ajax(url))\n}else{\njsonObj={\"app_signature_md5\":\"f73576612783f8ed8b68cdf73a56be94\",\"app_version\":\"2.1.6\",\"channel\":\"default\",\"task_type\":\"1\",\"login_token\":String(java.get('login_token')),\"account\":String(java.get('account'))}\noption={\"method\":\"POST\",\"body\":\"secret_content=\"+encodeURIComponent(encode(JSON.stringify(jsonObj)))}\nurl=\"https:\/\/app.shubl.com\/reader\/get_daily_task_bonus,\"+JSON.stringify(option)\nresponse=decode(java.ajax(url))\n}\n\n\/\/ 打印解密结果\n\/\/java.log(JSON.stringify(JSON.parse(response)))\nresponse\n<\/js>\n$.data.book_list||$.[*]", "bookUrl": "@js:\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function encode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n chipher.init(1,key,iv);\n return java.encodeURI(Base64.encodeToString(chipher.doFinal(String(word).getBytes()),Base64.NO_WRAP));\n }\n}\nif(!baseUrl.match(\/get_daily_task_bonus\/)){\nlet jsonObj={\"app_signature_md5\":\"f73576612783f8ed8b68cdf73a56be94\",\"app_version\":\"2.1.6\",\"channel\":\"default\",\"book_id\":String(java.getString('$.book_id')),\"login_token\":String(java.get('login_token')),\"account\":String(java.get('account'))}\nlet body = \"secret_content=\"+encode(JSON.stringify(jsonObj));\nlet option = {\"method\": \"POST\",\"body\": String(body)};\n\"https:\/\/app.shubl.com\/book\/get_info_by_id,\" + JSON.stringify(option)\n}else{\nbaseUrl\n}", "coverUrl": "$.cover", "intro": "$.description", "kind": "$.tag", "lastChapter": "{{$.last_chapter_info.chapter_title}} \/ {{$.last_chapter_info.uptime}}", "name": "$.book_name@put:{bid:book_id}||$", "wordCount": "$.total_word_count" }, "ruleReview": {}, "ruleSearch": { "author": "$.author_name", "bookList": "<js>\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function decode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n let bytes=Base64.decode(String(word).getBytes(),2);\n chipher.init(2,key,iv);\n return String(chipher.doFinal(bytes));\n }\n}\n\nresponse=decode(result)\n\/\/ 打印解密结果\njava.log(JSON.stringify(JSON.parse(response)))\nresponse\n<\/js>\n$.data.book_list", "bookUrl": "@js:\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function encode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n chipher.init(1,key,iv);\n return java.encodeURI(Base64.encodeToString(chipher.doFinal(String(word).getBytes()),Base64.NO_WRAP));\n }\n}\n\nlet jsonObj={\"app_signature_md5\":\"f73576612783f8ed8b68cdf73a56be94\",\"app_version\":\"2.1.6\",\"channel\":\"default\",\"book_id\":{{$.book_id}},\"login_token\":String(java.get('login_token')),\"account\":String(java.get('account'))}\nlet body = \"secret_content=\"+encode(JSON.stringify(jsonObj));\nlet option = {\"method\": \"POST\",\"body\": String(body)};\n\"https:\/\/app.shubl.com\/book\/get_info_by_id,\" + JSON.stringify(option)", "coverUrl": "$.cover", "intro": "$.description", "kind": "$.tag", "lastChapter": "{{$.last_chapter_info.chapter_title}} \/ {{$.last_chapter_info.uptime}}", "name": "$.book_name@put:{bid:book_id}", "wordCount": "$.total_word_count" }, "ruleToc": { "chapterList": "<js>\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function decode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n let bytes=Base64.decode(String(word).getBytes(),2);\n chipher.init(2,key,iv);\n return String(chipher.doFinal(bytes));\n }\n}\ndecode(result)\n<\/js>\n$.data.chapter_list_group[*].chapter_list[*]", "chapterName": "$.chapter_title", "chapterUrl": "@js:\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function encode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n chipher.init(1,key,iv);\n return java.encodeURI(Base64.encodeToString(chipher.doFinal(String(word).getBytes()),Base64.NO_WRAP));\n }\n}\n\nlet jsonObj={\"app_signature_md5\":\"f73576612783f8ed8b68cdf73a56be94\",\"app_version\":\"2.1.6\",\"channel\":\"default\",\"chapter_id\":{{$.chapter_id}},\"login_token\":String(java.get('login_token')),\"account\":String(java.get('account'))}\n\nlet body = \"secret_content=\"+encode(JSON.stringify(jsonObj));\nlet option = {\"method\": \"POST\",\"body\": String(body)};\n\"https:\/\/app.shubl.com\/chapter\/get_chapter_info,\" + JSON.stringify(option)\n\n\n", "isVip": "@js:!{{$.auth_access}}", "updateTime": "{{$.word_count}} 字 发布于 {{$.uptime}}" }, "searchUrl": "@js:\n\/**\n填写账号密码调试后获取 login_token 和 account,分别填入。\n**\/\n\nlogin_name=\"\"\npasswd=\"\"\nlogin_token=\"\"\naccount=\"\"\n\nvar javaImport = new JavaImporter();\njavaImport.importPackage(\n Packages.java.lang,\n Packages.javax.crypto.spec,\n Packages.javax.crypto,\n Packages.android.util\n);\n\nwith(javaImport){\n function encode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n chipher.init(1,key,iv);\n return java.encodeURI(Base64.encodeToString(chipher.doFinal(String(word).getBytes()),Base64.NO_WRAP));\n }\n function decode(word){\n let key=SecretKeySpec(java.base64DecodeToByteArray(\"nvlrM3RT6n0iYj4I\/zbGqisUGGMpy3UT84cNphYONC8=\"),\"AES\");\n let iv=IvParameterSpec(java.base64DecodeToByteArray(\"AAAAAAAAAAAAAAAAAAAAAA==\"));\n let chipher=Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n let bytes=Base64.decode(String(word).getBytes(),2);\n chipher.init(2,key,iv);\n return String(chipher.doFinal(bytes));\n }\n}\n\nif (login_name && passwd && !login_token && !account) {\n let jsonStr = {\n \"login_name\": login_name,\n \"passwd\": passwd,\n \"app_signature_md5\": \"f73576612783f8ed8b68cdf73a56be94\",\n \"app_version\": \"2.1.6\",\n \"channel\": \"default\"\n }\n let body = \"secret_content=\" + encode(JSON.stringify(jsonStr));\n let option = {\n \"method\": \"POST\",\n \"body\": String(body)\n };\n url = \"https:\/\/app.shubl.com\/signup\/login,\" + JSON.stringify(option)\n resp = JSON.parse(decode(java.ajax(url)))\n if (resp.code == \"100000\") {\n java.log('❗️ 这是你的 login_token,请复制 ❗️:' + resp.data.login_token + '\\n' + '❗️ 这是你的 account,请复制 ❗️:' + resp.data.reader_info.account)\n } else {\n java.log('❗️ ' + resp.tip + ' ❗️')\n }\n} else {\n java.log('❗️ 如需看付费章节,请登录! ❗️')\n}\n\njava.put('login_token',login_token!=\"\"?login_token:\"0f6bd1d063f202f71c3b84678027ce81\")\njava.put('account',account!=\"\"?account:\"萌友521068519938\")\nlet jsonObj={\"app_signature_md5\":\"f73576612783f8ed8b68cdf73a56be94\",\"app_version\":\"2.1.6\",\"channel\":\"default\",\"order\":\"week_click\",\"count\":\"15\",\"category_type\":\"1\",\"page\":page-1,\"key\":key,\"login_token\":String(java.get('login_token')),\"account\":String(java.get('account'))}\nlet body = \"secret_content=\"+encode(JSON.stringify(jsonObj));\nlet option = {\"method\": \"POST\",\"body\": String(body)};\n\"https:\/\/app.shubl.com\/bookcity\/get_filter_search_book_list,\" + JSON.stringify(option)", "weight": 0 }