javascript逆向--PyExecJS模拟执行破解compress加密网站(11)
一.digikey网站分析
下面结合digikey网站的案例来分析:访问:https://www.digikey.cn/zh/products/filter/logic/buffers-drivers-receivers-transceivers/704 这个网站。通过浏览器开发工具知道,参数过滤是通过ajax的https://www.digikey.cn/products/api/v4/filters/704?s=N4IgjCBcpgbFoDGUBmBDANgZwKYBoQB7KAbRACYAWATgHZyAGEAXQIAcAXKEAZQ4CcAlgDsA5iAC+UoA get获取到的, 其中的参数s是通过加密的。
1.javascript逆向的调试分析
步骤1:添加XHR的断点,也就是ajax的地址,如下所示
步骤2:在浏览器中刷新上面的访问地址,此时会自动在下面的get下的匿名处点击,代码跳到了左边处,此时createSParam方法是关键入口。
步骤3:在createSParam处断点,按F9跳进去,代码如下所示:
createSParam(e) { const t = v.cleanDictionary(e); if (t) return (0, l.encodeUrlStateString)(t) },
步骤4:在encodeUrlStateString中,按f9跳进去,如下
t.encodeUrlStateString = e=>i.default.compressToEncodedURIComponent(JSON.stringify((e=>v(0, e))(e)));
其中 JSON.stringify((e=>v(0, e))(e))的字符串内容为:{"1":{"16":{"c":false,"o":["228986"],"pt":"String"}}} ,如下所示,o数组的值是点击规格的参数id值:
步骤5:经过分析compressToEncodedURIComponent 方法是LZString库提供的,github库地址如下: https://github.com/pieroxy/lz-string/
最终得出s的加密参数