UNPKG

undetected-browser

Version:

Puppeteer implementation with more anti-detection methods for interacting with websites

54 lines (49 loc) 2.04 kB
module.exports = function hookGeneralMethods(page) { page.messureSpeed = async function messureSpeed(url) { if (!url) url = "https://www.google.com"; await Promise.all([page.coverage.startJSCoverage(), page.coverage.startCSSCoverage()]); const startTime = Date.now(); await page.navigate(url); const loadTime = Date.now() - startTime; const [jsCoverage, cssCoverage] = await Promise.all([page.coverage.stopJSCoverage(), page.coverage.stopCSSCoverage()]); const totalBytes = [...jsCoverage, ...cssCoverage].reduce((acc, entry) => acc + entry.text.length, 0); const scriptsCount = jsCoverage.length; const stylesCount = cssCoverage.length; console.log(`Page Load Time: ${loadTime} ms`); console.log(`Number of Scripts: ${scriptsCount}`); console.log(`Number of Styles: ${stylesCount}`); console.log(`Total Bytes Transferred: ${totalBytes} bytes`); return { loadTime, scriptsCount, stylesCount, totalBytes }; }; page.setupURLBlocker = async function setupURLBlocker(urls) { if (urls.length == 0) { throw new Error("You must pass an array of urls that you want to block to page.setupURLBlocker"); return; } this.adblockURLs = urls; const pages = await this.browser().pages(); for (const pageToProtect of pages) { await page.setRequestInterception(true); page.on("request", (interceptedRequest) => { if (interceptedRequest.isInterceptResolutionHandled()) return; const url = interceptedRequest.url(); for (const urlParam of this.adblockURLs) { if (url.includes(urlParam)) { interceptedRequest.abort(); return; } } interceptedRequest.continue(); }); } }; page.closeOtherPages = async function closeOtherPages(browser) { const pages = await this.browser().pages(); for (const pageTest of pages) { if (pageTest.mainFrame()._id != page.mainFrame()._id) { await pageTest.close(); } } }; return page; };