Назад в Центр знаний
Отпечатки

Сигналы 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

Строка платформы: одно поле

Navigator.platform передаёт странице строку. Она не содержит гарантированного CPU, ядра ОС, платы или пользователя. Пример Linux armv81 в /docs/platform/android-emulation/ описывает наблюдаемую поверхность, а не обязательный результат каждого профиля или WebView.

ПолеНаблюдениеЧто не доказано
navigator.platformТочная строка, например Linux armv81Физический CPU или модель
navigator.userAgentВозвращённый сокращённый UAПолная ОС
navigator.userAgentDataДоступные подсказки низкой энтропииРазрешение подсказок высокой энтропии
uaData.architectureunknown, если не запрошенаФизическая архитектура
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, Client Hints и WebGL входят в запись согласованности, а неизвестные состояния не становятся личностью.

Запись согласованности

Минимальная запись сохраняет контекст, точную строку, состояние запроса UA-CH и конкретный WebGL-вызов. architecture: unknown означает отсутствие результата, а не x86. Сначала сравнивайте release и контекст, затем поля и только потом графическую операцию.

КлючПримерПравило
contextWindow / secureГде выполнено чтение
platformStringLinux armv81Сохранить литерал
uaData.architectureunknownНе заполнять отсутствие
webgl.contextwebgl2Указать запрошенный контекст
webgl.extensionavailable / 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-возможность. Неизвестное оставляйте неизвестным и используйте запись для совместимости, а не для вывода об оборудовании или человеке.

#fingerprinting#приватность#платформа#client hints

Эта статья входит в руководство: Что такое отпечаток браузера?

Выполните ту же проверку в BotBrowser

Загрузите профиль, сохраните внутри браузера те сигналы, о которых только что прочитали, и подтвердите результат на своей машине до раскатки.