Как работает тест
WebRTC — функция браузера за видеозвонками и демонстрацией экрана. Прежде чем два браузера смогут говорить напрямую, каждый должен узнать, по каким адресам он доступен, — это сбор ICE-кандидатов: браузер перечисляет свои интерфейсы, спрашивает публичный STUN-сервер, с какого адреса он виден в интернете, и собирает ответы. Любая страница может запустить это коротким скриптом без разрешений.
Эта страница делает то же в вашем браузере:
- Скрипт создает peer-соединение с публичным STUN-сервером.
- Открывает канал данных, что запускает сбор без обращения к камере.
- Каждый кандидат записывается в таблицу: тип, адрес, протокол, порт.
- Публичные кандидаты сравниваются с IP соединения; статус «пройдено» при совпадении всех, «не пройдено» при отличии.
- Никому ничего не отправляется, кроме STUN-запроса; на странице оценки анонимности результат также обновляет строку WebRTC.
| Тип | Что это |
|---|---|
| host | Адрес интерфейса устройства; в современных браузерах — имя .local |
| srflx | Публичный адрес, с которого вас увидел STUN-сервер (по UDP) |
| prflx | Адрес, обнаруженный при попытке соединения; здесь редок |
| relay | Адрес TURN-сервера; тест его не использует |
Протекает строка srflx: это адрес ваших UDP-пакетов, и если прокси передает только TCP, он — ваш настоящий.
Как читать результат
| Что показывает таблица | Значение |
|---|---|
| Имя .local и один srflx, равный IP соединения | Норма: туннель несет UDP, локальная сеть замаскирована |
| srflx, отличный от IP соединения | Утечка; 15 баллов в оценке анонимности |
| srflx IPv6 при соединении по IPv4 | Маршрут IPv6 вне туннеля; тест IPv6 покажет тот же адрес |
| Открытые адреса 192.168.x.x | Старый браузер или ослабленная настройка; не утечка публичного IP |
| Только host, без srflx | UDP к STUN заблокирован; некоторые сайты замечают отсутствие |
| Кандидатов нет | WebRTC отключен; браузер опознается как таковой |
Сравните публичного кандидата с адресом вверху: при совпадении схема проходит тест, при отличии никакая другая проверка не имеет значения, пока это не исправлено.
Как исправить
VPN-приложения и расширения. Включите защиту WebRTC в расширении; в десктопном приложении используйте полный системный туннель, а не браузерный прокси-режим — полный туннель несет UDP.
Chrome, Edge, Brave. В Brave: Настройки → Конфиденциальность и безопасность → Политика обработки IP WebRTC → «Отключить непроксированный UDP». В Chrome и Edge — расширение WebRTC Network Limiter или аналог.
Firefox. В about:config установите media.peerconnection.ice.default_address_only и media.peerconnection.ice.no_host в true; для полного отключения — media.peerconnection.enabled в false; с SOCKS5 — media.peerconnection.ice.proxy_only в true.
Safari. Пользовательского переключателя нет; защищает системный VPN с полным туннелем и kill switch.
Антидетект-браузеры. Режим замены адреса (replace/altered), а не «отключено»: браузер без WebRTC редок. С SOCKS5 без UDP только замена дает совпадающего кандидата.
Android и iOS. VPN-приложение, туннелирующее весь трафик; браузерные прокси UDP не несут.
Роутеры и файрволы. Блокировка исходящего UDP на порт 3478 убирает srflx для всех устройств, но ломает звонки.
Ограничения теста
- Один STUN-сервер, один момент.
- Сравнение с IP соединения, каким его увидел наш сервер; прокси только для части доменов даст другую картину.
- Расширение, переписывающее кандидатов, неотличимо от настоящего результата.
- Медиаустройства не затрагиваются; сайт, перечисляющий камеры, узнает больше.
- Имена .local страница разрешить не может — как и любой сайт.
Почему WebRTC течет за прокси и реже — за VPN
Браузерный прокси несет веб-запросы по TCP, а обнаружение адресов в WebRTC — UDP-обмен со STUN-сервером; браузеры не шлют UDP через HTTP-прокси, а поддержка UDP в SOCKS5 выключена. STUN-запрос уходит по реальному соединению и возвращает реальный адрес. VPN работает на уровне интерфейса и несет каждый пакет, включая UDP, поэтому публичным кандидатом становится адрес VPN. Режим замены в антидетект-браузерах имитирует то, что дал бы полный туннель.
Локальные адреса и mDNS
Старые браузеры сообщали частный адрес устройства как host-кандидата, что позволяло считать устройства в домашней сети. Современные заменяют его случайным именем в зоне .local — прием из mDNS, — разрешаемым только собеседником в той же сети. Открытый частный адрес означает устаревший браузер или отключенную маскировку: не утечка публичного IP, но лишняя информация.
Значит ли пройденный тест WebRTC, что мой VPN безопасен?
Это значит, что WebRTC — не тот канал, который течет. Запросы имен проверяет тест утечки DNS, маршрутизацию IPv6 — тест IPv6, а тест утечки IP запускает все три вместе. Утечка WebRTC — самая частая на проксированных схемах, поэтому ее запускают первой, но не единственной.
