1. 程式人生 > 程式設計 >js遮蔽F12審查元素,禁止修改頁面程式碼等實現程式碼

js遮蔽F12審查元素,禁止修改頁面程式碼等實現程式碼

眾所周知,審查元素的情況下,大家都可以隨機更改一部分頁面的程式碼,注入惡意JS等等,這種情況避免也不難,雖然還能看到一部分H5原始碼,但是無法修改

一、遮蔽F12 審查元素

document.onkeydown = function(){
  if(window.event && window.event.keyCode == 123) {
    alert("F12被禁用");
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n請使用Del鍵進行字元的刪除操作!");
    window.event.returnValue=false;
  }
}

如果想要禁用右鍵 不提示可以使用下面的程式碼

document.onkeydown = function(){
  if(window.event && window.event.keyCode == 123) {    
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n請使用Del鍵進行字元的刪除操作!");
    window.event.returnValue=false;
  }
}

還有其他的玩法 也可以讓使用者按F12我們關閉網頁 或者跳轉其他頁面

<script type="text/javascript">
document.onkeydown = function(){
 
  if(window.event && window.event.keyCode == 123) {
    window.close(); //關閉當前視窗(防抽)
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n請使用Del鍵進行字元的刪除操作!");
    window.event.returnValue=false;
  }
 
}
</script>

按住F12空白頁面 或者跳轉其他頁面

<script type="text/javascript">
document.onkeydown = function(){
 
  if(window.event && window.event.keyCode == 123) {
    window.location="about:blank"; //將當前視窗跳轉置空白頁
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n請使用Del鍵進行字元的刪除操作!");
    window.event.returnValue=false;
  }
 
}
</script>

除了遮蔽這個,我們還有其他有趣的設定:

二、遮蔽右鍵選單

document.oncontextmenu = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

三、遮蔽貼上

document.onpaste = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

四、遮蔽複製

document.oncopy = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if(!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

五、遮蔽剪下

document.oncut = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if(!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

這種很適合小說網站,畢竟版權珍貴,被別人隨意copy走內容就不好了

六、遮蔽選中

document.onselectstart = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
} catch (e) {
return false;
}
}

當然js遮蔽chrome F12後頁面自動跳轉可以參考這篇文章

https://www.jb51.net/article/196910.htm

js檢測使用者是否開啟除錯工具(chrome)

(function(){ var re=/x/; var i=0; console.log(re); re.toString=function(){ window.close(); return '第'+(++i)+'次開啟控制檯'; } })();

JavaScript檢測是否開啟了控制檯(除錯工具)

測試後在chrome有效

不少人防止別人趴原始碼,一般採用檢測按鍵F12之類的,但是這些基本沒什麼用

現在介紹一個方法,非常管用,可以檢測到你是否開啟了控制檯程式,可以算是JavaScript的一些奇淫巧技

將這段程式碼加入你的網站即可,原理不明 = -

(function () {
var re = /x/;
var i = 0;
console.log(re);
 
re.toString = function () {
alert("請關閉控制檯");
return '第 ' + (++i) + ' 次開啟控制檯';
};
})();

然後你在開啟控制檯,即會彈出對話方塊

js檢測開發者工具Devtools是否開啟防除錯

之前寫過一篇文章《Javascript檢測開發者工具Devtools是否開啟》,主要是講如何通過js來檢測開發者工具是否開啟,防止別人惡意除錯我們的程式碼,那段程式碼也是查了蠻多資料整理出來的,當時可以相容chrome,firefox,ie,但是隨著瀏覽器版本的更新,已經基本上沒有作用了,最近我發現還是有蠻多人去瀏覽那篇文章,所以這裡再放出一段程式碼,算是個升級版吧,之前的版本里在firefox上還有有限制的,下面提供的這個版本我測試過通殺現在的chrome 69,firefox,IE,也不存在之前firefox上存在的問題了,下面直接貼出程式碼:

setInterval(function() {
  check()
},4000);
var check = function() {
  function doCheck(a) {
    if (("" + a/a)["length"] !== 1 || a % 20 === 0) {
      (function() {}
      ["constructor"]("debugger")())
    } else {
      (function() {}
      ["constructor"]("debugger")())
    }
    doCheck(++a)
  } 
  try {
    doCheck(0)
  } catch (err) {}
};
check();

這段程式碼是什麼原理,說實話我沒搞太懂,也去請教過一些大佬,都不能完全說出其中的原理,如果有懂的朋友請一定不吝賜教,雖然不知道原理,但是效果的確是槓槓的,這是本人從huichan網站上擷取的,這裡不得不佩服那些做huichan的,太強大。由於以前程式碼是加密的,對於其中一些方法的命名我解密時都是隨意取的,不喜勿噴。

當然這種伎倆對於熟悉除錯的開發者來說,完全沒有阻礙,但畢竟也能防範住一小批不懷好意的人,倖幸苦苦寫出來的程式碼被別人悄悄的就搬走了,確實挺惱人的,但僅僅靠這麼一個防除錯的程式碼是不夠的,我們還需要做的還有很多,比如一些基本的js的壓縮混淆加密等等,後期本人會整理一些js加密混淆以及解密方面的文章,敬請期待...