как заблокировать рекламу с кукольником, безголовым хромом - PullRequest
0 голосов
/ 17 декабря 2018

Я искал какой-либо способ заблокировать рекламу при использовании puppeteer (безголовый хром) в node.js, и нашел его в https://groups.google.com/a/chromium.org/forum/#!msg/headless-dev/G1u6SGeq7nw/VaIcIPlCAQAJ;

//http://winhelp2002.mvps.org/hosts.txt

//For puppeteer I read in this host file:

//now we read the host file
var hostFile = fs.readFileSync('hosts.txt', 'utf8').split('\n');
var hosts = {};
for (var i = 0; i < hostFile.length; i++) {
    var frags = hostFile[i].split(' ');
    if (frags.length > 1 && frags[0] === '0.0.0.0') {
        hosts[frags[1].trim()] = true;
    }
}

//When loading a page I then filter out requests for these domains (and optionally images):

    page.on('request', request => {
        var domain = null;
        if (task.input.blockads) {
            var frags = request.url().split('/');
            if (frags.length > 2) {
                domain = frags[2];
            }
        }
        if ((task.input.blockads && hosts[domain] === true) || (!task.input.includephotos && request.resourceType() === 'image')) {
            request.abort();
        }
        else {
            request.continue();
        }
    });

//This solution hugely improved the speed of our scraper.

Но я не знаю эту часть; task.input.blockads Это произошло из ничего, и я ничего не понимаю.Есть идеи?

1 Ответ

0 голосов
/ 17 декабря 2018

это просто параметр для включения / выключения проверки файла hosts.Если вы всегда хотите эту проверку, просто пропустите эту часть

page.on('request', request => {

    var domain = null;
    var frags = request.url().split('/');
    if (frags.length > 2) {
       domain = frags[2];
    }

    // just abort if found
    if (hosts[domain] === true) {
        request.abort();
    } else {
        request.continue();
    }
});
...