仅用作学习研究
网址:
aHR0cHM6Ly93d3cuY2xzLmNuL3RlbGVncmFwaA==
关键字搜索sign: 定位加密位置d

核心加密位置:
javascript
sign: p(a({}, r))
在控制台输出一下r 和**a({}, r)**发现一样,
核心就是p函数,即p(r)
p函数如下:
javascript
e.exports = function(e) {
var t = e && s(u(e).map((function(t) {
return c(t, e[t])
}
)));
return t = r.sync(t),
t = o(t)
}
核心加密关键函数在于这里
javascript
return t = r.sync(t),
t = o(t)
这里的t就是没有sign的荷载然后序列化
javascript
{
"rn": 20,
"lastTime": 1764062635,
"subscribedColumnIds": "",
"hasFirstVipArticle": "1",
"os": "web",
"sv": "8.4.6",
"app": "CailianpressWeb"
}
javascript
app=CailianpressWeb&hasFirstVipArticle=1&lastTime=1764062635&os=web&rn=20&subscribedColumnIds=&sv=8.4.6
关键加密函数
r往上找就能找到
javascript
var r = n("KjvB")
, o = n("aCH8")
很明显这种形式就是webpack
自执行需要刷新整个网页才能断点;

方法太多,在控制台中输入n;点击函数跳转
跳转后的js代码;可以看到很明显的webpack格式
javascript
数组参数
function(形参){加载器}([模块1,模块2,...])
键值对(字典)参数
function(形参){加载器}({"k1":"模块1","k2":"模块2"})

把它折叠复制到本地js


很明显它调用的是object格式
所以把[]改为{};把关键加密位置代码(r,o)也拿下来

因为不能在函数外部调用内部的函数n(加载器)
我们把它设置为全局,找到加载器位置,函数名为a;
用任意一个方法把它传递出来
javascript
window.gu=a;
然后下面调用改为
javascript
var r =window.gu("KjvB");
o = window.gu("aCH8");

然后把模块补齐;
找到加载器核心调用位置;一般是:
javascript
e[r].call(t.exports, t, t.exports, a)
在前面打印一下索引r;看一下它都调用了哪些模块,然后进行补全。
一个一个输出,进行补全;如下:

加上核心加密位置代码;构建加密完成
构建一个generate_sign函数,用python代码调用
