Меню
RU

Реклама на YouTube в Safari — неужели это навсегда?

Недавно мы получили много жалоб о пропущенной рекламе на YouTube на устройствах iOS. Что важно, жалобы касались именно просмотра YouTube в браузере Safari. Как выяснилось, YouTube начал использовать новый алгоритм показа рекламы вошедшим в систему пользователям, и это негативно отразилось на качестве блокировки рекламы. По факту, сейчас YouTube загружает рекламные ролики почти так же, как и обычные видео.

Мы нашли решение, которое работает в Safari на iOS, но оно оставляет желать лучшего по сравнению с другими платформами и браузерами. Проще говоря, мы блокируем короткие видео, 99,99% из которых — рекламные.

ДОПОЛНЕНИЕ: как выяснилось, всё же есть более качественное решение! Узнать, как заблокировать YouTube-рекламу в Safari на iOS можно в нашей свежей статье.

Но с таким подходом страдает удобство пользователя — либо видео загружается с заметной задержкой, либо вместо рекламы появляется пустое поле:

Краткое содержание

Несколько месяцев назад YouTube таким же образом показывал рекламу пользователям Chrome, но мы сумели справиться с этим без проблем. Теперь очередь Safari. К сожалению, Safari Content Blocking сильно ограничен по сравнению с полномасштабными блокировщиками контента для других браузеров. Он почти не менялся с момента своего появления в 2015 году.

В зависимости от платформы, вот что можно ожидать:

  • На iOS/iPadOS: это лучшее решение из возможных, придётся с этим смириться.
  • На macOS:
    • Если вы используете AdGuard для Mac, то изменения вас не затронут. Возможно, вы и не видели эту рекламу.
    • Если вы используете AdGuard для Safari, убедитесь, что у вас включено расширение «AdGuard Расширенная блокировка» (Safari > Настройки > Расширения). Это расширение восполняет некоторые функции, которых не хватает Safari Content Blocking, но, к сожалению, его нельзя перенести на iOS/iPadOS.

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

Ну а если вы хотите узнать, что не так с Safari Content Blocking, читайте дальше. В описании много технических деталей, так что, если вам это неинтересно, просто прокрутите вниз до последнего раздела.

Как работает блокировка контента в Safari

Прежде чем говорить об ограничениях Safari и о том, как мы в AdGuard их смягчаем, лучше сначала узнать, как работает блокировка контента в Safari.

Блокировщик контента представляет собой расширение программы, которое работает в рамках отдельного процесса. По сути это файл JSON со списком правил блокировки контента, который использует Safari для работы.

Эта схема иллюстрирует работу блокировщиков контента в Safari

Каждое правило блокировки контента — это объект JSON, который состоит из двух частей: «триггера» и «действия». Триггер определяет, к каким запросам должно быть применено правило, а действие, согласно названию, определяет, что сделает блокировщик контента с соответствующим запросом.

Как выглядит правило блокировки в Safari

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

Косметическое правило в Safari

Мы только что рассмотрели два типа действий: блокирование запроса и скрытие элемента, но их больше:

  • Отключение других совпадающих правил
  • Блокирование cookies
  • Модернизация соединения, переключение на HTTPS

Теперь, когда мы знаем, что представляет собой блокировка контента в Safari, давайте поговорим о её ограничениях.

Ограничения

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

  • Отсутствие инструментов отладки
  • Другой синтаксис (частично решается)
  • Медленная компиляция
  • 50 тысяч правил на блокировщик контента (это боль, но мы научились с ней жить)
  • Ограниченная поддержка регулярных выражений
  • У блокировки контента низкий приоритет для команды Safari

Давайте проанализируем каждую из этих проблем.

Отсутствие инструментов отладки

Начнём с чего-то простого, но всё ещё не имеющего решения. Чтобы создать эффективные правила фильтрации, разработчикам нужно отлаживать их, а для этого требуются инструменты, которых нет у Safari. Единственный инструмент, который может помочь разработчикам фильтров, — это консоль в браузере, где можно видеть заблокированные запросы. Но понять, какое правило блокирует тот или иной запрос, невозможно, а выяснение может быть очень утомительным.

Консоль в Safari

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

Другой синтаксис

Фильтры AdGuard, EasyList и uBlock основаны на оригинальном синтаксисе Adblock Plus. Он был расширен, но его основная часть одинаковая во всех популярных блокировщиках контента.

Анатомия общих правил фильтрации

Как вы видели на предыдущих иллюстрациях, у правил блокировки в Safari нет ничего общего с этим синтаксисом. И это проблема, потому что мы не хотим создавать особенные фильтры «только для Safari». В Safari просто нет достаточно хороших инструментов для разработки подобных фильтров. Мы же хотим использовать старые-добрые фильтры, такие как AdGuard и EasyList.

Наше решение

