Chrome 扩展 - 调试模式后清除信息栏标签

Chrome Extension - Clear infobar label after debug mode

在基于 Chrome 的浏览器的最新版本中,出于某种原因(可能不是错误,这是一项功能),在调试模式为 分离 后,Chrome 留下这个通知:

“程序开始调试这个浏览器”

Screenshot

基本上,我运行这段代码

let debugee = {tabId: sender.tab.id};
chrome.debugger.attach(debugee, '1.2', ()=>{});
chrome.debugger.detach(debugee);

见上图。 Chrome 在 detach 版本 80(左右)之前删除了此通知。

我找到了问题描述: https://chromium.googlesource.com/chromium/src/+/HEAD/chrome/app/generated_resources.grd

<!-- DevTools attached infobar -->
      <message name="IDS_DEV_TOOLS_INFOBAR_LABEL" desc="Label displayed in an infobar when external debugger is attached to the browser.  The label does not disappear until the user dismisses it, even if the debugger is detached, and so should not imply that the debugger must still be debugging the browser, only that it was, and could still be.">
        "<ph name="CLIENT_NAME"><ex>Extension Foo</ex></ph>" started debugging this browser
      </message>

我正在寻找有关如何从 chrome 扩展中自动清除或禁用此消息的建议。

TL;DR 没有这样的方法。

Chrome 中的新行为是对安全问题的笨拙修复的结果:恶意扩展可以通过 chrome.debugger API 迅速造成大量破坏,而且没有人如果工作在不到 100 毫秒的时间内完成,就会知道甚至发生了一些事情。

由于涉及安全问题,旧行为不会恢复,但他们同意 UI 至少应反映当前调试器状态,请参阅 https://crbug.com/1096262。他们目前的计划是 auto-close 如果扩展已分离并更新 buttons/strings 以与状态同步,信息栏在显示 >=5s 后显示。

解决方法是 运行 chrome 和 --silent-debugger-extension-api 命令行开关。这是一个危险的开关,但从某种意义上说,您必须小心,不要立即或在更新时安装使用 debugger 权限的恶意扩展程序。