preNavigationHooks: [
async (gotoOptions) => {
gotoOptions.waitUntil = "load";
},
async ({page}) => {
await page.route("**/*", async (route) => {
const url = route.request().url();
const resourceType = route.request().resourceType();
const trackingScriptRegex =
/googletagmanager|facebook|sentry|ads|tracking|metrics|analytics|optimizely|segment/i;
const extraBlocklistRegex =
/tiktok|facebook|prismic-images|bing|ads|tracking|metrics|analytics|contentsquare|lytics|adtrafficquality|adsrvr|tmol|snapchat|ticketm\.net/i;
const isBlockedResourceType = ["stylesheet", "font", "media"].includes(resourceType);
const isBlockedScript = resourceType === "script" && trackingScriptRegex.test(url);
const isBlockedByExtraPatterns = extraBlocklistRegex.test(url);
const shouldBlock =
!url.includes("recaptcha") &&
(isBlockedResourceType || isBlockedScript || isBlockedByExtraPatterns);
if (shouldBlock) {
await route.abort();
return;
}
await route.continue();
});
},
],
preNavigationHooks: [
async (gotoOptions) => {
gotoOptions.waitUntil = "load";
},
async ({page}) => {
await page.route("**/*", async (route) => {
const url = route.request().url();
const resourceType = route.request().resourceType();
const trackingScriptRegex =
/googletagmanager|facebook|sentry|ads|tracking|metrics|analytics|optimizely|segment/i;
const extraBlocklistRegex =
/tiktok|facebook|prismic-images|bing|ads|tracking|metrics|analytics|contentsquare|lytics|adtrafficquality|adsrvr|tmol|snapchat|ticketm\.net/i;
const isBlockedResourceType = ["stylesheet", "font", "media"].includes(resourceType);
const isBlockedScript = resourceType === "script" && trackingScriptRegex.test(url);
const isBlockedByExtraPatterns = extraBlocklistRegex.test(url);
const shouldBlock =
!url.includes("recaptcha") &&
(isBlockedResourceType || isBlockedScript || isBlockedByExtraPatterns);
if (shouldBlock) {
await route.abort();
return;
}
await route.continue();
});
},
],