У проблемы есть очевидное решение — автоматически преобразовывать наши правила в правила блокировки контента Safari. Именно это и сейчас делает AdGuard прямо на вашем устройстве.

Возможное решение для проблем с синтаксисом Safari

Как вы сами понимаете, это лишняя работа, которая не делает блокировщики рекламы более эффективными.

Медленная компиляция

Safari компилирует JSON каждого блокировщика контента в «дерево префиксов», чтобы ускорить поиск.

Но компиляция этого дерева происходит медленно. Например, вы можете увидеть результат работы профайлера: на новом MacBook Pro требуется больше 2 секунд для компиляции JSON с чуть больше чем 30 тыс. правил (вполне реалистичный размер для фильтра).

Время компиляции в Safari

По сравнению с блокировщиками контента на других платформах, это очень медленно. Приложению AdGuard для Android потебуется меньше секунды, чтобы спарсить и скомпилировать список с больше чем 100 тыс. правил. Очевидная разница в том, что наше приложение для Android использует другой синтаксис: не такой сложный, как регулярные выражения, возможно, не такой гибкий, но специально оптимизированный для сопоставления URL.

Пользователи ничего этого не видят, и напрямую их это не касается, но этот момент на самом деле очень важен, потому что именно он вызывает другие ограничения.

Ограничение в 50 тыс. правил

Узнав, что компиляция довольно медленная, легко понять следующее ограничение. Один блокировщик контента не может содержать больше 50 000 правил — это жёстко закодированное ограничение для Safari. Разработчики Apple подтвердили, что главная причина для этого ограничения — в медленной компиляции. Они могут немного увеличить лимит, поскольку новые устройства быстрее, но это не решит все проблемы волшебным образом.

Пока правила основаны на использовании регулярных выражений, возможности для существенного улучшения отсутствуют. И пусть вас не введёт в заблуждение кажущееся большим число: например, Базовый фильтр AdGuard и EasyList содержат в сумме 100 000 правил, и это только два фильтра. У пользователей других платформ зачастую одновременно 5-10 фильтров, если не больше.

Наше решение

Фактически, тут целый комплекс решений. Увы, даже если комбинировать их, они не дадут желаемый результат, но это лучше чем ничего.

Оптимизация фильтров

Будучи разработчиками фильтров, мы пытаемся оптимизировать фильтры AdGuard специально для Safari. Например, мы объединяем подобные правила скрытия элементов в одно. Как видно на примере, пять разных правил объединены в два.

Оптимизация фильтров в Safari

Это очень помогает, но всё ещё недостаточно.

Удаление устаревших правил

Ещё одна вещь, которой мы занимаемся, — это удаление устаревших и редко используемых правил из оптимизированных версий фильтров. Благодаря пользователям браузерного расширения AdGuard, которые соглашаются делиться анонимизированными данными об использовании фильтров (по умолчанию отключено), мы знаем, какие правила используются реже остальных. Мы делаем версии популярных списков вроде Базового фильтра AdGuard без устаревших и редко используемых правил.

Пометка от разработчика фильтра, подсказывающая AdGuard, что правило не оптимизировано

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

Несколько блокировщиков контента

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

AdGuard для iOS состоит из 6 блокировщиков контента

Технически, в каждом из них меньше 50 тыс. правил, но в сумме получается гораздо больше. Однако по нескольким причинам в блокировке рекламы 50 тыс., умноженные на 6, не дают 300 тыс.:

  • Нередко один фильтр обращается к правилам из другого. Но с таким подходом блокировщики контента в Safari полностью независимы и правила в них не могут влиять друг на друга.
  • Если в каком-либо фильтре больше 50 тыс. правил, вы не сможете добавить его.

Мы продолжим резать AdGuard на части, чтобы соответствовать всем ограничениям Safari, но теперь вы видите, почему это не здорово.

Низкий приоритет разработки

Мы приберегли этот пункт напоследок, потому что он весьма показателен. Вот список изменений для Safari Content Blocking API за последние 6 лет:

2015 — Safari Content Blocking реализован
2016 — Добавлена одна новая функция (make-https) и исправлена пара крупных ошибок
2017 — Добавлена ещё одна новая функция (if-top-url), которая практически непригодна для использования, и добавлены блокировщики контента в WKWebView, исправлена пара ошибок
2018 — Исправлена пара ошибок, рефакторинг кода
2019 — Исправлена пара ошибок
2020 — Никаких существенных изменений

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

Что делать

Сообщество блокировки рекламы бьёт тревогу уже несколько лет. Вот всего несколько примеров отчётов об ошибках:

Этот запрос особенно интересный, так как он помог бы исправить проблему с рекламой на YouTube.

Разумеется, их гораздо больше, здесь только наиболее актуальные вопросы. Будучи частью сообщества, мы верим, что сделали больше, чем достаточно, чтобы привлечь внимание Apple к проблеме. Мы находимся в точке, когда изменения абсолютно необходимы, иначе в проигрыше останутся все — кроме рекламодателей.

