JS逆向破解详情信息加密
发布时间丨2021-10-29 14:44:01作者丨zhaomeng浏览丨123
爬虫JS逆向分析,之前有文章分析了js逆向网站的加密是参数,本次破解的是常见的一种对返回结果进行加密的JS逆向分析,本次破解的网站的初衷是在于我经常看到有说这家网站的,在爬虫界流传很久的,作为一名爬虫专业户来说,自然不会放过它,因此自己就写下本篇博文记录一下破解的过程。本文内容为原创,在此之前没有看到过有如此图文并茂的分析破解JS的文章。
目标链接:www.qimingpian.cn/finosda/project/pinvestment
第一步:找到需要采集的网站的详情链接,并分析详情信息的内容,经过分析发现当前的请求详情链接及详情信息如下图:
需要获取的详情内容如下:
Ajax请求如下图:
请求方式为POST表单参数如下:
详情加密信息如下图:
第二步:按照一贯的爬虫思路,判断此处存在结果加密的处理,使用encrypt_data去资源里面搜索,一般可以搜到结果,也有搜不到的,但是本次网站的加密参数是可以在网站资源中搜索到的,只需要在资源中找到具体的JS源码就可以断点调试。具体如下图所示:
1、查找js加密源码
2、js源码断点调试如下图
3、断点调试发现每个参数的意思encrypy_data是被加密参数、object(u.a)鼠标放上去是一个o函数,可以直接点进去就进入该函数,也可以给他下断点进入,这里通过断点的方式进入如下图:
参数e如下图红框内容所示就是接口返回的数据:
在上图中看到return返回的不仅仅是只有e参数,还有一个Object(u.a)(e.encrypy_data)对象函数后面的是它的参数,我们可以接着对该函数下断点,并跳转到该具体函数,如下图:
4、到这里我们发现他返回的是一个参数o,接着下一步,直到出现o函数下图:
5、对下面的return 我们一共下了三个断点,分别是下图三个蓝色标识,如下图:
到这里我发现o函数接收一个参数,正是刚才的encrypt_data被加密的值,该函数返回json,里面有两个函数s(),和decode(t),到这里接着对他们下断点进行调试。返回的结果j,需要将unicode转成中文,就是我们需要的数据了。如下图:
6、对s()函数下断点如下图:
返回值下断点:
7、下了断点之后继续执行调试,点击继续执行脚本,看到最后的返回结果j参数如下图红色字体所示:
8、到这里需要拿到返回的参数进行unicode编码转换成中文,浏览器访问转码网址将上面的数据进行unicode转中文,结果如下图所示:
解码结果如下:
这就是我们需要的详情信息的内容!未完待续!
第三步:下面我将对他的源码进行处理,使用js代码还原出来我想要的详情信息。
1、首先拿到主要的代码o(t)这个函数,它主要是获取js解密之后的数据的。(代码已经被我做了处理)
function o(t) {
return JSON.parse(s("5e5062e82f15fe4ca9d24bc5", decode(t), 0, 0, "012345677890123", 1))
}
2.拿到s()函数,用来解密的代码比较多就截图展示如下图所示:
完全的代码截至到函数o()之前的,如下图:
3.在调试拿到decode()函数的代码如下图:
以上函数需要的参数如下图所示:
将上面代码改为function decode(t){}就可以直接在安装有nodejs的环境电脑上直接输出:console.log(o(t))参数t为被加密的encrypt_data参数。
最终代码输出结果如下图:
网站内容为原创,未经允许请勿转载!需要js源码可以联系博主!