怎么说呢,大佬不建议看,因为完全没基础,也是第一次无聊尝试,没有去了解过相关知识 链接
0X01 定位加密位置
先看正文链接
可以看到就一个sign,这里我直接搜sign定位了
搜到一堆,不管,直接打断点开干
然后刷新下网页
此时在断点处停下来了,看下参数,好 就是你了
1 | sign = sign: Object(s.h)(r) |
看着蛮简单样子,走你
0X02 sign加密分析
其中apiKey,srcPlatForm都是固定的
bookid,chapterid为书籍和章节id
sign加密方法为Object(s.h)(r),直接F9单步调试
ok,可以看到这个就是加密方法了
1
function m(t,e,n){return e?n?g(e,t):d(g(e,t)):n?y(t):d(y(t))}
我特么直接copy下来,可以看到还用到g y d等函数,直接把它附近的全扒下来
完事,测试下
测试半天没成功,才发现bookid和chapterid不是原始数据…先用处理过的数据测试下吧
可以看到一模一样
0x03 bookId和chapterId处理
接下来就是bookid和chapterid处理
如图,还是刚刚断点的地方
1
2var e = Object(B.a)(t.bookId)
n = Object(B.a)(t.chapterId)
鼠标放到B.a,点击跳转到B.a函数
好,看着好像可以直接用,cv大法启动
之后做了一点修改,函数名以及用不到的东西(哪里报错改哪里)
测试 ok 一模一样
完活
再请求链接获取正文看下
稍微封装了下
byebye,大功告成
0x04 题外话
其实真正过程可谓一波三折,起初不知道怎么调用,直接把整页js扒下来了,然后调用又一大堆问题,折腾好久
先看sign是因为没看到bookid那些还做过处理,差点gg