UPD: похоже, в этом году всё изменится. Например, лимит в 50 тысяч правил подняли до 150 тысяч, и это ещё не всё.

Понравился пост?
9 934 9934 отзыва
Отлично!

AdGuard для Windows

AdGuard для Windows — это не просто «ещё один блокировщик». Это многоцелевой инструмент, который блокирует рекламу и доступ к опасным сайтам, ускоряет загрузку страниц и защищает детей от взрослого контента.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
9 934 9934 отзыва
Отлично!

AdGuard для Mac

В отличие от других блокировщиков, AdGuard разработан с учётом специфики операционной системы macOS. Он не только блокирует рекламу в Safari и других браузерах, но и защищает вас от слежки, фишинга и мошенничества в сети.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
9 934 9934 отзыва
Отлично!

AdGuard для Android

AdGuard для Android — это идеальное решение для Android-устройств. В отличие от других блокировщиков, AdGuard не требует root-доступа и позволяет управлять трафиком любых приложений на вашем устройстве.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
9 934 9934 отзыва
Отлично!

AdGuard для iOS

Лучший блокировщик рекламы для iPhone и iPad. AdGuard устраняет рекламу в Safari, защищает ваши данные и ускоряет загрузку страниц. AdGuard для iOS использует новейшую технологию блокировки, которая обеспечивает непревзойденное качество фильтрации и позволяет применять множество различных фильтров одновременно
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
9 934 9934 отзыва
Отлично!

AdGuard Content Blocker

AdGuard Content Blocker устраняет все объявления в мобильных браузерах, которые поддерживают технологию блокировки контента — к примеру, Samsung Internet и Яндекс.Браузер. Он обладает меньшим количеством функций, чем AdGuard для Android, но при этом бесплатен, прост в установке и по-прежнему обеспечивает высокое качество блокировки рекламы.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
9 934 9934 отзыва
Отлично!

Браузерное расширение AdGuard

AdGuard — самое быстрое и легкое браузерное расширение для блокировки всех типов рекламы! Выбирайте AdGuard для быстрого и безопасного серфинга без рекламы.
9 934 9934 отзыва
Отлично!

Помощник AdGuard

Дополнительное браузерное расширение для десктопных приложений AdGuard. Даёт доступ к таким функциям в браузере, как блокировка отдельных элементов, занесение сайта в белый список или отправление отчёта.
9 934 9934 отзыва
Отлично!

AdGuard DNS

AdGuard DNS – это альтернативный способ заблокировать рекламу, защитить личные данные и оградить детей от взрослых материалов. Он прост в настройке и использовании и обеспечивает необходимый минимум защиты от рекламы, трекинга и фишинга, независимо от платформы.
9 934 9934 отзыва
Отлично!

AdGuard Home

AdGuard Home — мощный сетевой инструмент против рекламы и трекинга. С усилением роли интернета вещей становится все более и более важным управлять всей вашей сетью. После настройки AdGuard Home будет охватывать ВСЕ ваши домашние устройства и для этого вам не понадобится программное обеспечение на стороне клиента.
9 934 9934 отзыва
Отлично!

AdGuard Pro для iOS

AdGuard Pro предлагает гораздо больше чем просто блокировку рекламы в Safari, которая есть в обычной версии. С помощью специальных настроек DNS вы сможете блокировать больше рекламы, защитить ваши личные данные и оградить детей от взрослого контента.
Скачивая программу, вы принимаете условия Лицензионного соглашения
Узнать больше
9 934 9934 отзыва
Отлично!

AdGuard для Safari

Расширения, блокирующие рекламу в Safari, переживают не лучшие времена с тех пор, как компания Apple вынудила всех использовать новый SDK. Познакомьтесь с нашим легко настраиваемым и молниеносным приложением!
9 934 9934 отзыва
Отлично!

AdGuard Temp Mail

Ваш временный почтовый ящик, чтобы на основную почту не приходил спам
9 934 9934 отзыва
Отлично!

AdGuard для Android TV

AdGuard для Android TV — единственное приложение, которое блокирует рекламу, защищает ваши данные и действует как фаервол для Smart TV. Получайте предупреждения о веб-угрозах, используйте безопасный DNS, а ваш трафик будет зашифрован. Смотрите любимые сериалы безопасно и без рекламы!
Загрузка AdGuard началась Стрелка указывает на файл: нажмите на него, и установка начнётся Выберите «Открыть», нажмите «OK» и дождитесь загрузки файла. В открывшемся окне перетащите значок AdGuard в папку «Приложения». Спасибо за выбор AdGuard! Выберите «Открыть», нажмите «OK» и дождитесь загрузки файла. В открывшемся окне нажмите «Установить». Спасибо за выбор AdGuard!
AdGuard есть и в мобильном варианте