Blindfold

Можно ли заблокировать рекламу внутри приложений на iPhone? Честный технический ответ

Наберите в поиске «блокировщик рекламы для приложений iphone», и найдёте длинный список приложений, обещающих убить рекламу везде на телефоне: в играх, в стриминговых сервисах, в каждом уголке iOS. Прежде чем скачивать любое из них, вот честный ответ. Ни одно приложение из App Store не может полностью заблокировать рекламу, которую стороннее приложение рисует на собственном экране. Понимание того, почему так, убережёт вас от покупки того, что не умеет делать то, что обещают его скриншоты.

Это не значит, что сделать ничего нельзя. Это значит, что настоящий ответ распадается на две части: что технически невозможно на iOS и что реально работает хорошо. Blindfold создан для второй части, так что этот текст настолько же о честности с вами, насколько об объяснении технологии.

Почему ни одно приложение не может залезть внутрь рекламы другого приложения

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

API расширений Safari, которыми пользуются блокировщики рекламы вроде Blindfold, блокировщики контента и веб-расширения Safari, ограничены конкретно движком рендеринга Safari. Apple создала их так, чтобы расширение могло передавать правила блокировки или скрывать элементы страницы, ни разу не увидев историю вашего просмотра, и эта область ограничена именно Safari. Аналогичного API, позволяющего установленному приложению залезть в интерфейс игры или перехватить рекламный SDK, встроенный в бесплатное приложение для показа баннера между уровнями, не существует. Если приложение утверждает, что делает это системно и без оговорок, оно преувеличивает то, что позволяет iOS.

Что реально делают системные DNS- и VPN-блокировщики

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

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

Но у него есть реальные компромиссы:

  • Он не видит внутрь зашифрованного HTTPS-трафика. Он знает только, к какому домену идёт запрос, но не то, что на странице или в самой рекламе. Поэтому он может только заблокировать или разрешить домен целиком. Написать точное правило вроде «скрыть один этот элемент», как это делает блокировщик контента Safari, он не может.
  • Реклама и легитимные функции приложения всё чаще используют одни и те же домены и инфраструктуру. Блокировка домена ради остановки рекламы может заодно сломать вход в аккаунт, видеоплеер или push-уведомление, которое случайно идёт через тот же путь.
  • Ему нужен постоянно работающий профиль VPN, чтобы вообще что-то фильтровать, а это совсем другой уровень доступа по сравнению с расширением Safari, которое можно выключить одним касанием.

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

Где Blindfold работает полностью

Всё, что грузится внутри собственного движка рендеринга Safari, доступно блокировщикам контента Blindfold, и это охватывает больше, чем большинство людей ожидает. Сюда входит сам Safari, а также Safari View Controller, лист-браузер внутри приложения, который используют другие приложения, чтобы открыть веб-ссылку, не выводя вас в сам Safari. Когда Почта, Сообщения или новостное приложение открывают статью в таком листе, под капотом всё равно работает движок Safari, поэтому те же правила блокировщика контента применяются автоматически. Приложение, открывшее ссылку, никак специально это не устраивает, и точно так же не может от этого отказаться.

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

Честный ответ

Если реклама, которую вы хотите убрать, живёт внутри интерфейса конкретной игры или приложения, блокировщик на основе Safari до неё не дотянется. Ваши реалистичные варианты здесь, это собственная покупка «без рекламы» внутри самого приложения либо DNS/VPN-блокировщик, который ловит часть на уровне домена, со всеми перечисленными выше компромиссами.

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

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