Migrate from adblock-rs to cliqz

This commit is contained in:
TC
2020-04-12 13:23:35 +02:00
parent 6fb251f00f
commit 422c3fc28d
8 changed files with 136 additions and 418 deletions

View File

@ -1,2 +0,0 @@
/filter-lists/*
!/filter-lists/.keep

View File

@ -1,3 +1,12 @@
const { blockWindowAds } = require("./blocker");
const { ElectronBlocker } = require("@cliqz/adblocker-electron");
const { session } = require("electron");
const fetch = require("node-fetch");
module.exports = win => blockWindowAds(win.webContents);
const SOURCES = [
"https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt"
];
module.exports = () =>
ElectronBlocker.fromLists(fetch, SOURCES)
.then(blocker => blocker.enableBlockingInSession(session.defaultSession))
.catch(err => console.log("Error loading adBlocker", err));

View File

@ -1,8 +0,0 @@
const { containsAds } = require("./contains-ads");
module.exports.blockWindowAds = webContents => {
webContents.session.webRequest.onBeforeRequest((details, cb) => {
const shouldBeBlocked = containsAds(details.url);
cb({ cancel: shouldBeBlocked });
});
};

View File

@ -1,32 +0,0 @@
const fs = require("fs");
const path = require("path");
const AdBlockClient = require("adblock-rs");
const is = require("electron-is");
const sourcesFolder = path.resolve(__dirname, "filter-lists");
const filterLists = fs
.readdirSync(sourcesFolder)
.filter(filename => filename.includes(".txt"))
.map(filename =>
fs
.readFileSync(path.resolve(sourcesFolder, filename), {
encoding: "utf-8"
})
.split("\n")
);
const rules = [].concat(...filterLists);
const debug = is.dev();
const client = new AdBlockClient.Engine(rules, debug);
if (debug) {
const serializedArrayBuffer = client.serialize(); // Serialize the engine to an ArrayBuffer
console.log(
`AdBlock engine size: ${(serializedArrayBuffer.byteLength / 1024).toFixed(
2
)} KB`
);
}
module.exports.containsAds = (req, base) => client.check(req, base || "", "");

View File

@ -1,37 +0,0 @@
// This file downloads the configured adblock lists
const fs = require("fs");
const https = require("https");
const path = require("path");
const SOURCES = [
{
name: "youtube-ads",
url:
"https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt"
}
];
function downloadAdblockLists(sources = SOURCES) {
// fetch updated versions
sources.forEach(source => {
console.log(`Downloading list "${source.name}" (${source.url})`);
https
.get(source.url, response => {
const filepath = path.resolve(
__dirname,
"filter-lists",
`${source.name}.txt`
);
const file = fs.createWriteStream(filepath);
response.pipe(file);
})
.on("error", err => {
console.log("Error: " + err.message);
});
});
}
module.exports = downloadAdblockLists;
if (require.main === module) {
downloadAdblockLists();
}