檢測用戶是否打開瀏覽器控制台的方式


昨天家人讓我下載一個MV,是騰訊視頻上的。

我尋思這直接找到音頻文件地址下載不就OK了么  發現我打開控制台之后,播放着的視頻立刻變成靜態圖片,關閉控制台就恢復正常。

這是如何實現的呢  根據前人的經驗整理了一下。

方法一:

var x = document.createElement('div');
var isOpening = false;
Object.defineProperty(x, 'id', {
  get:function(){
      // 在這里放入你的代碼
     document.write('Console is opened');
  }
});
console.info(x);

 

方法二:

(function () {var re = /x/;
  var i = 0;
  console.log(re);

  re.toString = function () {
    return '第 ' + (++i) + ' 次打開控制台';
  };
})()

 

這兩種方案都是利用了console打印日志的異步策略。

當使用console打印對象的時候(RegExp/Date/Array/Dom),輸出的是引用,也就是說,顯示到控制台上的是最新的值,而不是執行輸出那一刻的值。如下圖:

即,每次顯示的時候,都會重新獲取信息。

 

好了,現在寫一個完整的模擬Demo

<html>
<script>
var ConsoleManager={
    onOpen(){
        alert("Console is opened")
    },
    onClose(){
        alert("Console is closed")
    },
    init(){
        var self = this;
        var x = document.createElement('div');
        var isOpening = false,isOpened=false;
        Object.defineProperty(x, 'id', {
            get(){
                if(!isOpening){
                    self.onOpen();
                    isOpening=true;
                }
                isOpened=true;
            }
        });
        setInterval(function(){
            isOpened=false;
            console.info(x);
            console.clear();
            if(!isOpened && isOpening){
                self.onClose();
                isOpening=false;
            }
        },200)
    }
}

ConsoleManager.onOpen = function(){
    alert("Console is opened!!!!!")
}
ConsoleManager.onClose = function(){
    alert("Console is closed!!!!!")
}
ConsoleManager.init();

</script>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM