Принцип работы блокировщика рекламы

Принцип работы блокировщика рекламы

Fedor Potapenko

Как работает блокировщик рекламы? От чего зависит качество блокировки? Почему иногда он пропускает то, что должен заблокировать? Чем разные программы отличаются друг от друга?

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

Главное: адблокинг в двух словах

Самый простой и короткий ответ на вопрос будет звучать так: блокировщик не дает браузеру или приложению загружать нежелательные (рекламные) элементы их содержимого.

Чуть подробнее: блокировщик препятствует коммуникации между отображающей веб-страницу программой, например, браузером, и серверами, с которых загружаются рекламные элементы (баннеры, объявления, видео, поп-апы и так далее). Или другие элементы, которые он призван блокировать (например, счетчики статистики или кнопки соцсетей). Самые первые блокировщики имели в основе на другой принцип: они скрывали от глаз пользователя рекламные элементы, которые уже были загружены на страницу. Сейчас этот способ используется в некоторых программах как вспомогательный.

Первое и главное, что надо понимать: в основе блокировки рекламы в интернете лежит — пока что — не искусственный интеллект на самообучающихся нейросетях, а ручной труд, причем не только разработчиков, но и сообщества (самих пользователей).

Фильтры и их создатели

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

Разработчики используют консоль браузеров и другие инструменты (такие, как «‎Журнал фильтрации»‎), чтобы определять, какое правило нужно для блокировки конкретной рекламы или трекера. Это очень упрощённое описание процесса: в особо трудных случаях могут потребоваться сразу несколько правил, множество итераций и использование сложного синтаксиса, чтобы заблокировать элемент.

Автоматизировать распознавание рекламы сложно, помимо прочего, еще и потому, что даже у людей нет единого мнения насчет того, что является рекламой, а что нет. Например, вы заходите в интернет-магазин и видите в его шапке баннер "Акция! Купи сегодня два товара и получи третий бесплатно!" Магазин рекламирует самого себя и собственную акцию, есть ли смысл блокировать такое промо? Хочет ли аудитория видеть такие баннеры, или хочет скрыть их?

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

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

Пример кода фильтра AdLock

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

Самый популярный набор фильтров называется EasyList. Он не принадлежит какому-то конкретному блокировщику, но используется в большинстве популярных продуктов (в том числе в Awax, Adblock Plus, uBlock Origin, AdGuard и т.д.).

В рамках EasyList и других фильтр-проектов существуют отдельные фильтры для разных языковых сегментов интернета и для разных типов элементов, которые пользователи хотят блокировать: "классическая" реклама (баннеры, поп-апы и т.д.), следящие элементы (счетчики, рекламные трекеры), кнопки социальных сетей на сайтах, контент, который не хочется показывать детям, и так далее. Таким образом, человек, который хочет убрать баннеры, но не имеет ничего против кнопок.

Больше, чем просто блокировка рекламы

Фильтры могут гораздо больше, чем просто блокировать рекламу. Существуют фильтры для блокировки трекеров, виджетов социальных сетей, раздражающих элементов вроде уведомлений о куки и т. д. Разные пользователи могут выбирать разные комбинации фильтров, чтобы подстроить фильтрацию под свои нужды. Существуют специальные сайты, такие как filterlists.com, где собраны огромные базы всевозможных фильтров.

Типы правил фильтрации

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

Базовые правила фильтрации

Чтобы вы увидели рекламу на веб-странице или в приложении, её сначала необходимо загрузить с сервера. Для этого браузер или приложение должны отправить веб-запрос. Самый простой способ предотвратить загрузку рекламы — заблокировать этот запрос, так что он никогда не попадёт на сервер, а значит, и реклама не загрузится.

Такие блокировщики рекламы как AdLock и Adguard могут блокировать веб-запросы в соответствии с активными правилами фильтрации. Этот метод — один из самых эффективных в плане блокировки рекламы, но у него есть и недостатки. Самый очевидный из всех — на месте заблокированной рекламы может остаться пустое место.

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

Каждая веб-страница имеет так называемый DOM (Document Object Model или «‎объектная модель документа»), по сути — HTML-документ, содержащий структуру страницы и всех её элементов. Реклама на странице тоже является элементом и, следовательно, отображается в DOM. Блокировщики могут убирать часть DOM, а правила фильтрации помогают им понять, какие именно куски DOM соответствуют рекламе и требуют удаления, а какие не стоит трогать.

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

Правила фильтрации HTML

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

Конвейер фильтрации: от пользователя до разработчика и обратно

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

Разработчики каждого блокировщика сами решают, какие использовать фильтры из общедоступных. Впрочем, не все фильтры полностью совместимы со всеми программами. Разработчики совершенствуют синтаксис (правила составления программного кода) для фильтров, чтобы они быстрее работали и требовали меньше ресурсов, в результате чего фильтры, созданные командой одного приложения, в другом работать хоть и будут, но не так хорошо, как в "родном".

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

И, конечно, излишнее количество фильтров, особенно неидеально совместимых друг с другом, будет “тормозить” интернет, а то и всю работу устройства.

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

