Перейти к содержимому

Реклама и трекеры

Блокировка включена из коробки и работает не расширением и не прокси, а самим WebKit: списки фильтров один раз компилируются в правила движка и выдаются странице до того, как она начнёт грузиться. Заблокированный запрос не происходит, и скрипты сайта не могут увидеть, что что-то произошло.

Так работает большая часть блокировки, но не вся: примерно седьмую часть списка в правилах WebKit выразить нельзя, и она выполняется внутри страницы.

Щит в адресной строке

Рядом с замком, у каждого окна — пока блокировка включена. Если она выключена в Конфигурации ▸ Приватность, щита нет вовсе: сказать про сайт нечего.

щит целыйправила работают на этой странице
щит перечёркнутне работают: сайт в списке исключений

Клик по щиту разрешает рекламу на всём, что под этим хостом — example.com покрывает www.example.com и cdn.example.com, — или блокирует её обратно. Это перезагрузка страницы, а не десятисекундная перекомпиляция: у каждого окна свой набор правил.

Те же два действия есть в Настройках ▸ Приватность.

Списки

Конфигурация ▸ Приватность ▸ Блокировка

списокчто в нёмпо умолчанию
AdGuard Baseреклама на большинстве сайтоввключён
AdGuard Tracking Protectionтрекеры, аналитика, маячкивключён
AdGuard Annoyancesбаннеры о куках, всплывашки, виджетывыключен
AdGuard Russianреклама на русскоязычных сайтахвключён, если система предпочитает русский

Любой другой список добавляется по адресу — EasyList, региональный, свой собственный. В панели видно, сколько правил в каждом и когда он обновлялся; Обновить сейчас там же перечитывает их по требованию, иначе это происходит само раз в три дня.

В строке под списком число вида «14 676 на странице» — это правила второго рода, те самые, которые WebKit не понимает. О них ниже.

Первый запуск считает

Компиляция трёх списков занимает секунды и идёт в фоне, пока браузером уже можно пользоваться. Дальше WebKit хранит скомпилированное у себя, и запуск — это три чтения из кэша.

То, что выполняется внутри страницы

Правила WebKit — это таблица: заблокировать запрос, перевести на HTTPS, снять заголовок, скрыть элемент по CSS-селектору. Список фильтров умеет говорить больше, и остаток Savoia может выполнять сам, внутри страницы. Это выключено, пока вы не включите Косметические правила и скриптлеты в Конфигурации ▸ Приватность ▸ Блокировка: тогда на каждой странице, для которой в списках есть такие правила, выполняется скрипт.

что этопримерзачем
скриптлеты#%#//scriptlet('set-constant', 'adsEnabled', 'false')обезвредить счётчик или детектор блокировщика до того, как сайт им воспользуется
расширенный CSS#?#.box:has(> div.banner)спрятать блок по тому, что внутри него, а не по классу
CSS-инъекции#$#.page { padding-top: 0 !important; }убрать не только баннер, но и дырку от него

Это 14 676 правил в трёх списках по умолчанию — и именно здесь живёт обход антиблокировщиков: с включённым переключателем сайты, которые говорят «отключите блокировщик», чаще просто открываются.

Почему это работает лучше, чем у расширения

Скриптлет полезен только если он успел до скриптов сайта. Расширение вынуждено вставлять на страницу тег <script> — и опаздывает, а на строгих сайтах его вставку ещё и запрещает Content-Security-Policy. Savoia — сам браузер: он подготавливает код заранее и запускает его первым, до всего остального на странице. Расширенный CSS при этом выполняется в отдельном мире, где сайт не видит ни библиотеку, ни то, что она делает.

Всё это подчиняется и общему переключателю блокировки, и списку исключений: щит, снятый с сайта, снимает и это.

Чего не хватает: правила применяются только к самой странице, но не к встроенным в неё фреймам — рекламу внутри фрейма ловит сетевая половина блокировки.

Выключено значит выключено

Блокировать рекламу и трекеры — не фильтр, пропускающий всё. С выключенным переключателем ничего не скачивается, не конвертируется, не компилируется и не подключается к странице: тот, кто принёс свой блокировщик, за наш не платит.

Сайты без блокировки

Панель Сайты без блокировки перечисляет всё, что вы разрешили щитом, и позволяет вернуть блокировку. Пока список пуст, там так и написано, откуда он берётся.

Чего здесь нет, и почему

  • Счётчика заблокированного. Движок не сообщает, какое правило сработало и сколько их было. Цифру в углу пришлось бы выдумать — поэтому её нет.
  • Фильтрации HTML ($$). Такое правило переписывает ответ сервера до того, как его разберёт браузер, а между этими двумя моментами встроиться нельзя. Это единственный вид правил, который Savoia выбрасывает.

Блокировка одинаковая в приватном окне и в обычном.