天空书屋(m.tkshuw.com)
https://m.tkshuw.com
laizhiyu (6509)1天前
天空书屋 m.tkshuw.com(移动版)书源
【站点结构】
· 搜索:GET /search.html?nf=关键词(页面表单虽写 method=post name=s,但 POST 返回 404;必须 GET nf)
· 搜索无分页,单页最多 100 条;无结果输出「没有关于(xxx)的内容」
· 详情:/nf_{id}/ 与 /nf_{id}.html 均可,内容一致
· 目录:/nf_{id}/all.html 全量单页(实测 4058 章仍单页,无分页)
· 正文:/nf_{id}/{章节序号}.html,章内分页为 {序号}_2.html、{序号}_3.html…
· pb_next 在「章内最后一页」指向下一章、在「全书最后一章」指向详情页,
故 nextContentUrl 用 JS 只接受「数字_数字.html」形态,避免串章/把详情页当正文。
· 目录里存在「无效章节,已被删除」的空章节,正文页为「章节内容加载失败」,属站点自身数据问题。
【风控】
· Cloudflare 前置(DYNAMIC,无 JS 挑战);搜索为服务端检索,响应 1~3s。
· concurrentRate=1/1500:全站每 1.5 秒最多 1 次请求,既压低搜索频率也保护正文抓取。
想更快阅读可改 1/800;想更保守可改 1/3000。切勿用脚本高频试探搜索接口。
【登录】
· 移动站无登录/注册入口(login.html、user/ 均 404),搜索/详情/目录/正文全部免登录。
· 未写登录 UI,loginCheckJs 留空。
【UA】
· header 固定 Android Chrome 移动 UA + Referer;桌面 UA 也能取到同样结构,但本站为 m 站,移动 UA 更贴近真实访问。 {
"bookSourceComment": "天空书屋 m.tkshuw.com(移动版)书源\n\n【站点结构】\n· 搜索:GET \/search.html?nf=关键词(页面表单虽写 method=post name=s,但 POST 返回 404;必须 GET nf)\n· 搜索无分页,单页最多 100 条;无结果输出「没有关于(xxx)的内容」\n· 详情:\/nf_{id}\/ 与 \/nf_{id}.html 均可,内容一致\n· 目录:\/nf_{id}\/all.html 全量单页(实测 4058 章仍单页,无分页)\n· 正文:\/nf_{id}\/{章节序号}.html,章内分页为 {序号}_2.html、{序号}_3.html…\n· pb_next 在「章内最后一页」指向下一章、在「全书最后一章」指向详情页,\n 故 nextContentUrl 用 JS 只接受「数字_数字.html」形态,避免串章\/把详情页当正文。\n· 目录里存在「无效章节,已被删除」的空章节,正文页为「章节内容加载失败」,属站点自身数据问题。\n\n【风控】\n· Cloudflare 前置(DYNAMIC,无 JS 挑战);搜索为服务端检索,响应 1~3s。\n· concurrentRate=1\/1500:全站每 1.5 秒最多 1 次请求,既压低搜索频率也保护正文抓取。\n 想更快阅读可改 1\/800;想更保守可改 1\/3000。切勿用脚本高频试探搜索接口。\n\n【登录】\n· 移动站无登录\/注册入口(login.html、user\/ 均 404),搜索\/详情\/目录\/正文全部免登录。\n· 未写登录 UI,loginCheckJs 留空。\n\n【UA】\n· header 固定 Android Chrome 移动 UA + Referer;桌面 UA 也能取到同样结构,但本站为 m 站,移动 UA 更贴近真实访问。",
"bookSourceGroup": "AI",
"bookSourceName": "天空书屋(m.tkshuw.com)",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/m.tkshuw.com",
"bookUrlPattern": "https?:\/\/(?:m|www)\\.tkshuw\\.com\/nf_\\d+(?:\/|\\.html)?$",
"concurrentRate": "1\/1500",
"customButton": false,
"customOrder": 0,
"enabled": true,
"enabledCookieJar": true,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "[{\"title\":\"🔥最近更新\",\"url\":\"https:\/\/m.tkshuw.com\/hots.html\"},{\"title\":\"🏠首页推荐\",\"url\":\"https:\/\/m.tkshuw.com\/\"},{\"title\":\"仙侠\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/20_0_0_0\/?page={{page}}\"},{\"title\":\"都市\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/21_0_0_0\/?page={{page}}\"},{\"title\":\"历史\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/22_0_0_0\/?page={{page}}\"},{\"title\":\"言情\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/23_0_0_0\/?page={{page}}\"},{\"title\":\"网游\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/24_0_0_0\/?page={{page}}\"},{\"title\":\"科幻\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/25_0_0_0\/?page={{page}}\"},{\"title\":\"武侠\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/26_0_0_0\/?page={{page}}\"},{\"title\":\"侦探\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/62_0_0_0\/?page={{page}}\"},{\"title\":\"校园\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/64_0_0_0\/?page={{page}}\"},{\"title\":\"综合\",\"url\":\"https:\/\/m.tkshuw.com\/sort\/72_0_0_0\/?page={{page}}\"}]",
"header": "{\"User-Agent\":\"Mozilla\/5.0 (Linux; Android 13; SM-G991B) 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,image\/avif,image\/webp,*\/*;q=0.8\",\"Accept-Language\":\"zh-CN,zh;q=0.9\",\"Referer\":\"https:\/\/m.tkshuw.com\/\"}",
"lastUpdateTime": "1792638651891",
"respondTime": 180000,
"ruleBookInfo": {
"author": "meta[property=\"og:novel:author\"]@content||div.synopsisArea_detail p.0@text##^作者:",
"coverUrl": "meta[property=\"og:image\"]@content||div.synopsisArea_detail img@data-src",
"intro": "meta[name=\"description\"]@content||p.review@text##^《[^》]*》简介:?",
"kind": "meta[property=\"og:novel:category\"]@content||div.synopsisArea_detail p.1@text##^类别:",
"lastChapter": "meta[property=\"og:novel:latest_chapter_name\"]@content||p.lastchapters a@text",
"name": "meta[property=\"og:novel:book_name\"]@content||header h1.title@text",
"tocUrl": "p.btn a[href*=\"all.html\"]@href"
},
"ruleContent": {
"content": "#htmlContent@html",
"nextContentUrl": "@js:var h=String(result||\"\");var m=h.match(\/id=\"pb_next\"[^>]*href=\"([^\"]+)\"\/);var u=(m&&\/^\\d+_\\d+\\.html$\/.test(m[1]))?m[1]:\"\";u?u:null"
},
"ruleExplore": {
"author": "@js:var t=result.text();var i=t.lastIndexOf('\/');i<0?null:t.substring(i+1).trim()",
"bookList": "div.s_list",
"bookUrl": "a@href",
"coverUrl": "a@href##\/nf_(\\d+)\/.*##https:\/\/www.tkshuw.com\/image\/nf_$1.jpg",
"kind": "@js:var t=result.text();var m=t.match(\/^\\s*\\[([^\\]]*)\\]\/);m?m[1]:null",
"lastChapter": "a@title##^最新章节:",
"name": "a@text"
},
"ruleSearch": {
"author": "@js:var t=result.text();var i=t.lastIndexOf('\/');i<0?null:t.substring(i+1).trim()",
"bookList": "div.wrap-box div.s_list",
"bookUrl": "a@href",
"coverUrl": "a@href##\/nf_(\\d+)\/.*##https:\/\/www.tkshuw.com\/image\/nf_$1.jpg",
"kind": "@js:var t=result.text();var m=t.match(\/^\\s*\\[([^\\]]*)\\]\/);m?m[1]:null",
"lastChapter": "a@title##^最新章节:",
"name": "a@text"
},
"ruleToc": {
"chapterList": "div.directoryArea p",
"chapterName": "a@text",
"chapterUrl": "a@href"
},
"searchUrl": "https:\/\/m.tkshuw.com\/search.html?nf={{key}}",
"weight": 0
}