Чем занимаются разработчики блокировщиков и чем отличаются их продукты

Каждый блокировщик рекламы имеет собственные стратегии и технологии интерпретации и применения правил, прописанных в фильтрах. Простой пример: если блокировщику уже несколько лет не попадались элементы, соответствующий одному из правил фильтров в его коллекции, что надо делать? Отключить фильтр как устаревший, решив, что веб-разработчики перестали использовать в конструкции страниц такие элементы? Ведь чем меньше правил, тем меньше приложение "весит" и тем быстрее работает! Или не отключать, на тот случай, если элемент всё-таки попадётся на каком-нибудь сайте, а то и вовсе заново войдет в моду?

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

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

Разработчикам каждой программы приходится по-своему решать общие вопросы её функционирования, например:

  • распоряжение ресурсами устройства — оперативной памятью, дисковым пространством, зарядом аккумулятора, взаимодействием с другими программами;
  • взаимодействие с браузером, корректное отображение сайтов и приложений с убранной рекламой, чтобы на ее месте не было "дырок", не портился дизайн и верстка; отсутствие конфликтов с антивирусом
  • понятность и удобство интерфейса, сочетание гибкости настроек с неперегруженностью функциями
  • учёт особенностей разных платформ, на которых предстоит работать приложению (типов операционной системы и устройства)

Компания-разработчик занимается поддержкой пользователей, помогает им освоиться с программой и оперативно решать возникающие проблемы.

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

Блокировщики мобильные, системные, браузерные: в чем разница?

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

Браузерные расширения

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

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

расширения-блокировщики в магазине браузера Chrome

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

Например, Google Chrome и Opera принадлежат компаниям, для которых реклама в интернете является одним из основных источников дохода. Они не препятствуют существованию расширений-блокировщиков, но влияют на их работу.

В браузерах Chrome и Firefox расширения не имеют возможности контролировать запросы к рекламным сервисам, осуществляемые по протоколу WebRTC. То есть, часть запросов страниц на загрузку рекламы выполняется, и реклама блокируется не вся. До недавнего времени аналогичная проблема была с запросами по протоколу WebSocket. Известный порносайт Pornhub обходил блокировщики рекламы именно открывая альтернативный websocket-канал для показа баннеров, если видел у посетителя адблокер.

Расширения-блокировщики для мобильных браузеров — это отдельная история, но не очень захватывающая. Chrome разработки таких расширений не позволяет. Firefox позволяет.

Блокировка рекламы в приложениях возможна только на сетевом уровне. Это значит, что блокировщику нужно создать собственное приложение, которое будет фильтром для интернет-трафика, идущего ко всем остальным приложениям. Оно удаляет рекламу из этого потока данных, и уже "очищенная" информация отображается в приложениях.

Если рассматривать бесплатные блокировщики рекламы, то из известных можно выделить AdAway, но он использует принципиально иную техническую стратегию блокировки.

AdAway редактирует файл hosts на устройстве. В этом файле записаны соответствия между url-адресами ресурсов и именами серверов, на которых эти ресурсы находятся. Если отредактировать соответствия между доменами и серверами для рекламных сервисов, запросы к этим доменам не смогут выполняться, и реклама не будет показываться.

Пример файла hosts на android-смартфоне

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

Блокировщики рекламы на основе правил фильтрации же пропускаеют через себя и фильтруют весь сетевой трафик. Еще у некоторых из них есть режим DNS-блокировщика, в котором он работает аналогично AdAway. При всех недостатках это сверхэкономный режим работы, не задействующий ресурсы устройства.

DNS-фильтрация

DNS — это "система доменных имён", domain names system. Поэтому антирекламная фильтрация DNS работает аналогично редактированию файла hosts, описанному выше, с теми же недостатками и ограничениями.

Зато этот способ уникален своей кросс-платформенностью. Он обеспечит антирекламу для всех устройств, подключенных к интернету, в том числе к “интернету вещей”. Для Smart-TV, холодильников и любых других устройств “умного дома” можно организовать не только антирекламу, но и фильтрацию исходящего трафика, то есть, ограничить маркетинговую слежку.

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

Программы для ПК и ноутбуков

Выше были описаны ограничения, которым подвержены браузерные расширения для блокировки рекламы. Если установить блокировщик как компьютерную программу, эти ограничения будут неактуальны. Программа осуществляет системную блокировку (system-wide ad blocking), фильтруя весь идущий на компьютер трафик. Результат аналогичен мобильному блокировщику на Android и iOS, хотя механизм реализации немного иной. Такая программа, конечно, гораздо сложнее в разработке, чем браузерные расширения, но гараздо эффективней в своей работе.

А теперь, в знак благодарности того что вы ознакомились с данным материалом, вы можете получить лицензионный ключ на пол года для AdLock на Android/iOS на 1 устройство (можно переносить).
Для того, чтобы получить ключ, свяжитесь со мной в Telegram.
Исходные материалы для данной статьи взяты из блога и knowledge base компании разработчика приложения Adguard.

Report Page