检查Firefox WebExtensions storage.local

时间:2018-04-10 12:14:28

标签: javascript bash local-storage firefox-webextensions

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

我想检查一下特定的WebExtension(我没有制作)在这个区域中存储的内容。

如何做到这一点?

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

2 个答案:

答案 0 :(得分:1)

在Firefox中

  • 在导航栏中输入about:debugging,然后按Enter
  • 点击该页面顶部的Enable add-on debugging
  • 下面您可以看到所有已安装扩展的列表。找到您要检查的那个,然后点击其debug链接。
  • 将显示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
});

目标扩展程序需要有"标签"允许打开标签或"下载"允许开始下载。 您还可以查找其他访问数据的方法。例如通过" browserAction" /" pageAction" -popup或通过向提交帖子正文中的数据的外部服务器发送ajax调用...

答案 1 :(得分:1)

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

storage.js文件是json文件。

我不会依赖于未来的工作。 Firefox可能会在某些时候切换到以加密格式存储数据。也不要依赖于最新的数据。 Firefox可能无法立即将存储与磁盘上的文件同步。