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

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

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

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

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

code: 200 data: { 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.0 time: 1607603273 param: {“bookid”:“书籍id”} guid: 1 signature: 486d5008c551072fd63e29832120c342 在贴上接口返回参数JSON

code:200 data:{ 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我尝试过,生成的效果不理想我最终还是没有用。

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

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

经验分享 程序员 微信小程序 职场和发展