使用chrome-har导出浏览器HAR数据

使用chrome-har导出浏览器HAR数据
这里使用nodejs下的chrome-har库来导出浏览器的har数据,经验证效果不错,比较靠谱。

const fs = require(‘fs‘);const { promisify } = require(‘util‘);const puppeteer = require(‘puppeteer‘);const { harFromMessages } = require(‘chrome-har‘);// 设置要监控的事件const observe = [  ‘Page.loadEventFired‘,  ‘Page.domContentEventFired‘,  ‘Page.frameStartedLoading‘,  ‘Page.frameAttached‘,  ‘Network.requestWillBeSent‘,  ‘Network.requestServedFromCache‘,  ‘Network.dataReceived‘,  ‘Network.responseReceived‘,  ‘Network.resourceChangedPriority‘,  ‘Network.loadingFinished‘,  ‘Network.loadingFailed‘,];/*    启动浏览器*/ async function launchBrowser(){    //启动浏览器实例 [puppeteer.createBrowserFetcher([options])]  let browser = await puppeteer.launch({    // 若是手动下载的chromium需要指定chromium地址, 默认引用地址为 /项目目录/node_modules/puppeteer/.local-chromium/    //executablePath: ‘/Users/huqiyang/Documents/project/z/chromium/Chromium.app/Contents/MacOS/Chromium‘,    //如果是访问https页面 此属性会忽略https错误    ignoreHTTPSErrors: true,    // 关闭headless模式, 不会打开浏览器    headless: false,    //浏览器启动参数 https://peter.sh/experiments/chromium-command-line-switches/   --timeout    args:["--disk-cache-size=0","--disable-cache",‘--disable-infobars‘,‘--window-size=800,600‘,‘--ignore-certificate-errors‘,‘--enable-feaures‘],    //是否为每个选项卡自动打开DevTools面板。 如果此选项为true,则headless选项将设置为false。    devtools: true,    //Defaults to 30000 (30 seconds). Pass 0 to disable timeout.    timeout: 0,    //放慢puppeteer执行的动作,方便调试    slowMo: 250  });  return browser ;}async function saveHarlog(url,filename){  //打开浏览器  let browser = await launchBrowser() ;  //创建一个新页面  //let page = await browser.newPage();  let page = (await browser.pages())[0];  // 注册事件监听器  const client = await page.target().createCDPSession();  await client.send(‘Page.enable‘);  await client.send(‘Network.enable‘);  //用于保存用于转为为HAR数据的事件    const events = [];  observe.forEach(method => {    client.on(method, params => {      events.push({ method, params });    });  });  try{    // 执行跳转,访问制定的资源    await page.goto(url,{            timeout:0    });  }catch(error){    console.log(‘resovle error :‘ + url + ";  error message:" + error) ;  }finally{    if(browser){        await browser.close();          }  }   const har = harFromMessages(events);  await promisify(fs.writeFile)(filename + ‘.har‘, JSON.stringify(har));}exports.launchBrowser = launchBrowser;exports.saveHarlog = saveHarlog;//测试try{    saveHarlog(‘http://www.baidu.com‘,‘www.baidu.com‘) ;    }catch(error){}

参考地址:https://michaljanaszek.com/blog/generate-har-with-puppeteer

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部