反馈问题:口袋阅读报错啦,请大佬修复一下
SJJ-dot opened this issue · comments
阅读版本
3.22
口袋阅读报错啦,请大佬修复一下
该书源不是我写的,是别人推荐给我的,是个 API 书源,且经过作者加密,我无法修复。
抽空我会研究下能不能解密并修复。
解密后排查了下,并不是书源的问题,而是该 API 接口变了(搜索页没变,详情页等页面访问会提示 Not Found),估计是用的人太多被 QQ 发现了。
我不清楚该书源是谁写的,也不知道抓取的具体是哪个网站/APP,所以我无法修复。
这是解密后的书源(不可用),你有能力的话可以研究下:
{
"bookSourceUrl": "https://kdread.cn",
"bookSourceType": "0",
"bookSourceName": "口袋阅读",
"bookSourceGroup": "API",
"bookSourceComment": "",
"loginUrl": "",
"loginUi": "",
"loginCheckJs": "",
"concurrentRate": "",
"header": "",
"bookUrlPattern": "",
"searchUrl": "@js:let _key=key.length > 4 ? key.trim().substring(0, key.length - 1) : key.trim();\"https://so.html5.qq.com/ajax/real/search_result?tabId=360&noTab=1&q=\"+_key",
"exploreUrl": "",
"enabled": true,
"enabledExplore": false,
"weight": 97,
"customOrder": 3,
"lastUpdateTime": 1663307128052,
"ruleSearch": {
"bookList": "$.data.state[?(@.dataName == 'novel_search_list')].items[*]",
"name": "$.title",
"author": "$.author",
"kind": "{{$.label_text}}\n{{$.tag_views}}\n{{java.getString(\"is_finished\") == 1 ? '已完结': '连载中'}}\n##\\s+##,",
"intro": "$.abstract",
"coverUrl": "$.cover_url",
"bookUrl": "<js>\nlet bid=java.put('bid',java.getString('docId').split('_')[1]);\nlet time=java.timeFormatUTC(new Date(),'yyyyMMddHHmmss',8);\nlet url='https://bookshelf.html5.qq.com/kdread/api/novel/adbooks/bookinfo?bookid='+bid+'&t='+time;\nlet referer='https://bookshelf.html5.qq.com/kdread/adread/catalog?resourceid='+bid+'&sort=desc&traceid=0024001';\nlet body=java.put('referer',JSON.stringify({\"headers\":{\"Referer\":referer}}))url+','+body;\n</js>"
},
"ruleExplore": {},
"ruleBookInfo": {
"init": "$.data",
"name": "$.resourceName",
"author": "$.author",
"kind": "$.tag##\\|##,",
"wordCount": "$.contentsize",
"lastChapter": "{{$.lastSerialname}} {{\" • \"+java.timeFormat(java.getString(\"lastSerialUpdateTime\")*1000)}}",
"intro": "$.summary",
"coverUrl": "$.picurl",
"tocUrl": "<js>\nlet bid=java.get('bid')let body=java.get('referer');\nlet serialnum=java.put('pages',java.getString('serialnum'));\nlet time=java.timeFormatUTC(new Date(),'yyyyMMddHHmmss',8);\nlet url='https://bookshelf.html5.qq.com/kdread/api/book/list-chapter?t='+time+'&resourceid='+bid+'&start=1&count=100&serialnum='+serialnum+'&sort=asc'url+','+body;\n</js>"
},
"ruleToc": {
"chapterList": "<js> \nlet pageCount =\njava.getString('page_count')\njava.put('count',pageCount)\nresult\n</js>\n$.rows[*]",
"chapterName": "$.serialname",
"chapterUrl": "<js>\nlet time=java.timeFormatUTC(new Date(),'yyyyMMddHHmmss',8);\nlet bid=java.get('bid')let pages=java.get(\"pages\");\nlet resId=java.getString(\"resourceid\");\nlet serialid=java.getString(\"serialid\");\nlet adsParam=encodeURIComponent({\"iChapterNum\":1,\"iCurChapter\":1,\"bPay\":false,\"iFirstCategory\":1,\"iSecondCategory\":14,\"pages\":pages,\"bChaseUpdate\":0});\nlet body=JSON.stringify({\"headers\":{\"Referer\":'https://bookshelf.html5.qq.com/kdread/adread/chapter?resourceid='+resId+'&serialid='+serialid+'&shelftype=&from=catalog&traceid=0024001'}});\nlet url='https://bookshelf.html5.qq.com/kdread/api/wenxue/buy/ad-chapter/v3?t='+time+'&resourceid='+resId+'&serialid='+serialid+'&apn=1&readnum=1&forceShowVideo=1&adsParam='+adsParam+'&version=202008101749&duration=2&qaid=&abtid=100000_100000_100000_102726_2409968_101751&adr=1&adb=1&taid=&oaid=&macAddress=&androidID=&srcCh='url+','+body;\n</js>",
"nextTocUrl": "<js>\nlet count = java.get('count')\nlet list = [];\nfor(let i = 2; i <= Number(count); i++) {\nlist.push(baseUrl.replace(/start=\\d+/, 'start=' + i));\n}\nlist;\n</js>"
},
"ruleContent": {
"content": "$.data.content[*]"
}
}
接口变了,估计是用的人太多被 QQ 发现了。
好吧