知乎 x-zse-96 参数逆向

Sherry 发布于 2025-06-19 163 次阅读 文章 最后更新于 2025-06-19 555 字


🍔环境准备

  • nodejs

  • python3.8

  • pycharm

🍕项目实施

首先抓包知乎搜索接口

经过调试只需要X-Zse-96X-Zse93X-Zst-81,而X-Zse93X-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。