番茄小说
https://fanqienovel.com
liuqumm (14054)2小时前
番茄小说官方源,无段评,基于网页版,阅读交流群组https://t.me/yuedushu
{
"bookSourceComment": "番茄小说网页版。发现:男生\/女生\/全部 主分类,筛选(状态\/字数\/排序)在「登录」界面设置后保存。搜索走字节小说频道公开搜索接口。正文为站点字体加密,jsLib 内置两张映射表(正文字体 dc027189e0ba4cd、书库列表字体 e26e946d8b2ccb7,2026-10-24 由字体字形比对生成)。网页端第10章之后需登录番茄账号(登录界面「网页登录」)才返回全文,本源不处理付费内容。",
"bookSourceGroup": "番茄",
"bookSourceName": "番茄小说",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/fanqienovel.com",
"customOrder": -1,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"exploreUrl": "@js:\nvar C = {\"m\":[[\"西方奇幻\",1141],[\"东方仙侠\",1140],[\"科幻末世\",8],[\"男频衍生\",1016],[\"都市高武\",1014],[\"悬疑灵异\",751],[\"悬疑脑洞\",539],[\"抗战谍战\",504],[\"历史古代\",273],[\"历史脑洞\",272],[\"都市种田\",263],[\"都市脑洞\",262],[\"都市日常\",261],[\"玄幻脑洞\",257],[\"战神赘婿\",27],[\"动漫衍生\",718],[\"游戏体育\",746],[\"传统玄幻\",258],[\"都市修真\",124]],\"f\":[[\"女频悬疑\",747],[\"古风世情\",1139],[\"科幻末世\",8],[\"女频衍生\",1015],[\"民国言情\",1017],[\"悬疑脑洞\",539],[\"青春甜宠\",749],[\"双男主\",275],[\"古言脑洞\",253],[\"现言脑洞\",267],[\"玄幻言情\",248],[\"宫斗宅斗\",246],[\"豪门总裁\",748],[\"动漫衍生\",718],[\"星光璀璨\",745],[\"游戏体育\",746],[\"职场婚恋\",750],[\"双女主\",704],[\"年代\",79],[\"种田\",23],[\"快穿\",24]],\"a\":[[\"女频悬疑\",747],[\"西方奇幻\",1141],[\"东方仙侠\",1140],[\"古风世情\",1139],[\"科幻末世\",8],[\"男频衍生\",1016],[\"女频衍生\",1015],[\"民国言情\",1017],[\"都市高武\",1014],[\"悬疑灵异\",751],[\"悬疑脑洞\",539],[\"抗战谍战\",504],[\"青春甜宠\",749],[\"双男主\",275],[\"古言脑洞\",253],[\"历史古代\",273],[\"历史脑洞\",272],[\"现言脑洞\",267],[\"都市种田\",263],[\"都市脑洞\",262],[\"都市日常\",261],[\"玄幻脑洞\",257],[\"玄幻言情\",248],[\"宫斗宅斗\",246],[\"豪门总裁\",748],[\"战神赘婿\",27],[\"动漫衍生\",718],[\"星光璀璨\",745],[\"游戏体育\",746],[\"职场婚恋\",750],[\"双女主\",704],[\"传统玄幻\",258],[\"都市修真\",124],[\"年代\",79],[\"种田\",23],[\"快穿\",24]]};\nvar groups = [[\"男生\", 1, C.m], [\"女生\", 0, C.f], [\"全部\", -1, C.a]];\nvar api = \"https:\/\/fanqienovel.com\/api\/author\/library\/book_list\/v0\/?page_count=18&page_index={{page-1}}\";\nvar opt = JSON.stringify({bodyJs: \"fqDecL(result)\"});\nvar out = [];\nfor (var i = 0; i < groups.length; i++) {\n var g = groups[i];\n out.push({title: g[0], url: \"\", style: {layout_flexBasisPercent: 1, layout_flexGrow: 1}});\n var list = [[\"全部\", -1]].concat(g[2]);\n for (var j = 0; j < list.length; j++) {\n out.push({\n title: list[j][0],\n url: api + \"&gender=\" + g[1] + \"&category_id=\" + list[j][1] + \"&book_type=-1{{fqFilter(source.getLoginInfo())}},\" + opt,\n style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25}\n });\n }\n}\nJSON.stringify(out);",
"header": "{\"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0 Safari\/537.36\", \"Referer\": \"https:\/\/fanqienovel.com\/\"}",
"jsLib": "var FQ_BASE = 0xE3E8;\nvar FQ_TC = \"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 FQ_TL = \"体y十现快便话却月物水的放知爱万#表风理O老也p常克平几最主她s将法情o光a我呢J员太每望受教w利军已U人如变得要少斯门电m男没AK国时中走么何口小向问轻Td神下间车fG度D又大面远就写j给通起实E#它去S到道数吃们加P是无把事西多界#发新外活解孩只作前Y尔经#u心告父等Q民全这9果安#i母8r说任先和地C张战场g像cq你使#样总目x性处音头#应乐关能花l当名手4重字声力友然生代内里本回真入师象#0点R亲V种动英命ZhX做特边高有B为期自年马认出接至H正方感所明者棱F住学还分意更其n但比觉以由死家让失士L2I金叫身报听W再原山海白很见5直位第工个开岁好用都于可同3次四#日信与女笑满并部什不从或机此#了记三e些bN夫会才儿眼两美被一公来立z长对己看k许因相色后往打结格过世气7子条在书之定v拉成进带着东上想天他妈1文而路那别德6Mt行候难\";\nfunction fqDec(s, t) {\n if (s == null) return \"\";\n s = String(s);\n var out = [], i, c, ch;\n for (i = 0; i < s.length; i++) {\n c = s.charCodeAt(i);\n if (c >= FQ_BASE && c < FQ_BASE + t.length) {\n ch = t.charAt(c - FQ_BASE);\n out.push(ch == \"#\" ? s.charAt(i) : ch);\n } else out.push(s.charAt(i));\n }\n return out.join(\"\");\n}\nfunction fqDecC(s) { return fqDec(s, FQ_TC); }\nfunction fqDecL(s) { return fqDec(s, FQ_TL); }\nfunction fqHasPua(s) { return \/[\\uE000-\\uF8FF]\/.test(String(s)); }\nfunction fqFilter(info) {\n var m = {};\n try { if (info != null && String(info) != \"\") m = JSON.parse(String(info)) || {}; } catch (e) { m = {}; }\n var a = String(m[\"状态\"] || \"\"), b = String(m[\"字数\"] || \"\").replace(\/\\s\/g, \"\"), c = String(m[\"排序\"] || \"\");\n var st = \/完\/.test(a) ? 0 : (\/连\/.test(a) ? 1 : -1);\n var wc = -1;\n if (\/^30(万)?(字)?以下\/.test(b)) wc = 0;\n else if (\/^30[-~~至]50\/.test(b)) wc = 1;\n else if (\/^50[-~~至]100\/.test(b)) wc = 2;\n else if (\/^100[-~~至]200\/.test(b)) wc = 3;\n else if (\/^200(万)?(字)?以上\/.test(b)) wc = 4;\n var so = \/新\/.test(c) ? 1 : (\/字\/.test(c) ? 2 : 0);\n return \"&creation_status=\" + st + \"&word_count=\" + wc + \"&sort=\" + so;\n}\nfunction fqWan(n) { n = Number(n) || 0; return n >= 10000 ? (n \/ 10000).toFixed(1) + \"万字\" : n + \"字\"; }\nfunction fqContent(html) {\n html = String(html);\n var m = html.match(\/__INITIAL_STATE__\\s*=\\s*(\\{[\\s\\S]*?\\});\\s*\\}\\s*\\)\\s*\\(\\s*\\)\/);\n if (!m) return \"【番茄】未找到章节数据(页面结构可能已变化)\";\n var st = JSON.parse(m[1].replace(\/:\\s*undefined\/g, \":null\"));\n var cd = (st.reader && st.reader.chapterData) || {};\n var raw = String(cd.content || \"\");\n var paras = [];\n raw.replace(\/<p[^>]*>([\\s\\S]*?)<\\\/p>\/g, function (a, b) { paras.push(b); return a; });\n if (!paras.length) paras = raw.split(\/<br\\s*\\\/?>|\\n\/);\n var lines = [], i, t;\n for (i = 0; i < paras.length; i++) {\n t = fqDecC(paras[i]).replace(\/<[^>]+>\/g, \"\").replace(\/ \/g, \" \").replace(\/<\/g, \"<\").replace(\/>\/g, \">\").replace(\/"\/g, \"\\\"\").replace(\/'\/g, \"'\").replace(\/&\/g, \"&\").replace(\/^\\s+|\\s+$\/g, \"\");\n if (t) lines.push(t);\n }\n var text = lines.join(\"\\n\");\n var words = Number(cd.chapterWordNumber) || 0;\n if ((cd.isChapterLock === true || String(cd.isChapterLock) == \"true\") && words > 0 && text.length < words * 0.6) {\n text += \"\\n\\n【未登录:番茄网页端第10章以后只返回片段。请在书源「登录」界面点「网页登录」登录自己的番茄账号,然后刷新本章。】\";\n }\n if (fqHasPua(text)) text += \"\\n\\n【番茄字体映射可能已更新,部分文字无法解码,请反馈更新书源】\";\n return text;\n}",
"lastUpdateTime": "1792825494301",
"loginUi": "[{\"name\": \"状态\", \"type\": \"select\", \"chars\": [\"全部\", \"连载中\", \"已完结\"], \"default\": \"全部\"}, {\"name\": \"字数\", \"type\": \"select\", \"chars\": [\"全部\", \"30万以下\", \"30-50万\", \"50-100万\", \"100-200万\", \"200万以上\"], \"default\": \"全部\"}, {\"name\": \"排序\", \"type\": \"select\", \"chars\": [\"最热\", \"最新\", \"字数\"], \"default\": \"最热\"}, {\"name\": \"网页登录(第10章后全文需登录)\", \"type\": \"button\", \"action\": \"webLogin()\"}]",
"loginUrl": "function login() {\n java.toast(\"筛选已保存,回到发现页刷新分类即可生效\");\n}\nfunction webLogin() {\n java.startBrowserAwait(\"https:\/\/fanqienovel.com\/main\/writer\/login\", \"登录番茄账号(完成后点右上角完成\/返回)\");\n}",
"ruleBookInfo": {
"author": "$.data.author",
"coverUrl": "$.data.thumbUrl",
"intro": "$.data.abstract",
"kind": "@js:var d=JSON.parse(String(result)).data;var a=[];try{var c=JSON.parse(d.categoryV2||'[]');for(var i=0;i<c.length;i++)a.push(c[i].Name);}catch(e){}a.push(String(d.creationStatus)=='0'?'已完结':'连载中');a.join(',')",
"lastChapter": "$.data.lastChapterTitle",
"name": "$.data.bookName",
"tocUrl": "https:\/\/fanqienovel.com\/api\/reader\/directory\/detail?bookId={{$.data.bookId}}",
"wordCount": "@js:fqWan(JSON.parse(String(result)).data.wordNumber)"
},
"ruleContent": {
"content": "@js:fqContent(result)"
},
"ruleExplore": {
"author": "$.author",
"bookList": "$.data.book_list[*]",
"bookUrl": "https:\/\/fanqienovel.com\/api\/book\/info?bookId={{$.book_id}}",
"coverUrl": "$.thumb_url",
"intro": "$.abstract",
"kind": "$.creation_status@js:String(result)=='0'?'已完结':(String(result)=='1'?'连载中':'')",
"name": "$.book_name",
"wordCount": "$.word_count"
},
"ruleSearch": {
"author": "$.author",
"bookList": "$.data.ret_data[*]",
"bookUrl": "https:\/\/fanqienovel.com\/api\/book\/info?bookId={{$.book_id}}",
"checkKeyWord": "十日终焉",
"coverUrl": "$.thumb_url",
"intro": "$.abstract",
"kind": "$.category",
"name": "$.title##<\/?em>"
},
"ruleToc": {
"chapterList": "$.data.chapterListWithVolume[*][*]",
"chapterName": "$.title",
"chapterUrl": "https:\/\/fanqienovel.com\/reader\/{{$.itemId}}",
"isVip": "$.needPay",
"updateTime": "$.volume_name"
},
"searchUrl": "https:\/\/novel.snssdk.com\/api\/novel\/channel\/homepage\/search\/search\/v1\/?device_platform=android&parent_enterfrom=novel_channel_search.tab.&aid=13&offset={{(page-1)*10}}&q={{key}}",
"weight": 0
}