Что такого особенного в AdGuard
В чем отличие AdGuard от других блокировщиков? Зачем нужен AdGuard, когда есть Adblock Plus или uBlock? Если бы я получал рубль каждый раз, когда мне задают этот вопрос, возможно, мы могли бы сделать наш продукт бесплатным. Но, пожалуй, начну рассказ с самого начала. Это поможет понять в чем основные различия, а также как и почему принимались ключевые решения о развитии AdGuard.
Экскурс в историю
Давным-давно, когда мы только начинали разработку самой первой версии AdGuard, ситуация с блокировщиками сильно отличалась от нынешней. Выбор был не настолько велик, реклама еще не стала такой пугающе "умной", а крупные компании не осознали, насколько ценна информация о пользователях.
Однако уже тогда появилась тенденция, сохранившаяся и по сей день: подавляющее большинство блокировщиков - это браузерные расширения. Этому есть множество объяснений, но наиболее важными мне кажутся перечисленные ниже.
- Браузерные расширения - относительно просты в разработке. "Потянуть" разработку расширения может один человек, не тратя при этом 100% своего времени. Это же позволило браузерным расширениям развиваться очень динамично, на доработку новых функций и исправление дефектов уходит сравнительно мало времени.
- Эти расширения - бесплатны. На самом деле, этот пункт отчасти следует из первого. Важность этого пункта сложно переоценить. Например, первым известным блокировщиком был "Ad Muncher", работающий на сетевом уровне и не зависящий от конкретного браузера. Но он быстро уступил в популярности своему бесплатному аналогу, расширению Adblock Plus для браузера Firefox.
Подробнее об истории блокировщиков читайте в нашей серии статей.
Думали ли мы об этом когда начинали разработку? Честно говоря - нет. Мы рассуждали и рассуждаем как инженеры, и нам просто хотелось решать сложные задачи, охватывающие разные области. Создание блокировщика, работающего на сетевом уровне и не ограниченного возможностями браузера, показалась нам интересной и сложной темой. Так мы приняли решение, которое, по сути, и определило вектор развития AdGuard.
Что такого в этом "сетевом уровне"?
"Сетевой уровень" означает, что все интернет-соединения проходят через AdGuard. На мой взгляд, для блокировщика это очень важно, и необходимость в подобном уровне контроля растет с каждым годом. Каждое приложение норовит собрать о пользователе максимум информации, и контролировать эти попытки можно только выйдя за рамки браузера.
Исторически, два типа программ всегда работали на этом уровне. В первую очередь - это антивирусы, которым необходимо сканировать загружаемые файлы, дабы максимально рано пресечь заражение. И во вторую очередь - это сами вредоносные программы, которые следят за действиями пользователей, собирают о них информацию, влияют на их решения. Блокировщики, по-моему, становятся третьим типом программ, которым необходимо работать на уровне сети и блокировать попытки рекламного трекинга.
Как работают браузерные расширения?
Существует множество блокировщиков, реализованных в виде браузерных расширений. Adblock Plus, Ghostery, uBlock, да что там, наше собственное расширение. Все они работают, используя одинаковый подход, и опираются на возможности, предоставляемые браузерами.
Преимущества браузерных расширений:
- Главное преимущество - это простота разработки и поддержки. Браузер делает многое самостоятельно, разработчику не нужно думать о сетевых протоколах, шифровании, установке, обновлениях и многом другом.
- Расширение находится "внутри" браузера и может обращаться к его внутренним структурам (например, вкладкам).
Недостатки браузерных расширений:
- Браузерные расширения контролируют не все протоколы. Например, это показала недавняя история с протоколом QUIC. Также они не контролируют WebRTC соединения, что часто используется для обхода блокировщиков.
- Контроль. У браузерных расширений нет доступа к запросам других браузерных расширений и к привилегированным соединениям самого браузера. Таким образом, они просто не видят многие собственные запросы браузера (примеры: OCSP, Google Safebrowsing), а также они не видят часть запросов, отправляемых другими расширениями. В свете множества проблем, связанных с вредоносными браузерными расширениями (1, 2) это вызывает только сожаление.
Как работает AdGuard?
А теперь рассмотрим, как технически устроена работа AdGuard. Описанное ниже справедливо для Windows, Mac и Android, и только частично - для iOS.
Замечание 1. Замечание по диаграмме: в Android роль сетевого драйвера исполняет модуль локального VPN.
Замечание 2. AdGuard Pro для iOS позволяет контролировать сетевые соединения вашего устройства на уровне DNS-запросов. Это - лучше чем ничего, но нам предстоит сделать еще многое, чтобы довести его до уровня остальных платформ.
Одной из основных частей AdGuard является его движок фильтрации, который предоставляет вам высочайший уровень контроля над тем, что приложения и браузеры загружают из сети. По сути, движок фильтрации - это интерпретатор набора специальных правил. В AdGuard, вы можете выбрать и использовать любой из списка доступных фильтров, а также, вы можете изучить синтаксис правил фильтрации и создавать свои собственные правила.
Главными преимуществами подхода AdGuard являются независимость и полный контроль над браузерами и приложениями. Браузер не может не дать вам добраться до соединения, а AdGuard, по сути, может выполнять часть функций брандмауэра.
Брандмауэр или межсетевой экран - тип программ, регулирующих контроль доступа других программ в сеть.
В наше время мобильных (да и десктопных тоже, хоть это и не так явно) приложений, постоянно следящих за вами и сливающих ваши данные, мне кажется очень важным иметь контроль над их действиями.
Главным же недостатком является сложность в реализации. По сути, нам необходимо реализовать многие вещи на том же уровне, на котором они реализованы в браузерах. Например, HTTPS фильтрация должна обеспечить безопасность соединений не хуже самого браузера, а фильтрационный движок должен уметь разобрать и модифицировать код любых страниц. Повышенная же сложность приводит к замедлению разработки и большему количеству багов. Улучшить состояние дел с этим мы постараемся введением CoreLibs.
Итоги
Так что в итоге, лучше ли AdGuard чем браузерные расширения? Честно говоря, я не ставил перед собой цель убедить вас в чем-то. Задача этой статьи - максимально понятно донести до читателя разницу между AdGuard и другими, показать преимущества и недостатки обеих сторон, и объяснить - зачем мы делаем то, что делаем. Выбор же вам стоит сделать самостоятельно.