网页抓取解密(破解企业数据列表的加密数据_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获取

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线