网页抓取解密(破解企业数据列表的加密数据_data )
优采云 发布时间: 2021-12-06 00:16网页抓取解密(破解企业数据列表的加密数据_data
)
打开网站--企业名片
主要是破解企业数据列表的加密,红色圈出
链接:名片
直接请求网站,响应信息中没有想要的数据,应该是js动态加载的数据,所以点击XHR就可以看到
两次请求和响应的信息中都有一个超长的加密字符串,所以我们大胆的猜测一下,应该是我们需要的数据,其他点击什么都没有。
那么如何解析这个参数呢?
解析加密数据 encrypt_data
最简单最直接的方式就是直接在js中根据encrypt_data的key进行搜索,会在下图中找到。
下面是断点,刷新页面,一步一步的找出js里面是怎么解析的。这是最直接的方法。先说正常流程吧。因为它是一个 post 请求,所以你可以命中 XHR 断点。如何打破这个断点?
在源中选择XHR BreakPoint,点击它右上角的加号,在框中填写要中断的URL,或者只有关键词,我填写的productListVIP,然后刷新页面并逐步运行它。找到解密的位置,直接解压js执行js,不用管怎么解密,只需要结果即可。
中断点查找位置
断点时,最好在对象前打断点,否则可能不进入断点直接结束。
刷新,点击下一步
会找到这个方法。这几乎是一样的。可以看到方法中调用了一个s方法。s方法的6个参数中,有5个是固定的,这样就更简单了。只需要找到这个解码方法
找到了,直接传进去,这个t就是我们的加密字符串
回去找到s方法,直接把这些js解压出来,用python执行js库,执行js就OK了
o 方法返回一个对象对象,在 Python 中无法正确接受,因此将其转换为 base64 并返回它。
所以需要稍微改动一下
function my_o(t) {
return new Buffer(s("5e5062e82f15fe4ca9d24bc5", mydecode(t), 0, 0, "012345677890123", 1)).toString("base64")
}
改成这个,其他不变
function mydecode(t) {
var c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var f = /[\t\n\f\r ]/g;
var e = (t = String(t).replace(f, "")).length;
e % 4 == 0 && (e = (t = t.replace(/==?$/, "")).length),
(e % 4 == 1 || /[^+a-zA-Z0-9/]/.test(t)) && l("Invalid character: the string to be decoded is not correctly encoded.");
for (var n, r, i = 0, o = "", a = -1; ++a > (-2 * i & 6)));
return o
}
s方法就不贴了,太长了,用execjs执行js,完成
结束!
详细代码可添加微信公众号回复1获取