#ios #swift #networkextension
Вопрос:
Я изо всех сил пытался найти, как я мог бы потенциально реализовать простое приложение (iOS), которое могло бы блокировать все подключения к определенному домену (например, чтобы запретить пользователю доступ к определенной платформе социальных сетей, даже из другого приложения).
Информация, которую я нашел до сих пор, заключается в том, что мне, вероятно, следует создать поставщика пакетных туннелей в сетевом расширении и попросить пользователя добавить конфигурации VPN, но я не нашел ни одного примера кода, который бы точно показал, как это реализовать.
У вас есть какие-либо идеи, как я мог бы сделать это простым способом (заблокировать все подключения к определенному домену)? Есть ли фреймворк/библиотека, которую я мог бы легко использовать для этого?
Спасибо!
Ответ №1:
Ну, это было бы нелегко, но вы можете это сделать.
Примеры кода от Apple можно найти здесь и здесь. Этот проект предназначен для iOS, но он может быть в устаревшей версии Swift, поэтому вам нужно будет проделать некоторую работу, чтобы запустить его сейчас.
Часть, которая вас интересует в примере SimpleTunnel, — это FilterDataProvider и FilterControlProvider, другие вещи, которые вы можете опустить, потому что цель этого примера-продемонстрировать множество способностей.
Существует также образец для macOS, который больше ориентирован на ваши потребности, и macOS SDK похож на iOS, но менее мощный.
Возможно, вы захотите посмотреть это видео, чтобы разобраться в своих мыслях.
Существует множество решений брандмауэров для ios и mac, и некоторые из них являются открытыми
Часть, которая вас интересует в примере SimpleTunnel, — это FilterDataProvider и FilterControlProvider, другие вещи, которые вы можете опустить, потому что цель этого примера-продемонстрировать множество способностей.
Для запуска вам потребуется учетная запись разработчика, возможность расширения сети, назначенная идентификатору приложения, и соответствующий файл права на расширение сети a. Существует способ подписать его вручную для разработки без учетной записи и возможностей, но для распространения он вам все равно понадобится.
Для некоторых ограничений вам может потребоваться установить профиль MDM на устройстве.