Приватность

Телеметрия в ИИ-приложениях: как проверить и что отключить

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

«Мы не собираем телеметрию» — утверждение, которое ничего не стоит, пока его не проверили. Проверять его несложно: любое исходящее соединение видно с вашей стороны, и никакого доступа к исходному коду для этого не нужно.

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

#Что понадобится

  • Браузер с панелью разработчика — для веб-интерфейса. Подходит любой современный.
  • Утилита просмотра соединений — для настольного приложения: Get-NetTCPConnection в PowerShell, lsof -i на macOS, ss -tunp на Linux.
  • Чистый профиль браузера или режим инкогнито — чтобы не тащить сохранённые куки согласия из прошлых визитов.
  • Полчаса. Первая проверка занимает больше, повторная — минут пять.

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

#Шаг 1. Снимите базовый список на холостом ходу

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

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

Для настольного приложения — то же самое через утилиту соединений, отфильтровав по имени процесса.

#Шаг 2. Разделите домены на четыре класса

Голый список доменов ничего не говорит, пока вы не расставили их по назначению.

Класс Как узнать Что с этим делать
Свой сервер Тот же домен, что в адресной строке Ничего: это работа приложения
Аналитика Известные счётчики, домены со словами analytics, metrika, stat Отключается отказом от согласия или блокировкой
Внешние ресурсы Шрифты, скрипты, иконки со сторонних доменов Часто отключить нельзя, но факт нужно знать
Провайдер модели Появляется только после вашего запроса Ожидаемо: вы сами выбрали получателя

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

#Шаг 3. Проверьте, что происходит до согласия

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

Правильное поведение: домены аналитики в списке отсутствуют вообще. Не «скрипт загрузился, но не пишет», а именно отсутствуют — запроса к серверу счётчика не произошло.

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

Отдельно проверьте резервный пиксель для браузеров без JavaScript: иногда он бьёт в счётчик безусловно, в обход всей логики согласия.

#Шаг 4. Отключите то, что отключается

Порядок от простого к сложному:

  1. Откажитесь в баннере согласия. Проверьте после отказа, что домен аналитики исчез из списка, а не остался.
  2. Найдите переключатель в настройках. У части продуктов телеметрия отключается там, а не баннером.
  3. Заблокируйте на уровне сети — расширением браузера, файлом hosts или правилом на маршрутизаторе, если первые два способа не сработали.
  4. Разверните свою копию, если она предусмотрена. Счётчики обычно подключаются одним шаблоном, которого в самостоятельной сборке нет.

#Проверка результата

Считайте проверку успешной, если можете ответить на три вопроса:

  1. Какие домены получают запрос при открытии приложения без вашего действия? Ответ — конкретный список, а не «вроде ничего».
  2. Меняется ли этот список после отказа в баннере? Если не меняется — отказ не работает.
  3. Какие домены появляются после вашего первого вопроса ассистенту? Там должен быть ровно один новый — тот провайдер, чей ключ вы подключили. Если новых доменов больше одного, разбирайтесь с каждым.

#Результат самопроверки нашей размещённой версии

Проверка проведена 26 августа 2026 по методике выше.

Яндекс.Метрика со включённым вебвизором, счётчик 111901324. Стоит на публичных страницах — лендинге, блоге, страницах тарифов и правовых документов. Вебвизор записывает сессию: движения мыши, клики, прокрутку, ввод в поля, — и владелец сайта может просмотреть эту запись. Загружается только после нажатия «Принять»: пока согласия нет, в разметке нет ни адреса счётчика, ни резервного пикселя, то есть третий тест выше проходится. В личном кабинете счётчик получает только владелец экземпляра — участнику Метрика в кабинете не отдаётся ни при каком согласии. Что именно пишет вебвизор, разобрано отдельно в статье про Яндекс.Метрику и вебвизор.

Собственный счётчик посещений на том же сервере, без внешних скриптов и без сторонних cookie. IP-адрес не пишется вообще — ни полностью, ни усечённо, ни в виде хеша; строка браузера не пишется, только грубый класс устройства; из адреса перехода сохраняется только домен. Подробные записи хранятся ограниченный срок и затем удаляются автоматически.

А теперь неудобное, найденное этой же проверкой. Публичные страницы — лендинг и блог — подключают шрифты с fonts.googleapis.com и fonts.gstatic.com. Это происходит при загрузке страницы, до и независимо от баннера согласия. Никаких данных мы туда не отправляем, но обращение к чужому серверу состоится, и владелец этого сервера увидит IP-адрес посетителя, строку браузера и адрес страницы. По нашей же классификации из шага 2 это третий класс: не телеметрия, но третья сторона, узнающая о вашем визите без вашего согласия. Мы обнаружили это, применяя собственную методику к собственному продукту, и предпочли опубликовать, а не переписать методику под удобный результат. В самостоятельно развёрнутой копии эти ссылки в шаблонах присутствуют так же — то есть self-host снимает счётчик, но не шрифты.

Запросы к модели. Уходят напрямую выбранному провайдеру, посредника в цепочке нет. Что именно уезжает в одном запросе — разобрано в статье про состав запроса к языковой модели.

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

#Что может пойти не так

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

Забыли про кэш. Повторный визит не покажет запросы, ответы на которые лежат в кэше. Включите отключение кэша в панели разработчика.

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

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

Сделали вывод из одного замера. Часть соединений возникает по расписанию — проверка обновлений, отправка накопленной статистики. Оставьте утилиту соединений включённой на час работы.

#Частые вопросы

#Отличается ли телеметрия в самостоятельно развёрнутой копии?

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

#Можно ли считать телеметрией внешние шрифты и библиотеки?

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

#Что делать, если отказ в баннере не убирает счётчик?

Заблокировать домен счётчика на своей стороне — расширением, файлом hosts или правилом на маршрутизаторе. И сделать вывод о продукте: реализация, где отказ не отключает загрузку, обычно означает, что согласие оформлено формально.

#Видно ли содержимое запросов через панель разработчика?

Для запросов к вашему же серверу — да, тело видно. Для зашифрованных обращений к сторонним доменам — только факт, адрес и размер. Чтобы увидеть содержимое, нужен перехватывающий прокси с установленным в системе сертификатом.

#Как проверить настольное приложение без панели разработчика?

Утилитой соединений: на Windows — Get-NetTCPConnection с фильтром по идентификатору процесса, на macOS — lsof -i -P, на Linux — ss -tunp. Первый замер снимите сразу после запуска, второй — через час работы, чтобы поймать периодические отправки.

#Стоит ли доверять продукту, у которого телеметрия есть?

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

#Вывод

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

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт