Merge pull request #284 from getmaxun/adblock-fix-china
feat: avoid crash due to adblocker
This commit is contained in:
@@ -111,13 +111,21 @@ export default class Interpreter extends EventEmitter {
|
||||
|
||||
private async applyAdBlocker(page: Page): Promise<void> {
|
||||
if (this.blocker) {
|
||||
await this.blocker.enableBlockingInPage(page);
|
||||
try {
|
||||
await this.blocker.enableBlockingInPage(page);
|
||||
} catch (err) {
|
||||
this.log(`Ad-blocker operation failed:`, Level.ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async disableAdBlocker(page: Page): Promise<void> {
|
||||
if (this.blocker) {
|
||||
await this.blocker.disableBlockingInPage(page);
|
||||
try {
|
||||
await this.blocker.disableBlockingInPage(page);
|
||||
} catch (err) {
|
||||
this.log(`Ad-blocker operation failed:`, Level.ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -662,7 +670,11 @@ export default class Interpreter extends EventEmitter {
|
||||
const workflowCopy: Workflow = JSON.parse(JSON.stringify(workflow));
|
||||
|
||||
// apply ad-blocker to the current page
|
||||
await this.applyAdBlocker(p);
|
||||
try {
|
||||
await this.applyAdBlocker(p);
|
||||
} catch (error) {
|
||||
this.log(`Failed to apply ad-blocker: ${error.message}`, Level.ERROR);
|
||||
}
|
||||
const usedActions: string[] = [];
|
||||
let selectors: string[] = [];
|
||||
let lastAction = null;
|
||||
|
||||
@@ -245,10 +245,17 @@ export class RemoteBrowser {
|
||||
|
||||
await this.setupPageEventListeners(this.currentPage);
|
||||
|
||||
const blocker = await PlaywrightBlocker.fromLists(fetch, ['https://easylist.to/easylist/easylist.txt']);
|
||||
await blocker.enableBlockingInPage(this.currentPage);
|
||||
this.client = await this.currentPage.context().newCDPSession(this.currentPage);
|
||||
await blocker.disableBlockingInPage(this.currentPage);
|
||||
try {
|
||||
const blocker = await PlaywrightBlocker.fromLists(fetch, ['https://easylist.to/easylist/easylist.txt']);
|
||||
await blocker.enableBlockingInPage(this.currentPage);
|
||||
this.client = await this.currentPage.context().newCDPSession(this.currentPage);
|
||||
await blocker.disableBlockingInPage(this.currentPage);
|
||||
console.log('Adblocker initialized');
|
||||
} catch (error: any) {
|
||||
console.warn('Failed to initialize adblocker, continuing without it:', error.message);
|
||||
// Still need to set up the CDP session even if blocker fails
|
||||
this.client = await this.currentPage.context().newCDPSession(this.currentPage);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user