LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Думаю, что окончательно разобрался.

В общем есть возможность заблокировать видео-рекламу фильром сетевых запросов, но при этом ютуб начинает заменять видеорекламу картинками. Что уже неплохо, но не до конца решает задачу. Самый подходящий способ это фильтровать ответы от гугла. Для этого нужно вставить JavaScript на страницу. Я родил такой вариант (вставляемый content script-ом), частично стырив у юблока:

(() => {
    "use strict";

    const pageScript = () => {
        "use strict";

        const processors = [];
        window.addJSONPostProcessor = processor => processors.push(processor);

        const originalJSONParse = JSON.parse;
        JSON.parse = (text, reviver) => {
            const result = originalJSONParse(text, reviver);
            for (const processor of processors) {
                processor(result);
            }
            return result;
        };

        const originalResponsePrototypeJson = Response.prototype.json;
        Response.prototype.json = () =>
            originalResponsePrototypeJson.call(this).then(result => {
                for (const processor of processors) {
                    processor(result);
                }
                return result;
            });
    };

    const script = document.createElement("script");
    script.append("(" + pageScript + ")();");
    document.documentElement.append(script);

    window.addJSONPostProcessor = processor => {
        const script = document.createElement("script");
        script.append("addJSONPostProcessor(" + processor + ");");
        document.documentElement.append(script);
    };
})();

(() => {
    "use strict";

    addJSONPostProcessor(result => {
        delete result.adPlacements;
    });
})();

Также использую следующий CSS, чтобы скрывать рекламу в виде маленьких картинок, порой появляющихся поверх видео:

.video-ads {
    display: none;
}

Кроме этого реклама остаётся ещё в некоторых местах, но мне она уже не мешает, поэтому трогать я её не стал, вроде вся вырезается CSS-ом.

Исходная версия Legioner, :

Думаю, что окончательно разобрался.

В общем есть возможность заблокировать видео-рекламу фильром сетевых запросов, но при этом ютуб начинает заменять видеорекламу картинками. Что уже неплохо, но не до конца решает задачу. Самый подходящий способ это фильтровать ответы от гугла. Для этого нужно вставить JavaScript на страницу. Я родил такой вариант (вставляемый content script-ом), частично стырив у юблока:

(() => {
    "use strict";

    const pageScript = () => {
        "use strict";

        const processors = [];
        window.addJSONPostProcessor = processor => processors.push(processor);

        const originalJSONParse = JSON.parse;
        JSON.parse = (text, reviver) => {
            const result = originalJSONParse(text, reviver);
            for (const processor of processors) {
                processor(result);
            }
            return result;
        };

        const originalResponsePrototypeJson = Response.prototype.json;
        Response.prototype.json = () =>
            originalResponsePrototypeJson.call(this).then(result => {
                for (const processor of processors) {
                    processor(result);
                }
                return result;
            });
    };

    const script = document.createElement("script");
    script.append("(" + pageScript + ")();");
    document.documentElement.append(script);

    window.addJSONPostProcessor = processor => {
        const script = document.createElement("script");
        script.append("addJSONPostProcessor(" + processor + ")");
        document.documentElement.append(script);
    };
})();

(() => {
    "use strict";

    addJSONPostProcessor(result => {
        delete result.adPlacements;
    });
})();

Также использую следующий CSS, чтобы скрывать рекламу в виде маленьких картинок, порой появляющихся поверх видео:

.video-ads {
    display: none;
}

Кроме этого реклама остаётся ещё в некоторых местах, но мне она уже не мешает, поэтому трогать я её не стал, вроде вся вырезается CSS-ом.