什么是 browsermob-proxy-client?
browsermob-proxy-client 是一个基于 Node.js 的 npm 包,它提供了一个与 BrowserMob Proxy 交互的客户端。BrowserMob Proxy 是一个能够截获和修改 HTTP 请求和响应的代理服务器,而 browsermob-proxy-client 则为我们提供了一个方便的方式来使用它。
安装
使用 npm 安装:
$ npm install browsermob-proxy-client --save
在使用之前,确保已经安装了 Java 运行环境,并将 browsermob-proxy 的 jar 包下载到了本地。可以通过以下链接下载 jar 包:
https://github.com/lightbody/browsermob-proxy/releases
使用
实例化
首先,我们需要先实例化一个代理服务器对象:
const BMPClient = require('browsermob-proxy-client'); const bmpClient = BMPClient.createClient({ proxyServer: 'http://localhost:8080', proxyPort: 8080, path: '/proxy' });
其中,proxyServer
是 BrowserMob Proxy 所在的服务器地址,proxyPort
是它所监听的端口号,path
则是将要访问的路径。
创建代理会话
创建一个代理会话,用于拦截后续的浏览器请求:
bmpClient.createHar(function(err, data) { // callback function });
其中,createHar
方法用于创建一个代理会话,并设置代理服务器截获请求的规则。
打开网页
通过 WebDriver 打开一个网页,并且将其地址带上代理 URL:
-- -------------------- ---- ------- ----- --------- - ------------------------------ ----- -- - ------------- ----- ------ - --- ------------------- --------------------- --------- ------------------------ - ------------------------- ---------------- - -- ------- ------ ----------- ---
在 URL 中,bmpClient.url
是 browsermob-proxy-client 创建的代理服务器地址,这样就可以通过代理服务器截获和修改 HTTP 请求和响应。
获取代理信息
获取代理服务器截获的 HTTP 请求和响应信息:
bmpClient.getHar(function(err, data) { if (err) { console.error("Error getting HAR file: " + err); } else { console.log("Got HAR file: "); console.dir(data, {depth: null}); } });
其中,getHar
方法用于获取代理服务器截获的 HTTP 请求和响应信息。
关闭代理
使用完后,关闭代理服务器:
bmpClient.close(function(err, data) { // callback function });
示例
下面是一个完整的示例代码:
-- -------------------- ---- ------- ----- --------- - ----------------------------------- ----- --------- - ------------------------------ ----- -- - ------------- ----- --------- - ------------------------ ------------ ------------------------ ---------- ----- ----- -------- --- --------------------------------- ----- - -- ----- - -------------------- -------- ---- - - ----- - ---- - ---------------- ------- ---- ------------------------- ----- ------ - --- ------------------- --------------------- --------- ------------------------ - ------------------------- ---------------- - ------ ------------------ -- --------------------- - ------------------ --- - - ------- -- ---------------- - ------ ------------------------------ ----- - -- ----- - -------------------- ------- --- ----- - - ----- - ---- - ---------------- --- ----- --- ----------------- ------- ------- - --- -- ---------------- - ------ ----------------------------- ----- - -- ----- - -------------------- ------- ------ - - ----- - ---- - ------------------ ---------- - --- -- ---------------- - ------ -------------- -- -------------------- - ----------------- ----- --------- - - ------------- --- - ---
总结
browsermob-proxy-client 是一个方便的 npm 包,能够让我们更加方便地使用 BrowserMob Proxy 代理服务器。在使用时,需要注意代理服务器地址、监听端口等参数的设置,以及通过 WebDriver 打开网页时需要将其地址带上代理 URL。通过 bmpClient 提供的方法,我们可以轻松地获取到代理服务器截获的 HTTP 请求和响应信息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005574081e8991b448d4369