From 6f235e96ea5c8b662c4fa54164c2d79d3c73405d Mon Sep 17 00:00:00 2001 From: Kiko Beats Date: Thu, 11 Sep 2025 09:53:12 +0200 Subject: [PATCH] fix(goto): continue intercepting after adblock teardown --- packages/browserless/src/index.js | 2 +- packages/goto/src/index.js | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/browserless/src/index.js b/packages/browserless/src/index.js index 44d5b36ee..f5f50420a 100644 --- a/packages/browserless/src/index.js +++ b/packages/browserless/src/index.js @@ -97,7 +97,7 @@ module.exports = ({ timeout: globalTimeout = 30000, ...launchOpts } = {}) => { const closePage = async (page, name) => { if (page && !page.isClosed()) { const duration = debug.duration('closePage') - if (page.disableAdblock) await page.disableAdblock() + if (page.disableAdblock) page.disableAdblock() const [browserProcess, browserContext] = await Promise.all([ getBrowser(), getBrowserContext(), diff --git a/packages/goto/src/index.js b/packages/goto/src/index.js index 4a46535dc..eaf1e1d13 100644 --- a/packages/goto/src/index.js +++ b/packages/goto/src/index.js @@ -235,14 +235,10 @@ module.exports = ({ defaultDevice = 'Macbook Pro 13', timeout: globalTimeout, .. ) } - // TODO: drop this when https://github.com/ghostery/adblocker/pull/5161 is merged - let isRequestInterceptionEnabled = false - page.isRequestInterceptionEnabled = () => isRequestInterceptionEnabled - const enableInterception = (onPageRequest || abortTypes.length > 0) && run({ - fn: page.setRequestInterception(true).then(() => (isRequestInterceptionEnabled = true)), + fn: page.setRequestInterception(true), debug: 'enableInterception' }) @@ -273,15 +269,28 @@ module.exports = ({ defaultDevice = 'Macbook Pro 13', timeout: globalTimeout, .. } if (adblock) { - page.disableAdblock = async () => { - await engine.disableBlockingInPage(page) - isRequestInterceptionEnabled = false + let adblockContext + + page.disableAdblock = () => { + // TODO: drop this when https://github.com/ghostery/adblocker/pull/5161 is merged + + engine.contexts.delete(page) + + if (adblockContext.blocker.config.loadNetworkFilters) { + adblockContext.page.off('request', adblockContext.onRequest) + } + + if (adblockContext.blocker.config.loadCosmeticFilters) { + adblockContext.page.off('frameattached', adblockContext.onFrameNavigated) + adblockContext.page.off('domcontentloaded', adblockContext.onDomContentLoaded) + } + debug.adblock('disabled') } prePromises.push( run({ - fn: engine.enableBlockingInPage(page), + fn: engine.enableBlockingInPage(page).then(context => (adblockContext = context)), timeout: actionTimeout, debug: 'adblock' })