為了安全侨拦,有時(shí)候我們需要對(duì)我們的頁(yè)面做一些限制。防止別人直接拿到你的代碼辐宾。以下是我搜集多位大佬總結(jié)出來(lái)的狱从。 (警告一定要看)
方法1 (有用卻不完善)
// 復(fù)雜
window.onload = function() {
//屏蔽鍵盤事件
document.onkeydown = (e)=> {
console.log(e);
if (e.keyCode == 123) { // 屏蔽F12
return false;
} else if ((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 73)) { // 屏蔽Ctrl+Shift+I
return false;
} else if ((e.shiftKey) && (e.keyCode == 121)) { // 屏蔽Shift+F10
return false;
} else if ((e.ctrlKey) && (e.keyCode == 85)) { // 屏蔽Ctrl+U
return false;
} else if ((e.ctrlKey) && (e.keyCode == 83)) { // 屏蔽Ctrl+S
return false;
}
};
//屏蔽鼠標(biāo)右擊
document.oncontextmenu = ()=> {
return false;
}
}
// 簡(jiǎn)化
document.oncontextmenu = new Function("return false;");
document.onkeydown = document.onkeyup = document.onkeypress = function(event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && (e.keyCode == 123 || e.keyCode == 116)) {
e.returnValue = false;
return (false);
}
}
?? 這是兩個(gè)方法膨蛮;功能有差異但是都是為了防止審核元素。
?? 主要實(shí)現(xiàn):我們平時(shí)f12或右鍵鼠標(biāo)和快捷鍵的一些操作季研;有用卻不完善敞葛,原因我提前打開審核元素在輸入網(wǎng)址仍可以看到代碼
方法2 (有用,本人在用)
<script>
((function() {
var callbacks = [],
timeLimit = 50,
open = false;
setInterval(loop, 1);
return {
addListener: function(fn) {
callbacks.push(fn);
},
cancleListenr: function(fn) {
callbacks = callbacks.filter(function(v) {
return v !== fn;
});
}
}
function loop() {
var startTime = new Date();
debugger;
if (new Date() - startTime > timeLimit) {
if (!open) {
callbacks.forEach(function(fn) {
fn.call(null);
});
}
open = true;
window.stop();
// alert('??禁止');
document.body.innerHTML = "";
} else {
open = false;
}
}
})()).addListener(function() {
window.location.reload();
});
</script>
<script>
(function (a) {
return (function (a) {
return (Function('Function(arguments[0]+"' + a + '")()'))
})(a)
})('bugger')('de', 0, 0, (0, 0));
</script>
?? 主要實(shí)現(xiàn):當(dāng)你打開f12(也叫審核元素与涡、檢查)時(shí)惹谐;自動(dòng)觸動(dòng)debugger;并且body中的內(nèi)容為空递沪。
?????? 代碼涉及到setInterval 記得最后清除 window.clearInterval()豺鼻。 需求不同清除的位置不同,本文我沒(méi)寫
方法3 (有用但不完善)
function inlobase_noF12() {
while (1) {}
}
function inlojv_console() {
if ((window.console && (console.firebug || console.table && /firebug/i.test(console.table()))) || (typeof opera == "object" && typeof opera.postError == "function" && console.profile.length > 0)) {
inlobase_noF12()
}
if (typeof console.profiles == "object" && console.profiles.length > 0) {
inlobase_noF12()
}
}
inlojv_console();
window.onresize = function() {
if ((window.outerHeight - window.innerHeight) > 200) {
inlobase_noF12()
}
};
?? 主要實(shí)現(xiàn):打開f12頁(yè)面直接卡死款慨;有用卻不完善,原因我提前打開審核元素在輸入網(wǎng)址仍可以看到代碼 (同方法1類似)
補(bǔ)充4(斷點(diǎn)谬莹,瀏覽器開啟f12就會(huì)停止運(yùn)行)
<script type="text/javascript">
function customDebug() {
for(var i = 0; i < 10; i++) {
console.log(i);
if(i % 1 == 0) {
debugger;
}
}
}
customDebug();
</script>
補(bǔ)充5(攻擊瀏覽器檩奠,用戶開啟f12后,cpu就會(huì)爆)
var total="";
for (var i=0;i<1000000;i++)
{
total= total+i.toString();
history.pushState(0,0,total);
}
?? 補(bǔ)充4和補(bǔ)充5這兩種只能防止 瀏覽器抓包
總結(jié)
本文集多個(gè)大佬文章完成附帽,僅供參考埠戳! 完