什么是 browsermob-standalone?
browsermob-standalone 是一个使用 Node.js 编写的浏览器代理工具,它可以帮助前端工程师捕获网页的网络请求和页面性能数据。它的使用方法与 Selenium WebDriver 相似,可以通过 API 进行控制。browsermob-standalone 开源免费,并且提供了一个 npm 包,方便我们在项目中使用。
安装
首先我们需要安装 Node.js 环境,然后通过 npm 安装 browsermob-standalone:
npm install browsermob-standalone --save-dev
使用
启动代理服务器
在使用 browsermob-standalone 之前,我们需要先启动一个代理服务器:
-- -------------------- ---- ------- ----- ---------- - --------------------------------- ----- ------ - --------------------- ------------------ -------- ------ - ------------------ ------ ------- -- ------ ----------- --- -- ---------------- ----------------- -------- ------ - ------------------ ------ ------- ---- ------ ------ ------------------- ---
创建代理实例
创建代理实例时需要传入代理服务器的地址和端口号:
const bm = require('browsermob-standalone').create({ host: 'localhost', port: 8080, });
新建浏览器会话
通过代理实例新建浏览器会话时,可以设置一些代理相关的参数:
const sessionId = bm.newHar('example', true, true, true);
newHar 函数的参数依次是:
- 页面标题
- 是否捕获请求头
- 是否捕获请求体
- 是否捕获请求的响应体
发起请求
发起请求时可以设置一些代理相关的参数:
const response = await bm.proxy(url, 'GET', query, headers, postData);
proxy 函数的参数依次是:
- 请求地址
- 请求方法
- 查询参数
- 请求头
- 请求体
获取性能数据
页面性能数据可以通过代理实例的 getHAR 方法获取:
const har = await bm.getHAR(sessionId); console.log(JSON.stringify(har));
示例代码
最后为了更好的理解,这里提供一组完整的示例代码:
-- -------------------- ---- ------- ----- ---------- - --------------------------------- ----- -- - ----------------------------------------- ----- ------------ ----- ----- --- ----- -------- ------------- - ----- --------- - -------------------- ----- ----- ------ -------------------- ----- ----------- ----- -------- - ----- ------------- ------- ---------------------- --------------------- ----------------------- -------------------------------- ----- ---- ----- --- - ----- --------------------- ------------------- ------------------- ----- ---- - ----- ------ - --------------------- ------------------ -------- ------ - ------------------ ------ ------- -- ------ ----------- ----------------------------------- --- ----------------- -------- ------ - ------------------ ------ ------- ---- ------ ------ ------------------- ---
这段代码将启动一个代理服务器,在代理服务器启动之后自动加载百度首页,并将页面数据打印出来。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066c89ccdc64669dde5134