diff --git a/backend/src/services/puppeteer-preflight.ts b/backend/src/services/puppeteer-preflight.ts index 44d8b1a0..40f1008e 100644 --- a/backend/src/services/puppeteer-preflight.ts +++ b/backend/src/services/puppeteer-preflight.ts @@ -150,6 +150,17 @@ export async function runPuppeteerPreflight( const page = await browser.newPage(); + // Block unnecessary resources to save bandwidth + await page.setRequestInterception(true); + page.on('request', (request: any) => { + const resourceType = request.resourceType(); + if (['image', 'font', 'media', 'stylesheet'].includes(resourceType)) { + request.abort(); + } else { + request.continue(); + } + }); + // If proxy has auth, set it up if (proxyUrl) { const proxyUrlParsed = new URL(proxyUrl); diff --git a/backend/src/tasks/handlers/entry-point-discovery.ts b/backend/src/tasks/handlers/entry-point-discovery.ts index 05584482..f81758c0 100644 --- a/backend/src/tasks/handlers/entry-point-discovery.ts +++ b/backend/src/tasks/handlers/entry-point-discovery.ts @@ -233,6 +233,18 @@ export async function handleEntryPointDiscovery(ctx: TaskContext): Promise { + const resourceType = request.resourceType(); + if (['image', 'font', 'media', 'stylesheet'].includes(resourceType)) { + request.abort(); + } else { + request.continue(); + } + }); + // Setup proxy auth if needed if (proxyUrl) { const proxyUrlParsed = new URL(proxyUrl); diff --git a/backend/src/tasks/handlers/product-discovery-http.ts b/backend/src/tasks/handlers/product-discovery-http.ts index 6f9fa783..23e188e1 100644 --- a/backend/src/tasks/handlers/product-discovery-http.ts +++ b/backend/src/tasks/handlers/product-discovery-http.ts @@ -100,6 +100,19 @@ export async function handleProductDiscoveryHttp(ctx: TaskContext): Promise { + const resourceType = request.resourceType(); + // Block images, fonts, media, and stylesheets - we don't need them + if (['image', 'font', 'media', 'stylesheet'].includes(resourceType)) { + request.abort(); + } else { + request.continue(); + } + }); + // Setup proxy auth if needed if (proxyUrl) { const proxyUrlParsed = new URL(proxyUrl); diff --git a/backend/src/tasks/handlers/store-discovery-http.ts b/backend/src/tasks/handlers/store-discovery-http.ts index e434a7d7..22fb0343 100644 --- a/backend/src/tasks/handlers/store-discovery-http.ts +++ b/backend/src/tasks/handlers/store-discovery-http.ts @@ -112,6 +112,18 @@ export async function handleStoreDiscoveryHttp(ctx: TaskContext): Promise { + const resourceType = request.resourceType(); + if (['image', 'font', 'media', 'stylesheet'].includes(resourceType)) { + request.abort(); + } else { + request.continue(); + } + }); + // Setup proxy auth if needed if (proxyUrl) { const proxyUrlParsed = new URL(proxyUrl); diff --git a/backend/src/tasks/handlers/store-discovery-state.ts b/backend/src/tasks/handlers/store-discovery-state.ts index 294c2c9f..1fe6e4ff 100644 --- a/backend/src/tasks/handlers/store-discovery-state.ts +++ b/backend/src/tasks/handlers/store-discovery-state.ts @@ -111,6 +111,17 @@ export async function handleStoreDiscoveryState(ctx: TaskContext): Promise { + const resourceType = request.resourceType(); + if (['image', 'font', 'media', 'stylesheet'].includes(resourceType)) { + request.abort(); + } else { + request.continue(); + } + }); + // Setup proxy auth if needed if (proxyUrl) { const proxyUrlParsed = new URL(proxyUrl);