打开拉钩在招聘页面翻两页会发现一个接口positionAjax,打开看看
发现payload加密了,返回的数据也加密了,js调试一下找出加密方法
(o = e.body) && (b =
(0,A.q6)(JSON.stringify((0,D.$Z)("?".concat(o)))),
e.body = "data=".concat(encodeURIComponent(decodeURIComponent(b))));
e.body是待加密的参数
A.q6是加密函数,追进去看一下这个函数
Dt = ""
Ot = Et.enc.Utf8.parse("c558Gq0YQK2QUlMc")
Rt = function(t) {
Dt = Et.enc.Utf8.parse(zt("aesKey")),
t = Et.enc.Utf8.parse(t);
t = Et.AES.encrypt(t, Dt, {
iv: Ot,
mode: Et.mode.CBC,
padding: Et.pad.Pkcs7
});
return t.toString()
};
t = e.body
Ot是固定的不用管
zt("aesKey")这个函数需要进去看一下
发现这个函数是获取了sessionStorage里面的aesKey的值
获取这个值的方法有两种
1.webdriver能get到值
2.js里面能找到
webdriver效率过低,选js,在aes加密方法的上面发现了设置aeskey值的函数:Ft函数
At = function() {
var t = function(t) {
for (var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", r = "", n = 0; n < t; n++) {
var i = Math.floor(Math.random() * e.length);
r += e.substring(i, i + 1)
}
return r
}(32);
zt("aesKey") || Ft("aesKey", t);
Ft = function(t, e) {
sessionStorage.setItem(t, e)
}
这样所有的参数就都拿到了,execjs库调用拿到的js就可以得到data加密后的参数,请求到加密数据