点点数据JS逆向:k值加密扣webpack代码和纯算实现
目录
- 🔍 接口分析、请求参数与加密k值的发现
- 🚀 异步堆栈与XHR断点调试
- 🎯 onRequest函数的条件断点分析
- 🧩 M方法的加密处理揭秘
- 🔍 Object(y.a)方法与k值生成过程
- 🕸️ 扣Webpack代码实现
- 🔍 纯算实现
- 🐍 Python调用
🔍 接口分析、请求参数与加密k值的发现
ASA关键词接口是DianDianData中一个核心的API,主要用于获取关键数据。通过数据包分析,可以捕获asm_words接口的响应数据,从中提取到目标信息。在对接口请求进行分析时,注意到一个关键的k值,这个值在传递过程中被加密处理。该参数在最终请求中扮演了重要角色,且直接影响响应结果的准确性。
🚀 异步堆栈与XHR断点调试
在调试过程中,通过设置XHR断点,捕捉到了请求的发送过程。
此时,浏览器执行了一系列异步堆栈操作,这是现代网页设计中的常见模式,帮助优化用户体验。
🎯 onRequest函数的条件断点分析
为了更精准地定位加密操作,通过追踪异步堆栈,锁定了onRequest函数。在请求发送之前,该函数会对参数进行处理,通过设置条件断点,可以在执行加密逻辑之前中断操作。
🧩 M方法的加密处理揭秘
在onRequest函数内部,找到一个关键的M方法。该方法对请求参数进行了加密处理。
🔍 Object(y.a)方法与k值生成过程
进一步深入分析,发现k值的生成与Object(y.a)方法密切相关。该方法接收了多个参数,其中包括请求参数r、请求路径path以及前面传递的n字典。需要跟踪这些参数的传递和处理,还原k值生成的完整过程。
🕸️ 扣Webpack代码实现
点点数据是webpack打包,虽然可以选择整体扣取代码并补充相应的环境来进行分析,但由于该案例中文件数量较多,且被拆分为几十个js文件,代码的处理工作量较大。因此,建议使用插件来辅助分析,以提高工作效率。
🔍 纯算实现
分析加密的具体流程,对于该接口,也可以自己使用JS还原加密过程,这个更加轻巧但是难度相对前一种会大一点,大概只有几十行代码。
🐍 Python调用
最后,将上述加密逻辑通过Python代码进行实现。
结果展示: