Как мы проверяем

Каждая сборка - против настоящей Safari

Мы не просим верить на слово. Каждое изменение Lumen собирается на Mac с настоящей Safari: профиль сравнивают с ней, ищут любой запрос мимо прокси и записывают результат.

Последние прогоны
macOS 26.6.2, Safari 26.6.2сравнение с Safari - сборка bd9628e, 1 ноября 2026утечки и шаги сборки - ce64ca1, 29 октября
Все проверки пройденыОтчёт в JSON

Профиль против Safari на том же Mac

Профиль проверяется таким, каким его получаете вы: свой процесс, окно Safari и прокси в настройках. Рядом - настоящая Safari на том же Mac. Одна и та же страница измеряет обоих, а сервер на этом Mac читает их TLS и заголовки запросов. Прокси в этом замере не отвечает, а страница лежит на самом Mac и открывается напрямую - поэтому язык и часовой пояс у профиля те же, что у Safari.

Что сравниваетсяСовпадаетПодробности
Navigator
всё, что браузер сообщает о себе
21 из 22
одно отличие

User-Agent, платформа, язык и Intl, часовой пояс, число ядер. Отличается только число свойств navigator: в профиле с прокси нет navigator.credentials - ниже.

Экран
размер, цвет, плотность
9 из 9
совпадает

Размер экрана и его доступная часть, глубина цвета, плотность пикселей, указатель и касания.

Панели окна
сколько окна они занимают
0 из 1
отличается

Страница видит это как внешний размер окна минус внутренний. Размер и положение самого окна у каждого окна свои: эти 8 значений показаны, но не сравниваются.

Заголовки запросов
навигация, fetch и XHR
31 из 31
состав и порядок

Тот же набор заголовков в том же порядке, в каком их получил сервер от Safari.

TLS
ClientHello, как его видит сервер
9 из 9
совпадает

То, что первым видит любой https-сервер: JA3, JA4, шифры и расширения.

API
какие интерфейсы есть у страницы
406 из 418
12 отличий

Состояния разрешений, квота хранилища, голоса речи и сотни интерфейсов WebKit. Двенадцать отличий - интерфейсы, которые профиль с прокси выключает, и число свойств window, ниже.

Отрисовка
canvas, WebGL, звук, шрифты
17 из 17
совпадает

Canvas - та же картинка байт в байт, WebGL - производитель, рендерер, расширения и параметры, звук, метрики шрифтов.

Apple Pay и Web Push
что отвечают их вызовы
17 из 17
как у Safari

ApplePaySession, PaymentRequest и PushManager у профиля есть, и каждый из 17 проверяемых вызовов отвечает так же, как в Safari на этом Mac.

совпадаетотличается - подробности ниже

Что отличается - и почему

Из 507 значений отличаются 14. Мы показываем все. Одиннадцать - интерфейсы, которые профиль выключает, потому что их трафик или проверка шли бы мимо прокси. Два - числа свойств, которые от этого меняются. Одно - панели окна.

ПризнакиСколькоКогдаПочему
WebRTCRTCPeerConnection, RTCDataChannel, RTCEncodedVideoFrame, RTCRtpScriptTransform и сама функция RTCPeerConnection 5 и без прокси С прокси WebRTC выключен: его UDP ушёл бы мимо прокси. Без прокси он выключен по умолчанию.
Web Authentication (ключи доступа)PublicKeyCredential, Credential, navigator.credentials, проверка Web Authentication 4 с прокси Ключи доступа лежат в iCloud Keychain владельца, одни на Safari и все профили, а проверяют их службы системы, а не профиль. Без прокси эти интерфейсы на месте.
WebTransportWebTransport 1 с прокси Работает по HTTP/3, то есть QUIC поверх UDP, а его не переносит ни HTTP-, ни SOCKS5-прокси: соединение ушло бы мимо прокси.
Private Click Measurementатрибуция рекламы 1 с прокси WebKit отправляет отчёты об атрибуции позже и вне сеанса страницы. С прокси функция выключена, а уже сохранённые отчёты удаляются при запуске.
Число свойств windowwindowOwnCount 1 и без прокси Следствие строк выше: 1005 у профиля с прокси, 1044 у Safari. Ещё двух интерфейсов нет и без прокси - DigitalCredential и MediaSessionCoordinator: WebKit включает их только приложению с особыми правами Apple, которые есть у Safari.
Число свойств navigatornavigatorProtoCount 1 с прокси Следствие: в профиле с прокси нет navigator.credentials.
Панели окнаgeometry.chrome 1 и без прокси Сколько высоты окна занимают панели: у профиля в окне Safari это число иное, чем у самой Safari на этом Mac.

