Мы приостанавливаем приложение AdGuard Pro для iOS из-за политики Apple
Google, Apple, Amazon и вот опять Apple. Блокировщикам рекламы почти удалось зачистить браузеры пользователей, но корпорациям совсем невыгодно убирать рекламу из своих закрытых платформ - и они защищают их с утроенным усердием.
Буду краток - Apple не пропустили наше последнее обновление для AdGuard Pro в App Store. Выходит, все, что мы делали, чтобы предыдущее "закручивание гаек" нас не коснулось, было зря - теперь от нас требуется убрать из приложения весь функционал, который можно использовать для блокировки рекламы и трекеров вне браузера Safari.
И, кстати, важный момент для тех, кто не слишком знаком с функционалом AdGuard Pro. Хочу ответить на часто встречающееся замечание. AdGuard Pro - это НЕ VPN в прямом смысле этого слова. Он НЕ устанавливает на вашем устройстве никаких сертификатов и не создает профили. Вместо этого, приложение использует открытый API интерфейс (NEPacketTunnelProvider), который конфигурирует локальный туннель VPN и таким образом перехватывает исходящие DNS запросы. Код AdGuard Pro открыт, его можно найти в Github. В общем выходит, что политика Apple на деле не имеет ничего общего с безопасностью и конфиденциальностью.
Вот цитата письма от Apple:
Правило 2.5.1 - Производительность - Требования к ПО
Ваше приложение использует профиль VPN или корневой сертификат для того, чтобы блокировать рекламу и другой контент в приложениях от третьих лиц, что запрещено в App Store.
Ну вообще приложение не делает этого - по умолчанию. Более того, это нигде не афишируется, мы не привлекаем внимания к этой возможности AdGuard. Но нельзя отрицать, что наше приложение можно настроить вручную таким образом, что оно сможет блокировать все что угодно - от всплывающей рекламы до трекинга и далее. В приложении есть настраиваемый черный список, куда можно добавить любой домен.
А вот отрывок из правил Apple, подходящий к нашей ситуации:
2.5.1 Приложения могут использовать только открытые API интерфейсы и должны быть совместимы с последней действующей операционной системой. Отслеживайте информацию об открытых API интерфейсах. Регулярно обновляйте свое приложение и избегайте использования нерекомендуемых или устаревших функций, протоколов или технологий, которые не будут использоваться в последующих версиях ОС. Приложения должны использовать интерфейсы API и протоколы для ранее озвученных целей и прописать эту интеграцию в описании приложения. Например, протокол HomeKit должен автоматизировать домашние процессы; HealthKit следует использовать для ЗОЖ - и интегрировать с приложением Health.
Если вкратце, политика Apple запрещает использовать VPN API для любых других целей кроме установления соединения через VPN. И я могу назвать КУЧУ отличных приложений, на которые эта политика сильно повлияет, и которые окажутся в шаге от вылета из App Store: Charles Proxy, DNSCloak и т.д. и т.п. Надеюсь, конечно, что им повезет больше, чем нам - в конце концов весь смысл ужесточения политики Apple в том, чтобы уличить и устранить известные приложения-адблокеры.
Что мы будем делать
Итак, все это время, которое у нас заняло исправление непонятных ошибок VPN API и улучшение DNS фильтрации, оказалось потраченным впустую. Мало того - все, что бы мы ни придумали и ни сделали с приложением, может быть снова использовано против нас. То есть нас в любой момент могут заставить убрать любые функции, работающие на уровне сети.
Вот что мы будем пока делать:
- Сосредоточимся на API блокировке в браузере Safari. Мы откладывали кучу дел до лучших времен - ну и теперь вот неожиданно сможем ими заняться.
- Мы не будем убирать AdGuard Pro с сайта или менять его функционал в ближайшие месяцы. Да, мы не станем делать обновления, но приложение останется рабочим и будет доступно.
- Если появятся проблемы в работе приложения на iOS 12, мы можем попытаться сделать обновление, но оно ограничит функционал до простого предоставления индивидуального DNS и DNSCrypt. Ну и не факт, что это обновление пропустят в App Store.
UPDATE (23.07.18): Мы не одни. Похоже что Apple решила убрать все приложения, осуществляющие блокировку контента вне Safari. Очередной пример - Malwarebytes.