得奇小说网
https://www.deqixs.co
jianghubailei (2226)02/10 14:12
站长4天改了3次源码, 再改我放弃了, 跟不上他的节奏 By 2026年2月10日
{
"bookSourceComment": "站长4天改了3次源码,\n再改我放弃了,\n跟不上他的节奏\n\nBy 2026年2月10日",
"bookSourceGroup": "小说",
"bookSourceName": "得奇小说网",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/www.deqixs.co",
"customButton": false,
"customOrder": 20,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "@js:\nconst list = []\nconst push = (title, url, size) => list.push({\n title,\n url,\n style: {\n \t layout_flexGrow: 1,\n \t layout_flexBasisPercent: size||0.29\n }\n});\n\nconst cats = \"全部::0\\n玄幻小说::1\\n都市小说::2\\n仙侠小说::3\\n历史小说::4\\n科幻小说::5\\n诸天无限::6\\n悬疑小说::7\\n体育小说::8\\n游戏小说::9\\n综合其他::10\"\nconst ranks = \"总点击榜::allvisit\\n月点击榜::monthvisit\\n周点击榜::weekvisit\\n日点击榜::dayvisit\\n总推荐榜::allvote\\n月推荐榜::monthvote\\n周推荐榜::weekvote\\n日推荐榜::dayvote\\n总月票榜::allvipvote\\n本月票榜::monthvipvote\\n前月票榜::previpvote\\n周月票榜::weekvipvote\\n日月票榜::dayvipvote\\n总鲜花榜::allflower\\n月鲜花榜::monthflower\\n周鲜花榜::weekflower\\n日鲜花榜::dayflower\\n总鸡蛋榜::allegg\\n月鸡蛋榜::monthegg\\n周鸡蛋榜::weekegg\\n日鸡蛋榜::dayegg\\n总销售榜::allsale\\n月销售榜::monthsale\\n周销售榜::weeksale\\n日销售榜::daysale\\n月勤更榜::monthwords\\n周勤更榜::weekwords\\n日勤更榜::daywords\\n最近更新::lastupdate\\n最新入库::postdate\\n最新上架::signtime\\n收藏榜::goodnum\\n字数榜::words\\n编辑推荐::toptime\\n新书榜::newhot\"\n\npush(\"书库\",\"\",1)\ncats.split(\"\\n\").forEach(cat => {\n\t let [title, id] = cat.split(\"::\")\n\t push(title, `\/sort\/${id}\/{{page}}.html`)\n})\npush(\"排行 - 全本\",\"\",1)\nranks.split(\"\\n\").forEach(rank => {\n\t let [title, rk] = rank.split(\"::\")\n\t push(title, `\/modules\/article\/toplist.php?order=allvisit&fullflag=${rk}&page={{page}}`)\n})\n\nJSON.stringify(list)",
"jsLib": "function towan(e) {\n if(!e) return;\n if (e < 1e4) {\n return e + \"字\";\n } else {\n return (e \/ 1e4).toFixed(1) + \"万字\";\n }\n}",
"lastUpdateTime": "1770703930942",
"respondTime": 180000,
"ruleBookInfo": {
"author": "[property$=author]@content",
"coverUrl": "[property$=image]@content",
"intro": "[property$=description]@content",
"kind": "[property$=category]@content&&\n[property$=status]@content&&\n[property$=update_time]@content",
"lastChapter": "[property$=latest_chapter_name]@content",
"name": "[property$=book_name]@content",
"wordCount": "<js>\nlet size = result.match(\/towan\\('\\d+'\\)\/)?.[0];\neval(size)\n<\/js>"
},
"ruleContent": {
"content": "<js>\nfunction generateToken(key){\n\t let timestamp = Date.now(); \n let nonce = Math.random().toString(36).substr(2, 8);\n let rawStr = baseUrl + '_' + timestamp + '_' + nonce + '_' + SECRET_KEY; \n let token = java.md5Encode(rawStr);\n return {token, timestamp, nonce}\n}\n\nlet matches = result.match(\/\\n\\s*url:\\s*'(.*?)'\/);\nlet url = matches \n ? matches[1] \n : \"https:\/\/www.deqixs.co\/modules\/article\/ajax2.php\";\nlet key = result.match(\/SECRET_KEY:\\s*'([^']+)',\/)?.[1];\nlet tokenData;\nif(!key || key == \"hidden\"){\n let token = result.match(\/var chapterToken\\s*=\\s*'([^']+)'\/)?.[1];\n let timestamp = result.match(\/var timestamp\\s*=\\s*(\\d+);\/)?.[1];\n let nonce = result.match(\/var nonce\\s*=\\s*'([^']+)'\/)?.[1];\n if(token && timestamp && nonce){\n tokenData = {token, timestamp, nonce}\n }\n}else{\n tokenData = generateToken(key)\n}\nlet [, aid, cid] = baseUrl.match(\/\\\/books\\\/(\\d+)\\\/(\\d+)\\.html\/);\nlet params = Object.assign({aid, cid}, tokenData);\nlet paramStr =\tObject.entries(params)\n .map(x=>x.join(\"=\")).join(\"&\");\nlet headers = {\n\t \"User-Agent\": \"Mozilla\/5.0 (Linux; Android 12; NOP-AN00 Build\/HUAWEINOP-AN01P) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/114.0.5735.196 Mobile Safari\/537.36\",\n\t \"Referer\": baseUrl,\n\t \"Accept\":\t\"text\/plain, *\/*; q=0.01\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n}\nurl += \"?\"+paramStr+\",\"+JSON.stringify({\n\t headers\n})\n\njava.ajax(url)\n<\/js>\n$..content||$.message",
"replaceRegex": "@js:\nconst FILTER_RULES = [\n \/更新不易.+?看最新章节!\/g,\n \/更新不易.+?看最新无错章节!\/g, \n \/更新不易.+?最新小说章节!\/g,\n \/速.?读.?谷\/g, \n \/本章节未完.+?请订阅\/g,\n '当&前@章#节$内%容^不&完*整!要~查!看-完_整|章;节)请(退&出%阅#读|模*式!',\n \n]\n\nfor(let reg of FILTER_RULES){\n\t result = result.replace(reg, \"\")\n}\nresult;"
},
"ruleExplore": {},
"ruleSearch": {
"author": ".author.0@text##作者:",
"bookList": ".bookbox",
"bookUrl": ".bookname a@href",
"coverUrl": ".bookname a@href@js:\nlet id = result.match(\/\\\/(\\d+)\\\/$\/)[1];\nlet sid = parseInt(id \/ 1000);\n`\/files\/article\/image\/${sid}\/${id}\/${id}s.jpg`",
"intro": ".update@textNodes",
"lastChapter": ".cat a@text",
"name": ".bookname a@text",
"wordCount": "\/\/script\/text()@js:\nif(result){\n\t eval(result)\n}"
},
"ruleToc": {
"chapterList": "#list-chapterAll dd a",
"chapterName": "text",
"chapterUrl": "href",
"nextTocUrl": ".next@href"
},
"searchUrl": "\/modules\/article\/search.php,{\n \"body\": \"searchkey={{key}}&action=login\",\n \"method\": \"POST\"\n}",
"weight": 0
}