亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

puppeteer 導航指標:每個請求/響應的開始和結束時間

puppeteer 導航指標:每個請求/響應的開始和結束時間

慕村9548890 2022-07-01 10:27:22
我正在使用這個快速啟動代碼,允許在 puppeteer 無頭的情況下進入頁面。const puppeteer = require('puppeteer');(async () => {    const args = [        "--disable-setuid-sandbox",        "--no-sandbox"    ];    const options = {        args,        headless: true,        ignoreHTTPSErrors: true,    };    const browser = await puppeteer.launch(options);    const page = await browser.newPage();    await page.goto("https://www.example.com/", {        waitUntil: 'networkidle0',        timeout: 30000    });    await page.close();    await browser.close();})()我想了解有關導航的更多信息:我能得到每個請求和每個響應的開始和結束時間嗎?puppeteer 中是否有允許獲取這些指標的功能?例如第一個請求的開始時間和第一個響應的結束時間?每個請求和每個響應的最終...
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

使用PerformanceObserver,您可以通過將條目類型指定為“資源”來獲取每個請求的時間。將每個條目添加到對象window,然后使用 puppeteer 對其進行評估。


const puppeteer = require('puppeteer');


const perfObsRunner = () => {

  window.resourceList = [];

  new PerformanceObserver((list) => {

    list.getEntries().forEach((item) => {

      window.resourceList = [...window.resourceList, item.toJSON()]

    })

  }).observe({type: 'resource', buffered: true});

}



const getResourceTiming = async () => {

  const browser = await puppeteer.launch();

  const page = await browser.newPage();


  await page.evaluateOnNewDocument(perfObsRunner);

  await page.goto("https://pptr.dev/", { waitUntil: 'load', timeout: 30000 });

  const resource = await page.evaluate(() => ({ resource: window.resourceList }))


  await page.close();

  await browser.close();

}

從響應中您可以獲取有關請求的信息,例如:startTime、duration、responseStart、responseEnd。 示例響應:


resource = [

    {

      "name": "https://pptr.dev/style.css",

      "entryType": "resource",

      "startTime": 55.9099999954924,

      "duration": 0,

      "initiatorType": "link",

      "nextHopProtocol": "h2",

      "workerStart": 0,

      "redirectStart": 0,

      "redirectEnd": 0,

      "fetchStart": 55.9099999954924,

      "domainLookupStart": 55.9099999954924,

      "domainLookupEnd": 55.9099999954924,

      "connectStart": 55.9099999954924,

      "connectEnd": 55.9099999954924,

      "secureConnectionStart": 55.9099999954924,

      "requestStart": 0,

      "responseStart": 0,

      "responseEnd": 55.9099999954924,

      "transferSize": 0,

      "encodedBodySize": 3704,

      "decodedBodySize": 14326,

      "serverTiming": [],

      "workerTiming": []

    },

    {

      "name": "https://pptr.dev/index.js",

      "entryType": "resource",

      "startTime": 56.08000000938773,

      "duration": 0,

      "initiatorType": "script",

      "nextHopProtocol": "h2",

      "workerStart": 0,

      "redirectStart": 0,

      "redirectEnd": 0,

      "fetchStart": 56.08000000938773,

      "domainLookupStart": 56.08000000938773,

      "domainLookupEnd": 56.08000000938773,

      "connectStart": 56.08000000938773,

      "connectEnd": 56.08000000938773,

      "secureConnectionStart": 56.08000000938773,

      "requestStart": 0,

      "responseStart": 0,

      "responseEnd": 56.08000000938773,

      "transferSize": 0,

      "encodedBodySize": 52861,

      "decodedBodySize": 149772,

      "serverTiming": [],

      "workerTiming": []

    },

    {

      "name": "https://raw.githubusercontent.com/GoogleChrome/puppeteer/main/README.md",

      "entryType": "resource",

      "startTime": 98.98000000976026,

      "duration": 1.6949999844655395,

      "initiatorType": "fetch",

      "nextHopProtocol": "h2",

      "workerStart": 0,

      "redirectStart": 0,

      "redirectEnd": 0,

      "fetchStart": 98.98000000976026,

      "domainLookupStart": 0,

      "domainLookupEnd": 0,

      "connectStart": 0,

      "connectEnd": 0,

      "secureConnectionStart": 0,

      "requestStart": 0,

      "responseStart": 0,

      "responseEnd": 100.6749999942258,

      "transferSize": 0,

      "encodedBodySize": 0,

      "decodedBodySize": 0,

      "serverTiming": [],

      "workerTiming": []

    },

]


查看完整回答
反對 回復 2022-07-01
  • 1 回答
  • 0 關注
  • 278 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號