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加密混淆以及解密方面的文章,敬請期待...