Проверки утечек

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

QUIC и HTTP/3
остаётся на прокси

Без прокси cloudflare-quic.com отвечает профилю по HTTP/3; через HTTP- и SOCKS5-прокси - по HTTP/2, и каждый запрос виден прокси. UDP у прокси даже не запрашивается.

leak_check · каждая сборка

WebRTC
выключен в профиле с прокси

В странице, во фреймах и в воркерах нет RTCPeerConnection. Контроль без прокси получает свой внешний адрес через STUN - значит, проверка видит утечку, когда она есть.

leak_check и самотест

DNS
мимо прокси не уходит

Тестовая страница просит заранее разрешить имена: dns-prefetch, preconnect, заголовок Link. В захвате пакетов нет ни одного DNS-запроса к этим именам.

egress_check

Обращения к самому компьютеру
отклонены

Страница, фрейм и воркер обращаются к 127.0.0.1, localhost, ::1 и 0.0.0.0. Каждый запрос отклонён, слушатель на loopback не получил ни одного соединения.

самотест

Сертификаты
отклонены на рукопожатии

Тестовый сервер отдаёт сертификат, для проверки которого система пошла бы в сеть за промежуточным. В профиле с прокси такой сертификат отклонён на рукопожатии - через прокси.

самотест

Все пакеты с машины
ни одного мимо прокси

Пока профиль открывает страницу со всеми видами запросов, CI записывает каждый пакет, уходящий с машины, вместе с процессом-отправителем: 2 410 пакетов в последнем прогоне.

egress_check · pktap

Записи на диск
ничего в папках Safari

Каждая запись приложения и WebKit отслеживается: профиль не пишет туда, где хранит данные настоящая Safari. В последнем прогоне - трасса из 606 017 строк.

disk_check · fs_usage

Службы Safari
не вызываются

Подсказки поиска, Safe Browsing, перевод, Apple Pay и другие службы, которые ходят в сеть из своих процессов, из процесса профиля не вызываются: соединения с ними отклоняются.

самотест и захват пакетов

Что проверяется на каждой сборке

Эти шаги выполняются при каждом изменении кода. Если падает любой обязательный - сборка красная.

Все шаги сборки
ШагЧто проверяетПоследний прогон
Модульные тесты ядраШифрование, хранилище, синхронизация, импорт cookies, прогрев - на Linux и на macOS223 теста на macOS, 0 провалов
Скрипты в двух движкахСкрипты, которые профиль добавляет в страницу, ведут себя как встроенные функции - в V8 и в JavaScriptCore, движке Safariпройдены
Самотест на настоящем WebKitИзоляция профилей, прокси и fail-closed, шифрование при остановке, пароли, cookies, синхронизация двух Mac, прогрев, окно Safari в процессе профиля274 проверки, 0 провалов
Классы SafariЧто интерфейс Safari в профиле находит всё, на что опирается: если обновление macOS что-то уберёт, сборка это покажетпройдено
Сравнение с SafariЗонд из 448 признаков: профиль и Safari на одной машине434 из 448; 0 обязательных отличий
УтечкиQUIC, WebRTC, DNS, обращения к самому компьютерупройдено
Пакеты и дискКаждый пакет с машины и каждая запись на диск вокруг самотестани одного пакета мимо прокси
ЖурналыВ системный журнал не попадает ничего ваше в открытом видепройдено
ЯзыкиРусский и английский интерфейс содержат одни и те же строкипройдено

Проверьте сами

Нужен только ваш Mac и любой прокси.

  1. Адрес

    В профиле с прокси откройте страницу, которая показывает ваш IP-адрес. Должен быть адрес прокси.

  2. Fail-closed

    Выключите прокси и обновите страницу. Она не должна открыться - и тем более показать ваш настоящий адрес.

  3. Отпечаток

    Откройте одну и ту же страницу проверки отпечатка в Safari и в профиле на этом Mac. Значения совпадут - кроме тех, что перечислены выше: их профиль выключает, чтобы ничего не ушло мимо прокси.

Если страница проверки пишет «Canvas: Spoofed», откройте её в обычной Safari 26: deviceinfo.me пишет то же самое и там. Его тест знает только старую длину PNG, а нынешний WebKit кодирует ту же картинку иначе.

Отчёты

Сырые данные сравнения с Safari и проверок утечек - JSON, который можно открыть и сравнить самому. Без логов сборки и путей сборочной машины: только то, что измерено.

Выпуск от 29 октября 2026macOS 26.6.2 · Safari 26.6.2JSON
Публикуются здесь с каждым выпуском
JSON

Есть вопрос к проверке?

Напишите нам: если мы что-то не измеряем, мы хотим об этом знать.