全国计算机技术与软件专业技术(水平)考试成绩查询
对于2010年上半年之后的仅能查询自己的证书,想着通过开发者调试工具,是否可以查询验证其它人证书的有效性。提示:禁止非法调试!请关闭开发者工具!
禁止调试的实现原理主要是通过在代码中使用"debugger"关键字来阻止调试操作。当代码运行到该关键字处时,程序会暂停执行,从而阻止进一步的调试操作。要实现这一机制,关键在于开发者工具的检测。"debugger"关键字不仅仅用于阻止调试,同时也可用于判断开发者工具是否已打开。查看源代码如下(1、200ms定时探测;2、当开发者工具被打开时,"debugger"关键字将导致程序停止执行,从而产生一个时间间隔。):
layui.use(['jquery'], function () {
var $ = layui.jquery;
var div = document.createElement('div');
var loop = setInterval(function () {
console.log(div);
console.clear();
}, 200);
Object.defineProperty(div, "id", {
get: function () {
clearInterval(loop);
alert("禁止非法调试!请关闭开发者工具!")
setInterval(breakDebugger, 100);//防止其他外部调试
}
});
function checkDebugger() {
var d = new Date();
debugger;
var dur = Date.now() - d;
if (dur < 5) {
return false;
} else {
alert("禁止非法调试!请关闭开发者工具!")
return true;
}
}
function breakDebugger() { if (checkDebugger()) { breakDebugger(); } }
//其他扩展:
//禁止右键
$(document).bind("contextmenu", function () { return false; });
var preventCtrl = function (e) {
if (e.keyCode === 123) { //屏蔽F12
e.preventDefault();
return false;
} else if (e.keyCode === 17) { //ctrl
console.log("prevent keycode s");
document.onkeydown = preventS;
return false;
}
return true;
}
var preventS = function (e) {
if (e.keyCode === 123 || e.keyCode === 83) { //屏蔽F12 ctrl
e.preventDefault();
return false;
}
return true;
}
var nopreventS = function (e) {
if (e.keyCode === 17) {
console.log("no prevent keycode s");
document.onkeydown = preventCtrl;
}
}
//屏蔽f12, ctrl
document.onkeydown = preventCtrl;
document.onkeyup = nopreventS;
})
建议大家在重要的交易也增加这样的设置,增强破解的难度。