今天又看到一前端禁止调试的手段,分享下 “检测到非法调试,请关闭后刷新重试!”
上篇回顾:简单两步 ~ 绕过 "Paused in debugger"
点评:这次屏蔽和上次不太一样,是通过正常函数来实现的
PS:这个网站的屏蔽方式在360浏览器下生效,谷歌浏览器并没有生效(me:版本 70.0.3538.110)
先演示下效果:
贴下提炼出来的demo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<script>
// 反调试函数,参数:开关,执行代码
function endebug(off, code) {
if (!off) {
!(function(e) {
function n(e) {
function n() {
return u;
}
function o() {
window.Firebug &&
window.Firebug.chrome &&
window.Firebug.chrome.isInitialized
? t("on")
: ((a = "off"), console.log(d), console.clear(), t(a));
}
function t(e) {
u !== e &&
((u = e), "function" == typeof c.onchange && c.onchange(e));
}
function r() {
l ||
((l = !0),
window.removeEventListener("resize", o),
clearInterval(f));
}
"function" == typeof e &&
(e = {
onchange: e
});
var i = (e = e || {}).delay || 500,
c = {};
c.onchange = e.onchange;
var a,
d = new Image();
d.__defineGetter__("id", function() {
a = "on";
});
var u = "unknown";
c.getStatus = n;
var f = setInterval(o, i);
window.addEventListener("resize", o);
var l;
return (c.free = r), c;
}
var o = o || {};
(o.create = n),
"function" == typeof define
? (define.amd || define.cmd) &&
define(function() {
return o;
})
: "undefined" != typeof module && module.exports
? (module.exports = o)
: (window.jdetects = o);
})(),
jdetects.create(function(e) {
var a = 0;
var n = setInterval(function() {
if ("on" == e) {
setTimeout(function() {
if (a == 0) {
a = 1;
setTimeout(code);
}
}, 200);
}
}, 100);
});
}
}
</script>
</head>
<body>
<h1>你可以看见吗?</h1>
<script type="text/javascript">
endebug(false, function() {
// 非法调试执行的代码(不要使用控制台输出的提醒)
document.write("检测到非法调试,请关闭后刷新重试!");
});
</script>
</body>
</html>
PS:快速定位可以使用监听功能:(解决:屏蔽JS)
via。https://www.cnblogs.com/dotnetcrazy/p/10290509.html