番茄小说

https://fanqienovel.com

qazplmning (6967)5天前

【🍅小说】 一定要看源里面的注释!!!!!!
二维码导入
{
    "bookSourceComment": "此书源由「一头居」原创提供\n\n由于🍅站点网页端开启了试读机制,所以章节只能看到第10章,之后的需要下载APP或开通SVIP才能浏览(能解决的既可使用,解决不了的我还会出第二个版本)\n\n【反混淆】网页端正文与部分榜单文本使用 PUA 私用区字体加密,此源于 jsLib 内置 362 字映射表(0xE3E8 起)逐字还原,实测整本还原率 100%。",
    "bookSourceGroup": "一头居",
    "bookSourceName": "番茄小说",
    "bookSourceType": 0,
    "bookSourceUrl": "https:\/\/fanqienovel.com",
    "bookUrlPattern": "https?:\/\/fanqienovel\\.com\/page\/\\d+",
    "concurrentRate": "500",
    "customButton": false,
    "customOrder": 0,
    "enabled": true,
    "enabledCookieJar": true,
    "enabledExplore": true,
    "eventListener": false,
    "exploreUrl": "----------------男生全部----------------::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{fqCatOff(page)}}&limit=100&category_id={{fqCatId(page,1)}}&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n西方奇幻::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=1141&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n东方仙侠::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=1140&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n科幻末世::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=8&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n都市日常::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=261&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n都市修真::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=124&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n都市高武::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=1014&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n历史古代::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=273&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n战神赘婿::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=27&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n都市种田::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=263&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n传统玄幻::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=258&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n历史脑洞::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=272&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n悬疑脑洞::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=539&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n都市脑洞::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=262&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n玄幻脑洞::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=257&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n悬疑灵异::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=751&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n抗战谍战::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=504&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n游戏体育::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=746&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n动漫衍生::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=718&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n男频衍生::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=1016&gender=1&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n----------------女生全部----------------::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{fqCatOff(page)}}&limit=100&category_id={{fqCatId(page,0)}}&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n古风世情::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=1139&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n科幻末世::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=8&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n游戏体育::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=746&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n女频衍生::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=1015&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n玄幻言情::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=248&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n种田::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=23&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n年代::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=79&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n现言脑洞::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=267&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n宫斗宅斗::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=246&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n悬疑脑洞::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=539&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n古言脑洞::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=253&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n快穿::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=24&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n青春甜宠::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=749&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n星光璀璨::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=745&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n女频悬疑::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=747&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n职场婚恋::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=750&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n豪门总裁::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=748&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}\n民国言情::https:\/\/fanqienovel.com\/api\/rank\/category\/list?app_id=2503&rank_list_type=3&rankMold=1&offset={{(page-1)*100}}&limit=100&category_id=1017&gender=0&rank_version={{Math.floor(Date.now()\/3600000)*3600}}",
    "header": "{\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 10; SM-G975F) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Mobile Safari\/537.36\", \"Accept\": \"text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8\", \"Accept-Language\": \"zh-CN,zh;q=0.9\", \"Referer\": \"https:\/\/fanqienovel.com\/\"}",
    "jsLib": "\n\/* ===== 番茄小说 PUA 字体反混淆库 =====\n * 网页端正文\/榜单文本会把常用字替换成 Unicode 私用区码位(U+E3E8~U+E55B),\n * 真实字形由 awesome-font 字体承载。此映射表已由字体逐字还原核对,\n * 覆盖 0xE3E8 起 362 个码位,实测整本还原率 100%。\n *\/\nvar FQM = \"D在主特家军然表场4要只v和?6别还g现儿岁??此象月3出战工相o男直失世F都平文什VO将真T那当?会立些u是十张学气大爱两命全后东性通被1它乐接而感车山公了常以何可话先pi叫轻M士w着变尔快l个说少色里安花远7难师放t报认面道S?克地度I好机U民写把万同水新没书电吃像斯5为y白几日教看但第加候作上拉住有法r事应位利你声身国问马女他Y比父xAHNsX边美对所金活回意到z从j知又内因点Q三定8Rb正或夫向德听更?得告并本q过记L让打f人就者去原满体做经K走如孩cG给使物?最笑部?员等受k行一条果动光门头见往自解成处天能于名其发总母的死手入路进心来h时力多开已许d至由很界n小与Z想代么分生口再妈望次西风种带J?实情才这?E我神格长觉间年眼无不亲关结0友信下却重己老2音字m呢明之前高PB目太e9起稜她也W用方子英每理便四数期中C外样a海们任\";\nvar FQB = 0xE3E8;\n\n\/* 还原 PUA 密文 *\/\nfunction fqD(t) {\n    t = String(t == null ? \"\" : t);\n    var o = \"\", i, c, k;\n    for (i = 0; i < t.length; i++) {\n        c = t.charCodeAt(i);\n        k = c - FQB;\n        if (k >= 0 && k < FQM.length) { o += FQM.charAt(k); } else { o += t.charAt(i); }\n    }\n    return o;\n}\n\n\/* 安全取值: fqG(o,'a') 等价于 o&&o.a,取不到返回 \"\" *\/\nfunction fqG(o, k) {\n    if (o === undefined || o === null) { return \"\"; }\n    var v = o[k];\n    if (v === undefined || v === null) { return \"\"; }\n    return v;\n}\n\n\/* 时间戳(秒) -> yyyy-MM-dd *\/\nfunction fqDate(v) {\n    v = Number(v);\n    if (!v || isNaN(v)) { return \"\"; }\n    var d = new Date(v * 1000);\n    var m = d.getMonth() + 1, dd = d.getDate();\n    return d.getFullYear() + \"-\" + (m < 10 ? \"0\" + m : m) + \"-\" + (dd < 10 ? \"0\" + dd : dd);\n}\n\n\/* 依次取第一个非空字段 *\/\nfunction fqP(o, ks) {\n    var i, v;\n    for (i = 0; i < ks.length; i++) {\n        v = o[ks[i]];\n        if (v !== undefined && v !== null && v !== \"\") { return v; }\n    }\n    return \"\";\n}\n\n\/* 从页面 HTML 里提取 window.__INITIAL_STATE__ 并解析为对象\n * 该 JSON 含非法字面量 undefined,先替换为 null 再解析\n *\/\nfunction fqS(h) {\n    h = String(h == null ? \"\" : h);\n    var i = h.indexOf(\"window.__INITIAL_STATE__\");\n    if (i < 0) { return null; }\n    var j = h.indexOf(\"{\", i);\n    if (j < 0) { return null; }\n    var d = 0, ins = false, esc = false, q = \"\", k, e = -1, c;\n    for (k = j; k < h.length; k++) {\n        c = h.charAt(k);\n        if (ins) {\n            if (esc) { esc = false; }\n            else if (c === \"\\\\\") { esc = true; }\n            else if (c === q) { ins = false; }\n        } else {\n            if (c === '\"' || c === \"'\") { ins = true; q = c; }\n            else if (c === \"{\") { d++; }\n            else if (c === \"}\") { d--; if (d === 0) { e = k; break; } }\n        }\n    }\n    if (e < 0) { return null; }\n    var s = h.substring(j, e + 1).replace(\/([:,\\[])\\s*undefined\\s*([,}\\]])\/g, \"$1null$2\");\n    try { return JSON.parse(s); } catch (err) { return null; }\n}\n\n\/* 从各种榜单\/搜索响应里取出书籍数组 *\/\nfunction fqL(o) {\n    var d = fqG(o, \"data\");\n    if (d === \"\") { d = o; }\n    var cand = [fqG(d, \"search_book_data_list\"), fqG(d, \"book_list\"),\n                fqG(d, \"list\"), fqG(d, \"data\"), fqG(o, \"book_list\")];\n    var i;\n    for (i = 0; i < cand.length; i++) {\n        if (cand[i] !== \"\" && cand[i] !== null && cand[i].length) { return cand[i]; }\n    }\n    return [];\n}\n\n\/* 归一化一本书 -> 统一 JSON 串 *\/\nfunction fqB(b) {\n    return JSON.stringify({\n        n: fqD(fqP(b, [\"book_name\", \"bookName\"])),\n        a: fqD(fqP(b, [\"author\"])),\n        k: fqD(fqP(b, [\"category\"])),\n        i: fqD(fqP(b, [\"book_abstract\", \"abstract\"])),\n        w: fqP(b, [\"word_count\", \"wordNumber\"]),\n        l: fqD(fqP(b, [\"last_chapter_title\", \"lastChapterTitle\", \"title\"])),\n        t: fqDate(fqP(b, [\"last_chapter_time\", \"lastChapterUpdateTime\"])),\n        c: fqP(b, [\"thumb_url\", \"thumbUri\"]),\n        u: \"https:\/\/fanqienovel.com\/page\/\" + fqP(b, [\"book_id\", \"bookId\"])\n    });\n}\n\n\/* 列表规则: 同时兼容 JSON 接口与 SSR 页面 *\/\nfunction fqParse(result) {\n    var s = String(result == null ? \"\" : result).replace(\/^\\s+\/, \"\");\n    var L = null, o;\n    if (s.charAt(0) === \"{\") {\n        try { o = JSON.parse(s); } catch (e) { o = null; }\n        if (o !== null) { L = fqL(o); }\n    }\n    if (L === null) {\n        var st = fqS(s);\n        if (st !== null) { L = fqG(fqG(st, \"rank\"), \"book_list\"); if (L === \"\") { L = null; } }\n    }\n    return L;\n}\n\nfunction fqBookList(result) {\n    var L = fqParse(result);\n    if (L === null) { return []; }\n    var out = [], i;\n    for (i = 0; i < L.length; i++) { out.push(fqB(L[i])); }\n    return out;\n}\n\n\/* 发现页: 榜单接口偶发返回空列表,自动重试 *\/\nfunction fqExplore(result) {\n    var out = fqBookList(result);\n    if (out.length > 0) { return out; }\n    if (typeof baseUrl === \"undefined\" || baseUrl === null) { return out; }\n    var u = String(baseUrl);\n    if (u.indexOf(\"fanqienovel.com\/api\/\") < 0) { return out; }\n    var i, r;\n    for (i = 0; i < 3; i++) {\n        r = \"\";\n        try { r = String(java.ajax(u)); } catch (e) { r = \"\"; }\n        if (r !== \"\") {\n            out = fqBookList(r);\n            if (out.length > 0) { return out; }\n        }\n    }\n    return out;\n}\n\n\/* ===== 分类榜单分页 =====\n * 榜单接口 limit 上限 100;offset 可继续翻页,单分类实测约 313 本(4 页)。\n * 「频道全部」入口把 页码 映射为 (分类, 偏移):每 4 页对应一个分类。\n *\/\nvar FQ_MALE = [1141, 1140, 8, 261, 124, 1014, 273, 27, 263, 258, 272, 539, 262, 257, 751, 504, 746, 718, 1016];\nvar FQ_FEMALE = [1139, 8, 746, 1015, 248, 23, 79, 267, 246, 539, 253, 24, 749, 745, 747, 750, 748, 1017];\nvar FQ_PAGE_PER_CAT = 4;   \/* 每个分类取 4 页 = 400 本上限 *\/\n\nfunction fqCatId(page, gender) {\n    var ids = (Number(gender) === 0) ? FQ_FEMALE : FQ_MALE;\n    var i = Math.floor((Number(page) - 1) \/ FQ_PAGE_PER_CAT);\n    if (!(i >= 0)) { i = 0; }\n    if (i >= ids.length) { i = ids.length - 1; }\n    return ids[i];\n}\n\nfunction fqCatOff(page) {\n    var k = (Number(page) - 1) % FQ_PAGE_PER_CAT;\n    if (!(k >= 0)) { k = 0; }\n    return k * 100;\n}\n\n\/* 频道一共能翻多少页(仅用于说明,不影响功能) *\/\nfunction fqCatTotalPage(gender) {\n    var ids = (Number(gender) === 0) ? FQ_FEMALE : FQ_MALE;\n    return ids.length * FQ_PAGE_PER_CAT;\n}\n",
    "lastUpdateTime": "1791761996518",
    "respondTime": 180000,
    "ruleBookInfo": {
        "author": "@js:fqD(String(JSON.parse(String(result)).author))",
        "canReName": "true",
        "coverUrl": "@js:String(JSON.parse(String(result)).thumbUri)",
        "init": "@js:(function(){\n  var st = fqS(String(result));\n  if (st === null) { return \"{}\"; }\n  var p = st.page;\n  if (p === undefined || p === null) { return \"{}\"; }\n  return JSON.stringify(p);\n})()",
        "intro": "@js:fqD(String(JSON.parse(String(result)).abstract))",
        "kind": "@js:(function(){\n  var p = JSON.parse(String(result));\n  var out = [];\n  try {\n    var a = JSON.parse(String(fqG(p, \"categoryV2\")));\n    for (var i = 0; i < a.length; i++) { out.push(fqD(String(fqG(a[i], \"Name\")))); }\n  } catch (e) {}\n  if (out.length === 0) {\n    var c = fqD(String(fqG(p, \"category\")));\n    if (c !== \"\") { out.push(c); }\n  }\n  return out.join(\",\");\n})()",
        "lastChapter": "@js:fqD(String(JSON.parse(String(result)).lastChapterTitle))",
        "name": "@js:fqD(String(JSON.parse(String(result)).bookName))",
        "tocUrl": "@js:(function(){\n  var m = String(baseUrl).match(\/page\\\/(\\d+)\/);\n  if (m === null) { return \"\"; }\n  return \"https:\/\/fanqienovel.com\/api\/reader\/directory\/detail?bookId=\" + m[1];\n})()",
        "wordCount": "@js:String(JSON.parse(String(result)).wordNumber)"
    },
    "ruleContent": {
        "content": "@js:(function(){\n  var st = fqS(String(result));\n  var cd = fqG(fqG(st, \"reader\"), \"chapterData\");\n  var c = fqD(String(fqG(cd, \"content\")));\n  var imgs = [];\n  c = c.replace(\/<img[^>]*?(\\{[^{}]*\"web_uri\"[^{}]*\\})[^>]*>\/gi, function (m, js) {\n    var o = null;\n    try { o = JSON.parse(js); } catch (e) { return \"\"; }\n    var uri = fqG(o, \"web_uri\");\n    if (uri === \"\") { return \"\"; }\n    imgs.push(\"https:\/\/p6-novel.byteimg.com\/\" + uri + \"~tplv-resize:\" +\n              fqG(o, \"width\") + \":\" + fqG(o, \"height\") + \".image\");\n    return \"\\u0001\" + (imgs.length - 1) + \"\\u0001\";\n  });\n  c = c.replace(\/<\\\/p>\\s*<p>\/gi, \"\\n\");\n  c = c.replace(\/<br\\s*\\\/?>\/gi, \"\\n\");\n  c = c.replace(\/<\\\/?p[^>]*>\/gi, \"\\n\");\n  c = c.replace(\/<\\\/img>\/gi, \"\");\n  c = c.replace(\/<[^>]+>\/g, \"\");\n  c = c.replace(\/&nbsp;\/g, \" \");\n  c = c.replace(\/&lt;\/g, \"<\");\n  c = c.replace(\/&gt;\/g, \">\");\n  c = c.replace(\/&quot;\/g, '\"');\n  c = c.replace(\/&#39;\/g, \"'\");\n  c = c.replace(\/&amp;\/g, \"&\");\n  c = c.replace(\/\\r\/g, \"\");\n  c = c.replace(\/[ \\t]+\\n\/g, \"\\n\");\n  c = c.replace(\/\\n{3,}\/g, \"\\n\\n\");\n  c = c.replace(\/\\u0001(\\d+)\\u0001\/g, function (m, i) {\n    return \"\\n<img src=\\\"\" + imgs[Number(i)] + \"\\\">\\n\";\n  });\n  return c.replace(\/^\\s+|\\s+$\/g, \"\");\n})()",
        "imageStyle": "DEFAULT",
        "replaceRegex": "##[\\u200b-\\u200f\\ufeff]##",
        "title": "@js:fqD(String(fqG(fqG(fqS(String(result)), \"reader\"), \"chapterData\").title))"
    },
    "ruleExplore": {
        "author": "@js:JSON.parse(String(result)).a",
        "bookList": "@js:fqExplore(result)",
        "bookUrl": "@js:JSON.parse(String(result)).u",
        "coverUrl": "@js:JSON.parse(String(result)).c",
        "intro": "@js:JSON.parse(String(result)).i",
        "kind": "@js:JSON.parse(String(result)).k",
        "lastChapter": "@js:JSON.parse(String(result)).l",
        "name": "@js:JSON.parse(String(result)).n",
        "wordCount": "@js:JSON.parse(String(result)).w"
    },
    "ruleSearch": {
        "author": "@js:JSON.parse(String(result)).a",
        "bookList": "@js:fqBookList(result)",
        "bookUrl": "@js:JSON.parse(String(result)).u",
        "checkKeyWord": "search_book_data_list",
        "coverUrl": "@js:JSON.parse(String(result)).c",
        "intro": "@js:JSON.parse(String(result)).i",
        "kind": "@js:JSON.parse(String(result)).k",
        "lastChapter": "@js:JSON.parse(String(result)).l",
        "name": "@js:JSON.parse(String(result)).n",
        "wordCount": "@js:JSON.parse(String(result)).w"
    },
    "ruleToc": {
        "chapterList": "@js:(function(){\n  var d = fqG(JSON.parse(String(result)), \"data\");\n  var out = [];\n  var cv = fqG(d, \"chapterListWithVolume\");\n  var vn = fqG(d, \"volumeNameList\");\n  var i, j, g, c, nm;\n  if (cv !== \"\" && cv !== null) {\n    for (i = 0; i < cv.length; i++) {\n      g = cv[i];\n      if (g === null || g === undefined) { continue; }\n      if (g.length === 0) { continue; }\n      if (cv.length > 1) {\n        nm = \"\";\n        if (vn !== \"\" && vn !== null) { if (vn[i] !== undefined) { nm = String(vn[i]); } }\n        out.push(JSON.stringify({n: nm, u: \"\", v: true, t: \"共\" + g.length + \"章\"}));\n      }\n      for (j = 0; j < g.length; j++) {\n        c = g[j];\n        out.push(JSON.stringify({\n          n: fqD(String(fqG(c, \"title\"))),\n          u: \"https:\/\/fanqienovel.com\/reader\/\" + fqG(c, \"itemId\"),\n          v: false,\n          t: fqG(c, \"firstPassTime\"),\n          p: fqG(c, \"needPay\"),\n          x: fqG(c, \"isChapterLock\")\n        }));\n      }\n    }\n  }\n  if (out.length === 0) {\n    var ids = fqG(d, \"allItemIds\");\n    for (i = 0; i < ids.length; i++) {\n      out.push(JSON.stringify({n: \"第\" + (i + 1) + \"章\",\n                               u: \"https:\/\/fanqienovel.com\/reader\/\" + ids[i], v: false}));\n    }\n  }\n  return out;\n})()",
        "chapterName": "@js:JSON.parse(String(result)).n",
        "chapterUrl": "@js:JSON.parse(String(result)).u",
        "isPay": "@js:(function(){\n  var o = JSON.parse(String(result));\n  if (o.v === true) { return \"\"; }\n  if (Number(o.p) > 0) { return \"true\"; }\n  return \"\";\n})()",
        "isVip": "@js:(function(){\n  var o = JSON.parse(String(result));\n  if (o.v === true) { return \"\"; }\n  if (o.x === true) { return \"true\"; }\n  return \"\";\n})()",
        "isVolume": "@js:(function(){\n  if (JSON.parse(String(result)).v === true) { return \"true\"; }\n  return \"\";\n})()",
        "updateTime": "@js:(function(){\n  var t = JSON.parse(String(result)).t;\n  if (t === undefined || t === null || t === \"\") { return \"\"; }\n  if (typeof t === \"string\") { return t; }\n  var d = new Date(Number(t) * 1000);\n  var m = d.getMonth() + 1, dd = d.getDate();\n  return d.getFullYear() + \"-\" + (m < 10 ? \"0\" + m : m) + \"-\" + (dd < 10 ? \"0\" + dd : dd);\n})()"
    },
    "searchUrl": "https:\/\/fanqienovel.com\/api\/author\/search\/search_book\/v1?filter=127,127,127,127&page_count=10&page_index={{page-1}}&query_word={{encodeURIComponent(key)}},{\"method\":\"POST\",\"body\":\"{}\",\"headers\":{\"Content-Type\":\"application\/json\"}}",
    "variableComment": "此源无自定义变量。jsLib 中 FQM 为 PUA 字体映射表(0xE3E8 起 362 字),FQB 为映射起始码位;fqD 还原密文,fqS 解析 __INITIAL_STATE__,fqL\/fqB\/fqBookList 归一化各接口书籍列表,fqExploreAll 处理分类合并入口,FQ_MALE\/FQ_FEMALE 为男女频道分类 ID 表。",
    "weight": 0
}
广告