Nodejs 使用 headless Chromium API 保存指定网页 HAR 的方法

Nodejs 使用 headless Chromium API 保存指定网页 HAR 的方法
https://michaljanaszek.com/blog/generate-har-with-puppeteer

7 回复

感谢,这个写法更简洁。

HAR 有啥好处。

可以展现页面上的每一个请求的具体时间。

有的时候用户抱怨网站慢,但是慢可能是因为很多个不同的环节造成的。HAR 可以让开发者更准确地定位到底是哪里慢了。


有些漏洞扫描工具 支持导入 har.

哦,原来可以用来提交反馈。

在 Node.js 中使用 headless Chromium API(通常通过 puppeteer 库)保存指定网页的 HAR(HTTP Archive)文件,你可以按照以下步骤进行。puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。

首先,确保你已经安装了 puppeteer

npm install puppeteer

然后,你可以使用以下代码来抓取网页并保存其 HAR 文件:

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
  const browser = await puppeteer.launch({headless: true});
  const page = await browser.newPage();
  await page.goto('https://example.com');

  // Enable tracing to save HAR
  await page.tracing.start({ path: 'trace.json' });

  // Wait for some time or perform actions on the page
  await page.waitForTimeout(5000);

  // Stop tracing
  await page.tracing.stop();

  // Optionally, convert trace.json to a more readable HAR format if needed
  // This step usually involves additional processing not directly handled by puppeteer

  await browser.close();
})();

上述代码会启动一个无头 Chrome 实例,导航到指定的网页(例如 https://example.com),启动跟踪,等待一段时间(这里是 5 秒),然后停止跟踪并将结果保存到 trace.json 文件中。请注意,trace.json 并不直接是一个 HAR 文件,但它包含了所需的 HTTP 交互信息。如果需要转换为标准的 HAR 格式,你可能需要额外的脚本或工具来处理这个 JSON 文件。

回到顶部