避免检测“Chrome DevTools(console) 是否打开”

新手上路,请多包涵

今天看到这篇文章 Find out if Chrome console is open

@zswang 提供了检测 Chrome DevTools(控制台)是否打开的方法。这真是让我吃惊,然后我开始思考有没有办法绕过这种检测技术?

有两种方法可以检测 chrome DevTools 是否打开(详细信息在上面的帖子中)

  1. 使用 Object.defineProperty

我可以绕过这个,它可以分配给另一个函数。我试过 Object.defineProperty=null ,然后检测函数死了(我知道写一个模拟函数更好,这里只是一个例子)

  1. 使用 obj.__defineGetter__Object.prototype.__defineGetter__

Object.prototype.__defineGetter__= null 检测不破,怎么绕?

最后,我不得不说,我不喜欢被监视。希望有一个正确的走动方式。

原文由 Mithril 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
1 个回答

有很多方法可以检测 DevTools 的使用,很难将它们全部阻止。随着 DevTools 获得新功能,有新的方法来检测它的使用。任何阻止检测的第三方工具都不能 100% 阻止检测技术。

此处向 Chromium 团队报告了一个关于将检测阻止直接集成到 Chrome 中的想法的错误

禁用javascript

明确阻止对 DevTools 使用的任何检测的唯一方法是 禁用 javascript 。当页面的 javascript 被禁用时,您仍然可以在 DevTools 控制台中执行 javascript。我发现在打开 DevTools 后立即禁用 javascript 就足够了,如下所示:

  1. 打开 DevTools Command+Option+J (Mac) 或 Control+Shift+J (Windows, Linux)
  2. 键入热键打开 命令菜单Cmd+Shift+P (Mac) 或 Ctrl+Shift+P (Windows, Linux)
  3. 键入 dis 并点击 return 选择 禁用 Javascript 选项。
  4. ……检查网站……
  5. 通过调用命令菜单并键入 ena 并点击 return 重新启用 javascript(选择 启用 Javascript 选项)

当然,这种方法对于监控恶意代码是没有用的,因为禁用javascript时没有代码运行。但至少它可以让您有机会在重新启用 javascript 之前设置 断点

Chrome DevTools 协议

可以使用 Chrome DevTools 协议 连接到一个单独的 Chrome 实例并检查网站,而无需在该实例中打开 DevTools:

开发人员工具前端可以连接到远程运行的 Chrome 实例进行调试。要使此方案生效,您应该使用 remote-debugging-port 命令行开关启动主机 Chrome 实例:

 chrome.exe --remote-debugging-port=9222

然后你可以启动一个单独的客户端 Chrome 实例,使用不同的用户配置文件:

 chrome.exe --user-data-dir=<some directory>

现在您可以从客户端导航到给定端口并附加到任何已发现的选项卡以进行调试: http://localhost:9222

原文由 Quinn Comendant 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题