🍔环境准备
-
nodejs
-
python3.8
-
pycharm
🍕项目实施
首先抓包知乎搜索接口

经过调试只需要X-Zse-96,X-Zse93,X-Zst-81,而X-Zse93和X-Zst-81和为固定参数,

直接搜索参数可以看到第一个即是关键点

向上跟一栈可以看到参数构成位置

我们可以看到x-zse-96参数是由tk来的,而tk又是由tT.signature,tT构成由ed来的,我们跟进ed看看

进来可以看到是通过
;(0, tJ(ti).encrypt)(ty()(tp))得到的加密参数
tp由上面几个参数拼接而来
ta是固定的
tu是传参进来的,我们跟回去

可以看到由tO由er函数得来 我们跟进

一个正则用于匹配cookie中d_c0的值

提取代码成功打印出d_c0
之后咱们回到刚刚的加密出进入第一层加密


加密出来有点像md5,我们使用标准md5加密试试


可以看到确实是标准md5,这一层就过了

进入第二层可以看到exports,

最上方又有webpack,所以这是一个webpack打包的

该模块为1514,我们下断点尝试找到加载器

向上跟一栈我们可以找到加载器
我们将加载器和模块都复制下来

创建全局xx,用于导出p,并且打印调用了哪些模块方便排查

报错没有self,我们将self全部换成window去承接

顺手补一个window,可以看到没报错,尝试调用加密函数

别忘记D函数是导出给ZP了

成功调用 接下来我们只需要保留1514和74185模块就行了
运行结果发现和浏览器的值不一样,猜测有检测,我们挂上代理补环境

好多原型链检测,还有canvas

补完环境后固定一下随机数即可发现加密参数一致了
🍟项目总结
js逆向这东西还是要多扣,熟练webpack调用方式,多尝试挂代理,使用固定参数确认是否一致,不一致的时候推测是否进了蜜罐,多观察try。