0

今天我看到这篇文章 Find out whether Chrome console is open避免检测“Chrome DevTools(控制台)是否打开”

@zswang给出了检测Chrome DevTools(控制台)是否打开的方法。这真让我感到惊讶,然后我开始想到有什么方法可以绕过这种检测技术?

有检测铬DevTools双向打开(在上面的帖子详细)

  1. 使用Object.defineProperty

    我可以解决此行走,可以分配给另一个function.I尝试Object.defineProperty=null,那么检测功能芯片(我知道写一个模拟的功能比较好,这里只是举个例子)

  2. 使用obj.__defineGetter__Object.prototype.__defineGetter__

    Object.prototype.__defineGetter__= null不会打破检测,如何走动?


最后,我不得不说,我不喜欢被monitored.Hope有走动之有道。

+0

你会如何在别人的网页上实现上述任何一项? –

+0

@JaromandaX,userscripts? – Kaiido

+0

@Jaromanda XI认为tempmonkey或者一些脚本管理器可以让我的代码在网站所有者的代码之前执行,我不知道细节。实际上,我也提出了这个问题,但我有一个人会说这应该是另一个问题。所以不包括在这里。 – Mithril

回答

0

你可以尝试这样的事:

var oldDefineProperty = Object.defineProperty; 
 

 
Object.defineProperty = function() { 
 
    var firstArg = arguments[0]; 
 
    arguments[0] = _.extend({ 
 
     get id() { 
 
      return firstArg.id; 
 
     } 
 
    }, arguments[0]); 
 

 
    return oldDefineProperty.apply(this, arguments); 
 
} 
 

 
var element = new Image(); 
 
element.id = "something"; 
 
Object.defineProperty(element, 'id', { 
 
    get: function() { 
 
     alert("detected"); 
 
    } 
 
}); 
 
console.log('%cHello', element);
<script src="http://underscorejs.org/underscore-min.js"></script>

这似乎防止警报从显示了我。我使用Underscore_extend功能。我不知道我是否错过任何东西,只是玩耍而已。

至于__defineGetter__,这已被弃用,所以你会期望这不被使用。

相关问题