Electron Adblocker
Efficient
· Minimal
· JavaScript
· TypeScript
· uBlock Origin- and Easylist-compatible
Node.js
· Puppeteer
· Electron
· WebExtension
Getting Started
Install: npm install --save @cliqz/adblocker-electron
.
Usage
For a complete example check-out: @cliqz/adblocker-electron-example.
Creating an instance of ElectronBlocker
and start blocking ads!
import { ElectronBlocker } from '@cliqz/adblocker-electron';
import fetch from 'cross-fetch';
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
blocker.enableBlockingInSession(session.defaultSession);
});
You are ready to block ads!
There are other ways you can create an instance of the blocking engine to
start blocking ads.
If you already have filters locally:
import { ElectronBlocker } from '@cliqz/adblocker-electron';
const blocker = ElectronBlocker.parse(fs.readFileSync('easylist.txt', 'utf-8'));
Fetching lists from URLs:
import { ElectronBlocker } from '@cliqz/adblocker-electron';
import fetch from 'cross-fetch';
const blocker = await ElectronBlocker.fromLists(fetch, [
'https://easylist.to/easylist/easylist.txt'
]);
Use ready-made configs to block ads and optionally trackers:
import { ElectronBlocker } from '@cliqz/adblocker-electron';
import fetch from 'cross-fetch';
let blocker = await ElectronBlocker.fromPrebuiltAdsOnly(fetch);
blocker = await ElectronBlocker.fromPrebuiltAdsAndTracking(fetch);
Disabling Blocker in session
To stop blocking ads in a session:
blocker.disableBlockingInSession(session.defaultSession);
Caching Blocker using Serialization
To avoid having to create the same instance of ElectronBlocker
all over again,
you can serialize it to a byte-array which you can store on disk for faster
loading.
import { ElectronBlocker } from '@cliqz/adblocker-electron';
import fetch from 'cross-fetch';
import { promises as fs } from 'fs';
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch, {
path: 'engine.bin',
read: fs.readFile,
write: fs.writeFile,
}).then((blocker) => {
blocker.enableBlockingInSession(session.defaultSession);
});
Or you can do this manually to control the way caching is done:
import { ElectronBlocker } from '@cliqz/adblocker-electron';
import fetch from 'cross-fetch';
ElectronBlocker.fromPrebuiltAdsAndTracking(fetch).then((blocker) => {
const buffer = blocker.serialize();
const restoredBlocker = ElectronBlocker.deserialize(buffer);
});