Blindfold

Что такое блокировщик контента Safari? (И как он на самом деле работает)

Если вы искали способ заблокировать рекламу на iPhone, наверняка сталкивались с термином «блокировщик контента» без внятного объяснения, что это вообще такое. Это не то же самое, что расширение браузера на Mac, и эта разница важнее, чем кажется по большинству объяснений.

Блокировщик контента Safari, это небольшое расширение-приложение, которое передаёт Safari список правил: какие сетевые запросы блокировать и какие элементы страницы скрывать. Safari читает этот список, компилирует его и применяет самостоятельно. Расширение, поставившее правила, никогда не касается вашего трафика. Именно это решение и делает блокировщики контента отдельной категорией в iOS, а не просто «приложениями-блокировщиками рекламы».

Как на самом деле работает блокировщик контента

Apple представила блокировщики контента в iOS 9 через API SFContentBlockerManager, специально для того, чтобы Safari мог блокировать контент, не давая ни одной третьей стороне окно в то, что вы просматриваете.

Вот сам механизм. Расширение-блокировщик контента поставляет файл JSON, плоский массив объектов-правил. У каждого правила есть триггер (шаблон URL для сравнения) и действие (заблокировать запрос, скрыть элемент по CSS-селектору или убрать из него cookie). Когда вы включаете расширение, Safari загружает этот JSON, компилирует его в эффективный внутренний формат и сохраняет скомпилированную версию. С этого момента Safari применяет эти правила нативно при загрузке каждой страницы, ещё до того, как запустятся собственные скрипты страницы.

У самого расширения одна задача: по запросу передать Safari файл правил. Оно не работает в фоне, не видит страницы, которые вы посещаете, и не получает уведомление, когда сработало правило. Всю реальную блокировку Safari делает сам, внутри себя.

Именно поэтому у блокировщиков контента есть жёсткий потолок по количеству правил. Начиная с iOS 15 каждое расширение-блокировщик контента может держать до 150 000 скомпилированных правил. Это щедрый бюджет для шаблонов URL и CSS, и именно поэтому приложения, которым нужно покрытие больше, чем позволяет одно расширение, включая Blindfold, поставляют несколько расширений-блокировщиков контента вместо одного гигантского.

Почему это отличается от блокировщика рекламы в виде расширения браузера

В десктопном браузере расширение-блокировщик рекламы, это небольшая программа, работающая параллельно со страницей: она читает DOM, следит за сетевыми запросами по мере их появления и переписывает или удаляет что-то уже после начала загрузки страницы. Это мощно, и именно поэтому десктопные блокировщики рекламы умеют хитрые, динамические вещи, недоступные блокировщику контента Safari, вроде анализа содержимого страницы и принятия решения по итогам этого анализа.

Блокировщик контента Safari так не умеет. Он передаёт статический файл правил и отходит в сторону. У него нет видимости живой страницы, и он не может принимать решения в момент отрисовки. Каждое правило нужно решить заранее и записать как шаблон, а не как логику, реагирующую на то, что на экране.

Это реальный компромисс, и о нём стоит говорить честно. Взамен вы получаете скорость и конфиденциальность: ничего из вашего просмотра никогда не доходит до расширения, ни в одну страницу не внедряется скрипт для её анализа, а Safari применяет правила ещё до начала отрисовки страницы, а не подчищает её постфактум. Для большинства блокировки рекламы и трекеров заранее просчитанные правила покрывают подавляющее большинство случаев. Именно на последних нескольких процентах, рекламе, которая ещё не подходит ни под один известный шаблон, чисто статический список и показывает свои пределы.

Где на iPhone смотреть и управлять блокировщиками контента

Все установленные вами блокировщики контента находятся в одном месте: Настройки > Safari > Расширения. (На версиях iOS до 15 этот экран назывался Настройки > Safari > Блокировщики контента.) У каждого свой переключатель, и можно включить сразу несколько, поскольку они не конфликтуют друг с другом, Safari просто объединяет их скомпилированные правила.

Если после включения нового блокировщика контента сайт выглядит сломанным, это первое место для проверки. Выключите подозрительное расширение, перезагрузите страницу, и через несколько секунд станет понятно, было ли дело в нём.

Где здесь Blindfold

Blindfold поставляет три отдельных блокировщика контента: Реклама, Конфиденциальность и Раздражители, суммарно более 130 000 правил. Они покрывают рекламные сети, скрипты слежения, окна согласия на cookie и навязчивые оверлеи, и работают именно так, как работает любой блокировщик контента: компилируются и применяются самим Safari, без какой-либо видимости вашего просмотра.

Компромисс статических списков, описанный выше, реален, поэтому Blindfold добавляет ещё один слой. Модель Apple, работающая прямо на устройстве, проверяет элементы страницы после завершения её загрузки, в тот самый момент, в который чистый блокировщик контента ничего сделать не может, и создаёт точное правило скрытия, когда замечает то, что пропустили статические списки. Этот анализ проходит целиком на вашем iPhone. Ничего из того, что вы просматриваете, никуда не отправляется. Каждое созданное правило появляется в приложении, полностью видимое, и вы можете отредактировать или удалить его, как и любое другое.

Списки обновляются по воздуху ежедневно, так что новые правила приходят без обновления через App Store. 30-дневный бесплатный пробный период даёт доступ за $7.99/год либо за разовую покупку Пожизненного доступа в $19.99, оба варианта с Семейным доступом и без аккаунта. Полный набор функций можно посмотреть на домашней странице Blindfold или получить в App Store.

Если вы взвешиваете блокировщики контента против других вариантов снижения рекламы на iPhone, полный гид по блокировке рекламы на iPhone охватывает остальное поле: встроенные настройки Safari, блокировщики на базе VPN и то, где каждый подход помогает, а где нет.