📣声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,相关网址和数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!若有侵权,请联系删除!
👇前言
🔥Ps:hello哇,也是好久没有更新了好吧,今天开始回归,铁铁们卷起来
- 网址:
94dc036054aac9a07609cb9be42166e6
- 加密接口:
d5f83ff16c3629eb8ad336fa4c34035a
🥇抓包分析
打开F12抓个包,进去fetch/xhr,很容易发现数据接口info
大致看一眼,发现载荷中有个sign
,测试之后也发现只有这个参数校验,也是非常清晰明了好吧,接下来开逆!!!
🥈逆向分析
直接进入启动器,打上断点发包
可以看到,此时的sign
是已经加密好了,我们往上跟栈,找到还没加密的地方
到了O
方法,可以清楚的看到sign
生成的地方,并且函数传的参是载荷中的明文数据,接下来思路就很清晰,只需要跟进c
函数把它扣下来还原下就行了
进入函数,可以看到有点webpack的味道,看看文件顶部,是没错了
仔细看看函数c
,发现要解决这个u
,并且它的生成涉及n、a、r
,我们也可以点进u
里面看看,发现它的文件名也是webpack并且是个自执行函数,那我们的猜想就没错了,接下来扣webpack解决u
就ok了
整理一下u
的生成:
n = r("o0o1")
, a = (r("cnSC"),
r("ODXe"),
r("aCH8"))
, u = r.n(a);
// 这里面的重点就是r,既然我们知道了这是个webpack,那么我们在n那边下个断点然后刷新页面找启动器
刷新页面,鼠标移到r
,进入函数可以看到它给我们跳到了a
,那启动器就是它了,我们把这个文件全部扣下来,然后用window.aaa
导出启动器即可
在启动器里打上打印语句,方便后续找缺少的模块
function a(r) {
if (n[r])
return n[r].exports;
var t = n[r] = {
i: r,
l: !1,
exports: {}
}
, o = !0;
try {
console.log('缺少',r)
e[r].call(t.exports, t, t.exports, a),
o = !1
} finally {
o && delete n[r]
}
return t.l = !0,
t.exports
}
剩下的大家应该能完成了,这里说一下怎么找模块,回到刷新页面后的控制台,打印r.m
就是所有的启动器,加上模块名称就是特定的,然后扣下来放到参数入口中即可,总共是10个模块,也不多,相信大家可以的
♨️Js部分实现
data = {
"pickRuleId": 644454,
"pageNum": 1,
"pageSize": 24,
"filterUnbid": true,
"showCspu": true
}
console.log(c(data))