今天看到这篇文章 Find out if Chrome console is open 。
@zswang 提供了检测 Chrome DevTools(控制台)是否打开的方法。这真是让我吃惊,然后我开始思考有没有办法绕过这种检测技术?
有两种方法可以检测 chrome DevTools 是否打开(详细信息在上面的帖子中)
- 使用
Object.defineProperty
我可以绕过这个,它可以分配给另一个函数。我试过 Object.defineProperty=null
,然后检测函数死了(我知道写一个模拟函数更好,这里只是一个例子)
- 使用
obj.__defineGetter__
(Object.prototype.__defineGetter__
)
Object.prototype.__defineGetter__= null
检测不破,怎么绕?
最后,我不得不说,我不喜欢被监视。希望有一个正确的走动方式。
原文由 Mithril 发布,翻译遵循 CC BY-SA 4.0 许可协议
有很多方法可以检测 DevTools 的使用,很难将它们全部阻止。随着 DevTools 获得新功能,有新的方法来检测它的使用。任何阻止检测的第三方工具都不能 100% 阻止检测技术。
此处向 Chromium 团队报告了一个关于将检测阻止直接集成到 Chrome 中的想法的错误。
禁用javascript
明确阻止对 DevTools 使用的任何检测的唯一方法是 禁用 javascript 。当页面的 javascript 被禁用时,您仍然可以在 DevTools 控制台中执行 javascript。我发现在打开 DevTools 后立即禁用 javascript 就足够了,如下所示:
Command+Option+J
(Mac) 或Control+Shift+J
(Windows, Linux)Cmd+Shift+P
(Mac) 或Ctrl+Shift+P
(Windows, Linux)dis
并点击return
选择 禁用 Javascript 选项。ena
并点击return
重新启用 javascript(选择 启用 Javascript 选项)当然,这种方法对于监控恶意代码是没有用的,因为禁用javascript时没有代码运行。但至少它可以让您有机会在重新启用 javascript 之前设置 断点。
Chrome DevTools 协议
可以使用 Chrome DevTools 协议 连接到一个单独的 Chrome 实例并检查网站,而无需在该实例中打开 DevTools: