Глоссарий
Blink
Blink это движок отрисовки внутри Chromium, и он отвечает почти на всё, что сайт спрашивает про вашу машину.
За что отвечает движок отрисовки
Blink превращает разметку и стиль в страницу и держит браузерную половину веб-платформы. Он отделился от движка, на котором работает Safari, и едет в каждой сборке Chromium.
Почти каждое имя, за которое берётся снималка отпечатка, это его геттер. Шрифты, экран, строки видеокарты, точки холста, набор голосов и звуковой буфер приходят отсюда, а не из отдельных частей браузера.
Раскладка и отрисовка
Дерево документа, правила стиля и точки, которые страница в итоге показывает.
Поверхность платформы
Интерфейсы navigator, screen, canvas, WebGL, WebGPU и звука, к которым идёт страница.
Рассказ про устройство
Ядра, память, точки касания, язык и часовой пояс читаются через него, а не в обход него.
Что движок отвечает про вас
Эти имена прочитаны в браузере, в котором вы это читаете. Внутри профиля те же имена отвечают из его семени, а не из вашей машины.
Ваша машина прямо сейчас
- Платформа
- измеряем на вашей машине
- Ядра
- измеряем на вашей машине
- Память устройства
- измеряем на вашей машине
- Признак автоматизации
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Где в дереве лежит наша правка
Наша сборка правит 39 файлов дерева Chromium и добавляет 10 своих. Все, кроме горстки, лежат под этим движком.
Остальные это два слоя над ним. Один объявляет ключ, который несёт семя профиля через всю границу процессов, второй собирает строку браузера.
Холст и звук
Рисовальный слой, запись картинки на диск и звуковой буфер отвечают с неизменным возмущением.
Шрифты и экран
Хранилище шрифтов и объект экрана отвечают из профиля, а не из хозяйской машины.
navigator и подсказки клиента
Платформа, ядра, память, точки касания и заголовки подсказок берутся из одного семени.
Приборы и голоса и сеть
Число приборов, набор голосов и числа канала принадлежат профилю.
Одно семя на каждый отрисовщик
Машина, которой представляется профиль, это одно значение, переданное при запуске. Главный процесс раздаёт его каждому отрисовщику, который поднимает, включая поднятый много позже.
- 1
Передано один раз
Одно значение в строке запуска несёт устройство, экран, шрифты, пояс и язык.
- 2
Роздано каждому отрисовщику
Вкладка, открытая через десять минут, стартует с тем же значением, что и первая.
- 3
Разобрано раз на процесс
Движок читает его, когда спросит первый геттер, и держит ответ до конца процесса.
Почему подмены внутри страницы мало
Защита, написанная сценарием, работает после загрузки страницы и живёт в одном мире. Работник или рамка заводят собственный мир, и подмены там просто нет, а расхождение между мирами само по себе примета.
Ответ на уровне движка не оставляет переписанных ходов. Спросить ход про самого себя бесполезно, потому что в странице ничего не трогали.
Часто путают с этим
V8
Движок JavaScript рядом. Тот исполняет сценарий, а этот отвечает на то, что сценарий спрашивает.
Chromium
Весь браузерный проект. Это его часть, которая раскладывает страницы и отдаёт платформу тому, что на них работает.
WebKit
Движок, от которого этот отделился. Safari работает на нём до сих пор, и они разошлись.
Чего это не делает
- Это не решает за ваш адрес. Откуда уходит трафик и что этот адрес делал раньше, это отдельные задачи, и аккаунты закрывают чаще из-за них.
- Правленый движок сам по себе не разводит аккаунты. Два аккаунта, открытые в одном профиле, делят одну папку и одно семя.
- Это не делает каждое показание неотличимым от настоящей машины. Что расходится, то записано и сверено, а не принято на веру.
- Это не меняет то, как исполняются сценарии. Время, арифметика и скорость страницы остаются ровно такими, какие есть.
Проверить
Каждая строка выше это файл, который можно открыть.
- Что сборка применяет и в каком порядке
- engine/patches/series
- Сборка применяет настоящую правку, а не заглушку
- apps/desktop/test/engine-patches-real.js
- Работники и рамки отвечают как документ над ними
- apps/desktop/test/fingerprint-realms.js
- Приёмка сборки, которая едет сегодня
- engine/приёмка-отчёт.json
Вопросы
- Blink это то же самое, что Chromium?
- Нет. Chromium это весь браузерный проект, а это его часть, которая раскладывает страницы и отдаёт платформу сценарию.
- Это то же самое, что V8?
- Нет. Они стоят рядом. Один исполняет сценарий, другой отвечает на имена, которые сценарий спрашивает.
- Какие браузеры на нём отрисовывают?
- Почти все настольные, кроме Safari и Firefox. Поэтому одна снималка отпечатка накрывает сразу многих, и написанная под один браузер проверка работает почти везде.
- Сайт может понять, в каком движке он идёт?
- Легко. Имена возможностей, правила округления и текст ошибок у движков разные, и каждое это одна строка сценария.
- Зачем править движок, а не страницу?
- Подмену в странице видно самой странице, и в работниках с рамками её нет. Ответ, рождённый внутри движка, не даёт ни того, ни другого.
Посмотрите, что отвечает этот браузер
Проверялка читает 12 значений в этой вкладке и ничего никуда не отправляет.