解密国内某技术网站千本电子书之密(二)

上回聊到咱拿到了某DN付费电子书的接口后还解了密。得知所有电子书目录。今天咱继续在聊是如何拿到书籍内容并且解密的。

 

 

        当我开始阅读某DN的电子书,发现这个页面居然F12按下去没有效果。看来是被禁了。嘻嘻不怕,这个只能防范不懂技术的人。Google浏览器的更多工具里面有个开发者工具选项。就是F12的调试模式。某DN限制了键唤起,阻止不了google的工具。

 

        很快就找到了文章内容的接口,我直接看接口的返回值。不过当然是加密的这是基本操作了。先说说接口的入参如下:

version: 1.0time: 1607587837param: {"bookid":"书籍id","showid":章节id}guid: 1signature: 签名

获取文章内容接口也是加密,加密方式和上一篇的书籍列表接口一样,这里就不再重述。聊聊这个文章内容怎么解密。

        先贴上文章接口返回的JSON对象。

code: 200data: {  content: "加密后的内容"  istrial: 0  secretkey: "秘钥"  title: "第1章 神经网络发展史"  }message: ""

从这个JSON对面可以看出有私钥。难道只要用这个私钥就能拿到解密后的文章内容?咱先找找JS文件看看这个加密的方式还是不是MD5。

        一番查找发现一家不是MD5加解密,是AES加解密。还发现这个解密没那么简单,这个私钥不能直接用。先说说我们作为某DN的用户,在某DN有一个唯一标识也是ID。我们分两步聊聊这个解密。

        第一步它是用这个ID进行MD5加密,加密后的值是32位。截取前16位作为AES 的key ,后面的16位作为iv 从接口返回的secretkey 作为解密体。这样得到一个新的私钥。

        第二步用这个新的32位私钥截取。前16位作为key,后16位做为iv 接口返回的content文章内容体就是这次的解密体。最终得出一个html页面。

        

        不过并不是一个接口返回整篇文章,是有章节段落的。得先调用章节接口拿到整本书所有的章节信息,最重要的是章节id。拿到章节id也就是showid,作为参数才能去调用文章信息接口。贴上接口入参

version: 1.0time: 1607603273param: {"bookid":"书籍id"}guid: 1signature: 486d5008c551072fd63e29832120c342

在贴上接口返回参数JSON

code:200data:{  chapterList:[    id: 1    islock: 0    pid: 1    rate: 47    secretkey: null    showid: 1    title: "第1章 神经网络发展史"    url: ""  ]  }message:""

 

        由此咱们可以得出整个逻辑,咱先建三张表 

book_all 存所有数据名称目录

book_chapter 章节信息表 关联book_all 的主键book_id

book_detail 书籍内容 show_id 关联book_chapter的 chapter_id, book_id 关联book_all 的book_id

 

一顿噼里啪啦 敲完代码

先把所有的数据捞回来存到数据库。这样随时用随时取。

1.通过accessAllBooks接口 拿到所有的书籍目录及id

2.通过chapter接口 拿到所有书籍的章节

3.通过show接口 拿到书籍的内容

再一顿噼里啪啦

取出所有的书籍内容解密生成HTML文件

至于PDF我尝试过,生成的效果不理想我最终还是没有用。

 

        这九百多本书籍我还在想用什么方式呈现给大家。

不过我有一个有趣的想法就是也搞一个网站免费提供搜索 阅读 下载。但是只能利用下班时间搞,要实现需要时日。

 

注:另有其他技术文摘和千本电子书资源免费拿【乐购鲸选】公众号

posted @ 2020-12-11 15:06  青叔  阅读(65)  评论(0)    收藏  举报