说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除
作者:zhu6201976
url:aHR0cHM6Ly9uZXdob3VzZS4wNTU3ZmRjLmNvbQ==
该站点项目url通过点击JS生成,project_id与生成后的结果完全不同,且通过生成后的结果进行访问。例如:project_id=3362,生成结果:0984-18052-9217-2406976066313。
那么,它是如何生成的呢?
a标签属性id即project_id,它通过绑定对应的点击事件函数reurl(this),点击后a标签作为参数进行传递,最后JS生成加密结果,再给a标签设置href属性实现url的动态生成。
a标签点击前:
a标签点击后:
如图所示:
依次访问上述JS外链,并在返回的JS中全局搜索点击事件绑定函数reurl,成功定位到文件lanrenzhijia.js。
项目详情url动态生成逻辑就在此处。
recode函数具体实现:
function recode(a) {
var n = nscaler(a);
var c = SetObjNum(a.length);
var d = SetObjNum(a.length);
n = parseInt(n) + parseInt(d);
var b = $("#iptstamp").val();
b = nscaler(b.toString());
return c + "-" + n + "-" + d + "-" + b
}
nscaler函数具体实现:
function nscaler(a) {
var b = "";
$.each(a, function(i, e) {
switch (e) {
case "0":
b += "0";
break;
case "1":
b += "2";
break;
case "2":
b += "5";
break;
case "3":
b += "8";
break;
case "4":
b += "6";
break;
case "5":
b += "1";
break;
case "6":
b += "3";
break;
case "7":
b += "4";
break;
case "8":
b += "9";
break;
case "9":
b += "7";
break
}
});
return b
}
setObjNum函数具体实现:
function SetObjNum(n) {
var a = "";
for (var i = 0; i < n; i++)
a += Math.floor(Math.random() * 10);
return a
}
当然,最后我们扣取整理的JS代码,不一定能够正常运行,需要根据代码逻辑,适当修改调整,以下是整理后的最终可执行JS代码:
function SetObjNum(n) {
var a = "";
for (var i = 0; i < n; i++)
a += Math.floor(Math.random() * 10);
return a
}
function nscaler(a) {
var b = "";
// $.each(a, function(i, e) {
for (let i = 0; i < a.length; i++) {
switch (a[i]) {
case "0":
b += "0";
break;
case "1":
b += "2";
break;
case "2":
b += "5";
break;
case "3":
b += "8";
break;
case "4":
b += "6";
break;
case "5":
b += "1";
break;
case "6":
b += "3";
break;
case "7":
b += "4";
break;
case "8":
b += "9";
break;
case "9":
b += "7";
break
}
}
return b
}
function recode(a, b) {
var n = nscaler(a);
var c = SetObjNum(a.length);
var d = SetObjNum(a.length);
n = parseInt(n) + parseInt(d);
// var b = $("#iptstamp").val();
b = nscaler(b.toString());
return c + "-" + n + "-" + d + "-" + b
}
function reurl(a, b) {
let a_href = "/item/" + recode(a.id, b);
return a_href;
}
var ret = reurl({"id": '3362'}, 1704894044656);
console.log(ret);
项目已开源,请访问github获取,期待你的一键三连、star、交流。
github项目地址:
项目运行完整截图: