js 防止打開審核元素、查看源碼、保存

為了安全,有時(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()。 需求不同清除的位置不同,本文我沒寫

方法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è)大佬文章完成,僅供參考! 完

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容