如何将 chrome.devtools.network.getHAR returns 的对象下载为 .har?

How do I download the object that chrome.devtools.network.getHAR returns as a .har?

我正在使用 chrome.devtools.network.getHAR 从站点获取 har 日志。但是,我不知道如何将其转换为正确的 .har 文件并下载。我可以使用 JSON.stringify(harLog),转换为 BLOB,下载文件,并将其查看为 JSON,但我希望能够下载文件并能够打开带有 .har 文件的 .har 文件。下载文件夹中的 har 查看器(如 chrome 网络选项卡)。

这是我到目前为止的代码:

chrome.devtools.network.getHAR(
        function (harLog) {

            let harBLOB = new Blob([harLog]);

            let url = URL.createObjectURL(harBLOB);

            chrome.downloads.download({
                url: url,
                filename: "test.har"
            });
        });

使用该代码,它会下载一个包含以下内容的文本文件;

[object Object]

解决方案

查看从 chrome 开发工具生成的 .har 文件后,我注意到它遵循以下格式

{
  "log": {
    "version": "1.2",
    "creator": {
      ...
    },
  ...
}

而 JSON.stringify(harLog) 会给我

{
  "version": "1.2",
    "creator": {
      ...
    },
  ...
}

在我将 harLog 对象分配给对象的键:log 并将其字符串化后,我能够下载导入文件到 chrome 开发工具网络选项卡

工作代码

chrome.devtools.network.getHAR(
        function (harLog) {
            let updatedHarLog = {};
            updatedHarLog.log = harLog;

            let harBLOB = new Blob([JSON.stringify(updatedHarLog)]);

            let url = URL.createObjectURL(harBLOB);

            chrome.downloads.download({
                url: url,
                filename: "test"
            });
        }
    );

首先感谢wOxxOmJSON.stringify()

指引我正确的方向

解决方案

查看从 chrome 开发工具生成的 .har 文件后,我注意到它遵循以下格式

{
  "log": {
    "version": "1.2",
    "creator": {
      ...
    },
  ...
}

而 JSON.stringify(harLog) 会给我

{
  "version": "1.2",
    "creator": {
      ...
    },
  ...
}

在我将 harLog 对象分配给对象的键:log 并将其字符串化后,我能够下载导入文件到 chrome 开发工具网络选项卡

工作代码

chrome.devtools.network.getHAR(
        function (harLog) {
            let updatedHarLog = {};
            updatedHarLog.log = harLog;

            let harBLOB = new Blob([JSON.stringify(updatedHarLog)]);

            let url = URL.createObjectURL(harBLOB);

            chrome.downloads.download({
                url: url,
                filename: "test"
            });
        }
    );