检查 Firefox WebExtensions storage.local

Inspect Firefox WebExtensions storage.local

WebExtensions 可以在本地存储数据 storage.local. Apparently 它是键值存储,值可以是基本类型(例如数字、布尔值和字符串)或数组类型。

我想检查此区域中存储的特定 WebExtension(不是我制作的)。

如何做到这一点?

奖励方法可以自动化,允许我从 bash 脚本中提取数据。但是 GUI 解决方案也很容易接受。

在 Firefox 中

  • 在导航栏中输入 about:debugging 并按回车键
  • 检查该页面顶部的 Enable add-on debugging
  • 在下方您可以看到所有已安装扩展的列表。找到您要检查的那个并单击其 debug link.
  • Incoming Connection 提示将显示。单击 OK 以允许它。
  • 在新的弹出窗口中切换到Console选项卡
  • 在这里你可以在扩展的上下文中执行代码
  • 粘贴以下代码以获取 storage.local 内容:

    chrome.storage.local.get(null, function(items) {
        console.log(items);
    });
    

编辑:

如果你想下载对象,你可以将它字符串化,从它创建一个 blob,然后从 blob 创建一个数据 URL 并在新选项卡中打开它或下载它。像这样:

chrome.storage.local.get(null, function(items) {
    var blob = new Blob([JSON.stringify(items, null,'  ')], {type: "text/plain"});
    var url = URL.createObjectURL(blob);
    chrome.tabs.create({ url: url }); // requires that the extension has the "tabs" permission
    //chrome.downloads.download({ url: url }); // requires that the extension has the "downloads" permission
});

目标扩展程序需要具有 "tabs" 权限才能打开选项卡或 "downloads" 权限才能开始下载。 您还可以寻找其他访问数据的方法。例如,通过 "browserAction"/"pageAction"-弹出窗口或向外部服务器发送 ajax 调用,在 post 正文中提交数据...

要从 Bash 访问数据,您可以尝试从扩展的 storage.js 文件中读取它。您应该可以在您的主目录 (Linux) 中找到它。对我来说是:~/.mozilla/firefox/{profile}/browser-extension-data/{extension}/storage.js。在 Windows 上,它将位于 appdata 中的某个位置。关于 OS X 我不知道。

storage.js 文件是 json 文件。

我以后不会依赖它工作了。 Firefox 可能会在某个时候切换为以加密格式存储数据。也不要依赖于最新的数据。 Firefox 可能不会立即将存储与磁盘上的文件同步。