【问题标题】:Inspect Firefox WebExtensions storage.local检查 Firefox WebExtensions storage.local
【发布时间】:2018-04-10 12:14:28
【问题描述】:

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

我想检查一个特定的 WebExtension(不是我制作的)在这个区域中存储了什么。

如何做到这一点?

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

【问题讨论】:

    标签: javascript bash local-storage firefox-addon-webextensions


    【解决方案1】:

    在火狐中

    • 在导航栏中输入about:debugging并回车
    • 在该页面的最顶部查看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 调用来提交帖子正文中的数据...

    【讨论】:

    • 非常酷!我能够看到对象的内容。了解扩展的数据结构是完美的。不幸的是,在控制台面板以及右侧的对象视图面板中,巨大的 JSON 字符串似乎被剪切成一千多个字符。您是否会碰巧知道如何将完整对象转储到文件中,最好是从操作系统命令行?非常感谢!
    • 您可以尝试从对象创建一个 blob 并从中创建一个数据 url。然后您可以通过调用chrome.tabs.create 来打开该网址。我将添加一个示例。
    • 关于 bash 自动化的评论,我认为这些天浏览器不再提供这样的接口。这是一个安全问题,人们过去曾滥用过此类接口,例如将烦人的工具栏安装到浏览器中。我认为所有现代浏览器都取消了执行此类操作的能力。您当然可以尝试直接从 RAM 中读取数据,但 bash 不是一个好的工具。
    • 我猜数据是由 Firefox 存储在磁盘的某个地方的,但是?我已经设法找到 Chrome 放置它的位置,现在正在尝试 Firefox。
    • 有趣。我不会依赖于未来的工作,但现在它可以完成这项工作。检查您的个人资料文件夹。 ~/.mozilla/firefox/xxxxxxxx/browser-extension-data/xxxxx/storage.js 另外,我不希望数据始终是最新的。 Firefox 可能只会每隔几秒或类似的时间将数据与文件同步一次。
    【解决方案2】:

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

    storage.js 文件是一个 json 文件。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多