«Мы не собираем телеметрию» — утверждение, которое ничего не стоит, пока его не проверили. Проверять его несложно: любое исходящее соединение видно с вашей стороны, и никакого доступа к исходному коду для этого не нужно.
Этот гайд про методику и про её применение. В конце — результат проверки нашей же размещённой версии по этой же методике, включая находку, из-за которой этот текст пришлось переписывать. Мы считаем, что публиковать такое обязательно: иначе методика была бы риторическим приёмом, а не инструментом.
#Что понадобится
- Браузер с панелью разработчика — для веб-интерфейса. Подходит любой современный.
- Утилита просмотра соединений — для настольного приложения:
Get-NetTCPConnectionв PowerShell,lsof -iна macOS,ss -tunpна Linux. - Чистый профиль браузера или режим инкогнито — чтобы не тащить сохранённые куки согласия из прошлых визитов.
- Полчаса. Первая проверка занимает больше, повторная — минут пять.
Отдельно: методика показывает, куда идут соединения и когда, но не содержимое зашифрованного трафика. Чтобы увидеть тело запроса, нужен перехватывающий прокси с собственным сертификатом — это отдельная процедура, разобранная в гайде про самостоятельную проверку исходящих соединений приложения.
#Шаг 1. Снимите базовый список на холостом ходу
Откройте приложение и ничего не делайте. Не задавайте вопросов, не нажимайте кнопки. В панели разработчика на вкладке сетевых запросов посмотрите, к каким доменам ушли обращения.
Это самый информативный замер: всё, что происходит без вашего действия, — это и есть телеметрия и внешние зависимости. Запросы к модели здесь появиться не должны, потому что вы ничего не спрашивали.
Для настольного приложения — то же самое через утилиту соединений, отфильтровав по имени процесса.
#Шаг 2. Разделите домены на четыре класса
Голый список доменов ничего не говорит, пока вы не расставили их по назначению.
| Класс | Как узнать | Что с этим делать |
|---|---|---|
| Свой сервер | Тот же домен, что в адресной строке | Ничего: это работа приложения |
| Аналитика | Известные счётчики, домены со словами analytics, metrika, stat |
Отключается отказом от согласия или блокировкой |
| Внешние ресурсы | Шрифты, скрипты, иконки со сторонних доменов | Часто отключить нельзя, но факт нужно знать |
| Провайдер модели | Появляется только после вашего запроса | Ожидаемо: вы сами выбрали получателя |
Ключевая строка здесь третья. Внешние ресурсы — шрифты, библиотеки, картинки с чужих доменов — телеметрией не считаются и рекламируются редко, но при загрузке страницы отдают их владельцу ваш IP-адрес, строку браузера и адрес страницы, с которой пришёл запрос. Формально это не сбор данных. Практически — третья сторона узнаёт, что вы открыли эту страницу.
#Шаг 3. Проверьте, что происходит до согласия
Самый важный и чаще всего проваливаемый тест. Откройте страницу в чистом профиле, не нажимая ничего в баннере про cookie, и посмотрите список запросов.
Правильное поведение: домены аналитики в списке отсутствуют вообще. Не «скрипт загрузился, но не пишет», а именно отсутствуют — запроса к серверу счётчика не произошло.
Частая некорректная реализация: скрипт счётчика загружается сразу, а согласие лишь переключает флаг внутри него. С точки зрения обработки данных обращение к чужому серверу с вашим IP уже состоялось.
Отдельно проверьте резервный пиксель для браузеров без JavaScript: иногда он бьёт в счётчик безусловно, в обход всей логики согласия.
#Шаг 4. Отключите то, что отключается
Порядок от простого к сложному:
- Откажитесь в баннере согласия. Проверьте после отказа, что домен аналитики исчез из списка, а не остался.
- Найдите переключатель в настройках. У части продуктов телеметрия отключается там, а не баннером.
- Заблокируйте на уровне сети — расширением браузера, файлом
hostsили правилом на маршрутизаторе, если первые два способа не сработали. - Разверните свою копию, если она предусмотрена. Счётчики обычно подключаются одним шаблоном, которого в самостоятельной сборке нет.
#Проверка результата
Считайте проверку успешной, если можете ответить на три вопроса:
- Какие домены получают запрос при открытии приложения без вашего действия? Ответ — конкретный список, а не «вроде ничего».
- Меняется ли этот список после отказа в баннере? Если не меняется — отказ не работает.
- Какие домены появляются после вашего первого вопроса ассистенту? Там должен быть ровно один новый — тот провайдер, чей ключ вы подключили. Если новых доменов больше одного, разбирайтесь с каждым.
#Результат самопроверки нашей размещённой версии
Проверка проведена 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. Первый замер снимите сразу после запуска, второй — через час работы, чтобы поймать периодические отправки.
#Стоит ли доверять продукту, у которого телеметрия есть?
Наличие аналитики само по себе не порок — вопрос в том, названа ли она, спрашивают ли согласие до загрузки и работает ли отказ. Настораживать должно другое: расхождение между тем, что написано в описании продукта, и тем, что показывает ваш собственный замер. Общая рамка того, как приватность следует из архитектуры, — в статье про приватный ИИ и локальное хранение.
#Вывод
Если вы проверяете чужой продукт — снимите список доменов на холостом ходу, проверьте поведение до согласия и повторите замер через час: этих трёх действий хватает, чтобы отличить продукт, который называет свою аналитику, от продукта, который о ней молчит. Если проверяете наш — вы уже видели результат выше, вместе с находкой про шрифты, которую нам было бы удобнее не публиковать. Методика на то и методика, что применяется к себе тоже.