我正在尝试解决 Brave 对扩展白/黑名单的限制。 我有两个相互冲突的扩展 - 一个我想在工作网站上运行,另一个在几乎所有其他网站上运行(我有 800 个网站的列表,我希望另一个在其上运行)。
为此,Brave 不允许您将特定扩展程序的站点列入黑名单 - 您可以在所有站点上运行、在任何站点上运行或在特定站点上运行。因此,我只剩下一种方法可以将 ~800 个站点添加到白名单中(或者如果我使用工作扩展来添加 ~200 个站点到白名单中)。
我已经查看了批量执行此操作的不同方法 - 设置用户界面不允许这样做,手动编辑安全首选项文件(我发现的唯一一个具有此特定设置的文件)只会导致将其自身从 Brave 中删除的扩展。
因此,我尝试使用 AppleScript 在页面上运行一些 Javascript,调用“添加页面”按钮,然后循环浏览添加它的网站。
我遇到的问题是我似乎无法通过shadow dom获取按钮/链接。
似乎能够访问该页面,但我不知道你需要在querySelector中选择不同的选项才能找到正确的路径。
tell application "Brave Browser"
if not (exists window 1) then reopen
activate
tell window 1 to tell active tab
execute javascript "document.querySelector('extensions-manager').shadowRoot.querySelector('cr-view-manager').shadowRoot.querySelector('extensions-item-list').shadowRoot.querySelector('extensions-detail-view').shadowRoot.querySelector('extensions-runtime-host-permissions').shadowRoot.querySelector('#add-host')"
end tell
end tell
这只会返回“缺失值”。
网址是brave://extensions/?id={extension id}。
有人知道我在这里做错了什么吗?
找到方法了。见下图:
tell application "Brave Browser"
tell window 1 to tell active tab
delay 0.5
execute javascript "document.querySelector('body > extensions-manager').shadowRoot.querySelector('#viewManager > extensions-detail-view').shadowRoot.querySelector('#container > div > div:nth-child(12) > div.section-content > extensions-runtime-host-permissions').shadowRoot.querySelector('#add-host').click()"
execute javascript "document.querySelector('body > extensions-manager').shadowRoot.querySelector('#viewManager > extensions-detail-view').shadowRoot.querySelector('#container > div > div:nth-child(12) > div.section-content > extensions-runtime-host-permissions').shadowRoot.querySelector('extensions-runtime-hosts-dialog').shadowRoot.querySelector('#input').focus()"
execute javascript "document.querySelector('body > extensions-manager').shadowRoot.querySelector('#viewManager > extensions-detail-view').shadowRoot.querySelector('#container > div > div:nth-child(12) > div.section-content > extensions-runtime-host-permissions').shadowRoot.querySelector('extensions-runtime-hosts-dialog').shadowRoot.querySelector('#input').shadowRoot.querySelector('#input').value = '" & urlValue & "'"
tell application "System Events" to key code 49
tell application "System Events" to key code 51
tell application "System Events" to key code 76
end tell
end tell
基本上我只是使用检查器来查找元素,将其复制到 JS(右键单击 HTML 中的元素,您将看到选项),然后在我的 Javascript 调用中使用它。
下面单击“添加 url”按钮,将焦点放在该字段上,添加一些文本(urlValue),然后发送关键代码以首先启用该按钮(空格和删除),然后输入以触发它(我无法调用由于某种原因按钮上的点击事件)。
希望这对某人有帮助。