Сигналы Linux armv81 в браузере: границы платформы
Как читать Linux armv81, Client Hints и WebGL, не превращая поверхность браузера в идентификатор оборудования.
BotBrowser Team
Нужна структурированная документация по теме Отпечатки?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
Если страница показывает Linux armv81, полезно определить источник каждого поля и отделить недоступные необязательные значения. Документация эмуляции Android объясняет, почему BotBrowser может показать такое семейство платформы, но эта строка не является идентификатором устройства.
TL;DR
navigator.platform: видимая странице строка, а не модель CPU и не личность.- Сокращённый User-Agent и User-Agent Client Hints имеют разные условия доступности.
- WebGL описывает возможности контекста; отсутствие расширения не доказывает другой хост.
unknown,not-requested,not-exposedи реальные значения нужно хранить отдельно.- Таблица согласованности объясняет наблюдение, но не выдаёт вердикт детектора.
Contents
- Строка платформы: одно поле
- Сокращённый User-Agent и Client Hints
- WebGL как подтверждение возможности
- Запись согласованности
- Ошибки и пределы трактовки
- Диагностика различия платформы
- Граница документации BotBrowser
- Практический вывод
Строка платформы: одно поле
Navigator.platform передаёт странице строку. Она не содержит гарантированного CPU, ядра ОС, платы или пользователя. Пример Linux armv81 в /docs/platform/android-emulation/ описывает наблюдаемую поверхность, а не обязательный результат каждого профиля или WebView.
| Поле | Наблюдение | Что не доказано |
|---|---|---|
navigator.platform | Точная строка, например Linux armv81 | Физический CPU или модель |
navigator.userAgent | Возвращённый сокращённый UA | Полная ОС |
navigator.userAgentData | Доступные подсказки низкой энтропии | Разрешение подсказок высокой энтропии |
uaData.architecture | unknown, если не запрошена | Физическая архитектура |
| WebGL | Контекст и расширения | Уникальный GPU или вердикт |
Используйте строку только вместе с проверкой нужной функции. Не превращайте platform.includes('arm') в авторизацию или постоянный ключ личности.
Сокращённый User-Agent и Client Hints
User-Agent Reduction убирает часть сведений из обычного UA. NavigatorUAData предоставляет базовые значения и необязательный getHighEntropyValues(). Руководство по сокращению User-Agent рассматривает заголовок, а разбор границ renderer WebGL отделяет графическую возможность от личности.
| Наблюдение | Безопасный смысл | Неверная замена |
|---|---|---|
| Интерфейс отсутствует | В этом контексте не раскрыт | Это не Chromium |
Есть platform | Получен общий token | Полная ОС |
Вернулась architecture | Подсказка получена после запроса | Физическая микросхема |
| Promise отклонён | Запрос недоступен или отклонён | Архитектура не ARM |
async function readPlatformSurface() {
const result = {
platformString: typeof navigator.platform === 'string' ? navigator.platform : 'not-exposed',
userAgent: navigator.userAgent || 'not-exposed',
uaData: 'not-exposed',
highEntropy: 'not-requested',
};
if (!navigator.userAgentData) return result;
result.uaData = { mobile: navigator.userAgentData.mobile, platform: navigator.userAgentData.platform };
try {
result.highEntropy = await navigator.userAgentData.getHighEntropyValues([
'architecture',
'model',
'platformVersion',
]);
} catch {
result.highEntropy = 'request-failed';
}
return result;
}
WebGL как подтверждение возможности
WebGLRenderingContext описывает вызовы и параметры графического контекста. Успешное создание, null у расширения или ошибка: это состояние возможности, а не доказательство ARM-оборудования.
| Результат | Что он подтверждает | Чего он не подтверждает |
|---|---|---|
| Контекст создан | Страница получила эту возможность | Физический GPU |
getExtension() вернул null | Расширение отсутствует здесь | Отсутствие на всех хостах |
| Параметр вернулся | Параметр раскрыт | Уникальную личность |
| Создание не удалось | Этот запрос не выполнился | Причину без диагностики |
Запись согласованности
Минимальная запись сохраняет контекст, точную строку, состояние запроса UA-CH и конкретный WebGL-вызов. architecture: unknown означает отсутствие результата, а не x86. Сначала сравнивайте release и контекст, затем поля и только потом графическую операцию.
| Ключ | Пример | Правило |
|---|---|---|
context | Window / secure | Где выполнено чтение |
platformString | Linux armv81 | Сохранить литерал |
uaData.architecture | unknown | Не заполнять отсутствие |
webgl.context | webgl2 | Указать запрошенный контекст |
webgl.extension | available / absent | Назвать расширение |
Ошибки и пределы трактовки
Если подсказка отсутствует, оставьте её неизвестной и проверьте, выполнялся ли запрос. При ошибке WebGL2 исследуйте контекст, policy и исключение, а не меняйте строку платформы. Разные строки требуют сравнения профиля, release и режима встраивания. Модель из hint остаётся значением браузера, а не физической аттестацией.
Диагностика различия платформы
Сначала сохраните контекст окна, затем точные строки navigator.platform и navigator.userAgent. Отметьте наличие navigator.userAgentData, ключи низкой энтропии и результат запроса высокой энтропии. Отсутствующий интерфейс и отклонённая promise являются разными состояниями.
Для WebGL запишите запрошенный контекст, результат getContext() и только параметр, который объясняет решение приложения. При исключении сохраните его класс и не подставляйте догадку.
| Шаг | Сохраняемое доказательство | Условие остановки |
|---|---|---|
| Безопасное окно | isSecureContext и контекст | Не запрашивать hint в неверном контексте |
| Платформа | Точная строка | Не переводить её в модель |
| UA-CH | Интерфейс, ключи и результат | Отсутствующее оставить неизвестным |
| WebGL | Тип и нужное расширение | Не составлять реестр renderer |
| Сравнение | Один release, профиль и fixture | Не сравнивать разные входы |
| Наблюдение | Осторожное чтение |
|---|---|
architecture не запрашивалась | Запроса не было, это не отрицательная архитектура |
architecture отклонена | Политика или контекст отклонили запрос |
Linux armv81 и ошибка WebGL2 | Два отдельных наблюдения для повтора в том же контексте |
Такая запись помогает повторить проверку совместимости, но не идентифицирует человека или устройство.
Граница документации BotBrowser
Документация BotBrowser описывает Android-поверхность эмуляции. Она не гарантирует каждую Client Hint, конкретный WebGL backend или результат стороннего сервиса. Настройка и чтение страницы: разные доказательства; ни одно не обещает анонимность, процент успеха или личность.
BotBrowser может показать настроенную платформу для проверки совместимости; он не гарантирует каждую Client Hint, renderer WebGL или внешний результат.
FAQ
Доказывает ли Linux armv81 Android?
Нет. Это строка, видимая странице; она может быть совместима с Android-поверхностью, но не доказывает ядро или устройство.
Означает ли отсутствующая hint x86?
Нет. Отсутствующая, незапрошенная и отклонённая подсказки: разные состояния.
Идентифицирует ли WebGL ARM-устройство?
Нет. Он описывает возможности конкретного контекста.
Идентифицирует ли эта запись человека или устройство?
Нет. Она сохраняет видимые значения и состояния доступности для диагностики, а не для создания личности.
Sources
Для сравнения прочитайте карту платформенных поверхностей и разбор свойств navigator.
Практический вывод
Считайте Linux armv81 одним видимым полем. Храните строку, сокращённый UA, состояние каждой Client Hint и конкретную WebGL-возможность. Неизвестное оставляйте неизвестным и используйте запись для совместимости, а не для вывода об оборудовании или человеке.
Эта статья входит в руководство: Что такое отпечаток браузера?
Похожие статьи
WEBGL_debug_renderer_info: границы приватности и renderer
ИдентичностьПоверхности идентичности браузера: обзор согласованности
ОтпечаткиClient Hints Fingerprinting: HTTP-заголовки и идентичность
ОтпечаткиСигналы Android WebView в CreepJS: границы вывода
ПлатформаМиграция от User-Agent Reduction к Client Hints
ОтпечаткиНет рендерера WebGL: приватность или состояние контекста?
Выполните ту же проверку в BotBrowser
Загрузите профиль, сохраните внутри браузера те сигналы, о которых только что прочитали, и подтвердите результат на своей машине до раскатки.