-
Notifications
You must be signed in to change notification settings - Fork 74
规则实战其六:不可能的世界APP
不可能的世界官网宣称“中国最大的二次元小说平台”。
需要准备的东西:不可能的世界app、抓包工具(我用的安卓版httpcanary)、亦搜(我用的手机版)。
示例模板套用了已经写好的规则实战其一、其二的内容,示例规则大致类似。做源的过程得到了西红柿大佬和温佬大量的指正,发现规则地址里面的函数原型是西红柿大佬提供,搜索规则地址的模板是温佬提供的,我加以整合,有一些js代码或规则可能有更好的写法,有基础的可以自行优化,反正我做完了能用就满足。本示例没有附图,如果有看的,并且不附图实在看不懂的,我可以在关键的地方加上图片。
规则编辑界面有基本规则
、发现规则
、搜索规则
、章节规则
、正文规则
五块可以伸缩的面板,我们按顺序来填。
-
类型
选择文字
-
名称
填不可能的世界
,也可以随意填,方便自己查找即可。 -
域名
用http://inf.8kana.com
,地址是抓包的时候取的,后面会说。 -
作者
填什么随意,如果不介意可以填撒旦的微笑
,我也不介意。 -
登录地址
字面意思,我没做。
-
首先要打开
启用
,发现才会生效。同样,关闭后将隐藏该规则。 -
打开不可能的世界app,开启httpcanary抓包,app没有抓包检测,也没有加密。打开app后,进入'分类',大分类有'VIP'、'付费'、'免费'。选择'免费',下拉刷新。返回httpcanary看抓包数据,排查抓包所得地址,发现地址是
http://inf.8kana.com/book/channel
,为什么是这个地址,因为它的响应里包含了书籍列表,所以域名
就取http://inf.8kana.com
,我做的这个源域名用不到。进入抓包记录,查看请求信息,text里找到了请求内容Sex=1&Class0Id=0&VipType=0&SeriesStatus=0&SearchType=1&Page=1&system=android&model=V1813T&deviceNo=866444042975352&UUID=866444042975352&version=61&brand=vivo&resolution=1080*2154
,model=V1813T及以后的信息是我的手机信息,可以省略,简化后的请求内容可以是Sex=1&Class0Id=0&VipType=0&SeriesStatus=0&SearchType=1&Page=1&system=android
,可以不可以省略的,尝试几次就知道了。 -
发现地址
,通过多次抓包会发现,请求内容里的Class0Id=0
指的是免费下的全部
,Class0Id=1
指的是免费下的轻幻想
,Class0Id=2
指的是免费下的重幻想
,其他的一模一样,自己慢慢抓。规则用的是地址模板。
@js:
(() => {
function findfuc(pagg){
var url = "http://inf.8kana.com/book/channel";
var method = "post";
var body = "Sex=1&Class0Id="+pagg+"&VipType=0&SeriesStatus=0&SearchType=1&Page=$page&system=android";
var headers = {
"content-type":" application/x-www-form-urlencoded; charset=utf-8"
};
return JSON.stringify({url, method, body, headers})
}
var 发现=[];
var a=[['全部::','轻幻想::','重幻想::'],['0','1','2']];
for (var i in a[0]){
发现.push(a[0][i]+findfuc(a[1][i]));
}
return 发现.join("\n")
})();
现在ESO内置了很多get、post请求的模板,可以套用,我习惯用这个模板,至于为什么不在直接用地址而要用这种格式,你可以自己尝试一下直接用地址可以不可以。
-
列表
,查看抓包响应数据,列表规则应为$.data.books
-
完成列表规则后,可在
名称
写入$
,右上角测试规则,验证返回结果是否有问题。 -
名称
填入$.BookName
。 -
作者
填入$.AuthorName
。 -
标签
填入$.Class0Name&&$.ClassName
。 -
最新章节
没有可不填。 -
简介
填入$.Note
。 -
封面
填入$.BookCover
。 -
结果
填入$.BookId
。取得书籍id,是一个数字,需要处理成地址,可以在章节列表规则里处理。
以上,是发现规则,没有的可以不填。
以皇家密探为例,进入书籍的时候,选择开始阅读
,找到目录
,开启抓包后点击目录,会抓到目录地址http://inf.8kana.com/book/newcatalog
,简化后的请求内容BookId=13178&UpdateTime=0&ChapterNo=2413&UserId=&system=android
,写法同发现,毕竟都是json的,将其中的书籍BookId=13178
替换成BookId=$result
,从而拼接成目录地址,请求内容中有个需要注意的地方就是ChapterNo=2413
,里面的2413是皇家密探的总章节数,这个不是通用的,每本书的总章节数不同这个数字也会变,这里可以把数字改成0,最终章节规则地址为http://inf.8kana.com/book/newcatalog&BookId=$result&UpdateTime=0&ChapterNo=0&UserId=&system=android
-
章节列表
看抓包响应数据,填$.data.ChapterList
。 -
章节名称
填$.Title
。 -
结果
填入$.ChapterId
。 再次抓包找单章阅读地址,是http://inf.8kana.com/long/readbook
请求数据简化后是userId=&bookId=13178&chapterId=105436&lastModifyTim=0&system=android
,拼接成完整地址http://inf.8kana.com/long/readbook&userId=&bookId=13178&chapterId=105436&lastModifyTim=0&system=android
,用浏览器打开后发现没有数据,仍需要用地址模板处理,用哪个模板处理凭经验,没有经验就一个一个试吧。最终结果规则是:
$.ChapterId@js:
(() => {
var url='http://inf.8kana.com/long/readbook';
var method = "post"; // or "post"
var body ={"userId":"","bookId":lastResult,"chapterId":result,"lastModifyTime":"0","system":"android"};
var headers = {"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"};
// var encoding = "gbk";
return JSON.stringify({url, method, body, headers})
})();
lastResult表示取上一级也就是发现页取得的结果,书籍id也就是$.BookId
;result代表前边的刚刚取到的$.ChapterId
也就是章节id。
-地址规则
因为在上面章节规则的结果进行了处理,空着就可以。
-内容
通过抓包检查数据,填入$.data.chapters.sections
。
测试界面右上角是发现测试,点击按钮自动测试规。搜索和发现一样,用的地址模板,搜索地址是:
{
"url":"http://inf.8kana.com/book/search",
"method":"post",
"body":"UserId=&Keyword=$keyword&SearchType=3&Page=$page&system=android",
"headers": {"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}
}
最终结果如下
{"id":"463fd9fd-27b2-402d-9da1-76c1532a8b62","createTime":1595170235305286,"modifiedTime":1595476982224140,"author":"阅读","postScript":"","name":"不可能的世界","host":"","group":"我自己的","contentType":1,"sort":0,"useCryptoJS":false,"loadJs":"","userAgent":"","enableDiscover":true,"discoverUrl":"@js:\n(() => {\nfunction findfuc(pagg){\n var url = \"http://inf.8kana.com/book/channel\";\n var method = \"post\";\n var body = \"Sex=1&Class0Id=\"+pagg+\"&VipType=0&SeriesStatus=0&SearchType=1&Page=$page&system=android\";\n var headers = {\n \"content-type\":\" application/x-www-form-urlencoded; charset=utf-8\"\n };\n return JSON.stringify({url, method, body, headers})\n}\nvar 发现=[];\nvar a=[['全部::','轻幻想::','重幻想::'],['0','1','2']];\nfor (var i in a[0]){\n 发现.push(a[0][i]+findfuc(a[1][i]));\n}\nreturn 发现.join(\"\\n\")\n})();","discoverItems":"","discoverList":"$.data.books","discoverTags":"$.Class0Name&&$.ClassName","discoverName":"$.BookName","discoverCover":"$.BookCover","discoverAuthor":"$.AuthorName","discoverChapter":"","discoverDescription":"$.Note","discoverResult":"$.BookId","enableSearch":true,"searchUrl":"{\n \"url\":\"http://inf.8kana.com/book/search\",\n \"method\":\"post\",\n\"body\":\"UserId=&Keyword=$keyword&SearchType=3&Page=$page&system=android\",\n \"headers\": {\"Content-Type\":\"application/x-www-form-urlencoded;charset=UTF-8\"}\n}","searchItems":"","searchList":"$.data.Books","searchTags":"","searchName":"$.BookName","searchCover":"$.BookCover","searchAuthor":"$.AuthorName","searchChapter":"","searchDescription":"$.NoteForMobile","searchResult":"$.BookId","enableMultiRoads":false,"chapterRoads":"","chapterRoadName":"","chapterUrl":"http://inf.8kana.com/book/newcatalog&BookId=$result&UpdateTime=0&ChapterNo=0&UserId=&system=android","chapterItems":"","chapterList":"$.data.ChapterList","chapterName":"$.Title","chapterCover":"","chapterLock":"","chapterTime":"$.LastModifyTime","chapterResult":"$.ChapterId@js:\n(() => {\n var url='http://inf.8kana.com/long/readbook';\n var method = \"post\"; // or \"post\"\n var body ={\"userId\":\"\",\"bookId\":lastResult,\"chapterId\":result,\"lastModifyTime\":\"0\",\"system\":\"android\"};\n var headers = {\"Content-Type\": \"application/x-www-form-urlencoded;charset=UTF-8\"};\n // var encoding = \"gbk\";\n return JSON.stringify({url, method, body, headers})\n\n})();","contentUrl":"","contentItems":"$.data.chapters.sections","loginUrl":"","cookies":"","viewStyle":2}
三 规则实战 持续增加
-
规则实战其一:知乎日报 已完成
-
规则实战其二:17K小说网 已完成
-
规则实战其四:起点中文网 已完成
-
规则实战其六:不可能的世界APP 已完成