Фингерпринтинг WebGPU: следующее поколение после Canvas и WebGL
WebGPU раскрывает больше возможностей железа, чем Canvas и WebGL вместе — и уже доступен в Chrome, Edge и Firefox. Что он показывает и почему за 2–3 года вытеснит прежние техники фингерпринтинга.
WebGPU появился в Chrome 113 в 2023 году. К 2026-му он доступен во всех основных браузерах на всех основных платформах. В отличие от WebGL — браузерного API, обёрнутого вокруг OpenGL ES 2.0, — WebGPU представляет собой прямой интерфейс к современным графическим API: Vulkan в Linux, Metal в macOS, DirectX 12 в Windows.
Это меняет то, что браузер может узнать о железе под ним. Фингерпринтинг на Canvas и WebGL опирался на результаты рендеринга. WebGPU позволяет напрямую запрашивать возможности самого GPU, раскрывая архитектурные детали, на которые вывод рендеринга может лишь намекать.
Для фингерпринтинга это скачкообразное улучшение качества сигнала.
Что раскрывает WebGPU и не раскрывает WebGL
Диагностическая поверхность WebGL ограничена. Самое полезное в ней — расширение WEBGL_debug_renderer_info, возвращающее строки вендора и рендерера, которые антидетект-браузеры часто подделывают, а функции приватности вырезают.
WebGPU даёт объекты GPUAdapter и GPUAdapterInfo с существенно более богатыми данными:
- Vendor — идентификатор производителя GPU (NVIDIA, AMD, Intel, Apple, Qualcomm).
- Architecture — семейство архитектуры GPU (Ampere, RDNA 2, Xe-LP, Apple M2, Adreno).
- Device — конкретная модель, если она доступна.
- Description — человекочитаемая строка.
Помимо идентификации, WebGPU раскрывает лимиты GPU — точные числовые характеристики железа. Их можно запросить через интерфейс GPUSupportedLimits, и включают они более 30 числовых свойств:
- Максимальные размеры текстур —
maxTextureDimension2D - Максимальный размер буфера —
maxBufferSize - Максимальное число bind-групп —
maxBindGroups - Максимальные размерности compute-workgroup
- Максимальное число вершинных атрибутов
- Требования к выравниванию storage-буферов
Каждое из этих значений задаётся драйвером GPU исходя из возможностей железа. У разных поколений GPU — даже у одного вендора — разные комбинации лимитов. У GPU 2019 года лимиты не такие, как у GPU 2023 года из того же семейства.
Почему это труднее подделать
Антидетект-браузеры подделывают Canvas и WebGL, перехватывая вызовы API и подменяя результаты. Возврат Canvas — это хеши отрисованных пикселей: браузер может отрисовать, а затем подменить хеш. У WebGL запрашивается небольшое число строк, которые можно заменить целиком.
С WebGPU иначе. Поверхность API велика — сотни методов и свойств. Каждому вызову нужно правдоподобное возвращаемое значение. Слой подделки обязан:
- Держать согласованную идентичность по всем числовым лимитам — GPU, выдающий себя за NVIDIA RTX 4090, должен возвращать каждое значение лимита, соответствующее этому железу.
- Справляться с реальным выполнением вычислений. WebGPU позволяет запускать compute-шейдеры. Если слой подделки заявляет высокую производительность, но выдаёт медленные вычисления, расхождение обнаруживается по таймингам.
- Отслеживать изменения между версиями драйверов. У каждой версии драйвера GPU лимиты слегка отличаются. Статические таблицы подделки устаревают с выходом новых драйверов.
Реальное железо даёт всё это бесплатно. Подделка железа требует поддерживать базу истинных комбинаций лимитов для каждой модели GPU и каждой версии драйвера — постоянную нагрузку по сопровождению, за которую большинство антидетект-браузеров пока не взялось.
Производительность вычислений как отпечаток
WebGPU позволяет запускать в браузере произвольные compute-шейдеры. Значит, системы детекции могут выполнять стандартизованные нагрузки и измерять время их выполнения.
Бенчмарк перебора хешей, перемножение матриц или околорендерная вычислительная задача выполняются со скоростью, которую определяет железо. Два посетителя, заявляющие одну и ту же модель GPU, но показывающие разную скорость вычислений, лгут о железе.
Такая техника полностью обходит статическую подделку отпечатка. Посетитель может заявить любую строку GPU. Но не может заявить производительность вычислений, которой у него нет.
Цена — пользовательский опыт. Запуск compute-шейдера в фоне расходует циклы GPU и может ощущаться как подтормаживание. Это ограничивает агрессивность применения: обычно приём используют как разовую проверку подозрительных сессий, а не как постоянный мониторинг.
Доступность функций как сигнал
WebGPU раскрывает опциональные функции через GPUAdapter.features. Некоторые GPU поддерживают конкретные расширения:
timestamp-query— требует современного GPU со счётчиками производительностиshader-f16— половинная точность с плавающей запятой, часто встречается в мобильных GPUtexture-compression-bc— Block Compression, стандарт для десктопаtexture-compression-etc2— мобильный формат сжатия текстурtexture-compression-astc— мобильный формат сжатия текстур
Набор функций детерминирован для каждой модели GPU. Машина на Windows, заявляющая мобильные функции Adreno, попадается. Мобильное устройство, заявляющее исключительно десктопные форматы сжатия, попадается.
Согласованность с WebGL
До WebGPU у браузеров была одна основная поверхность запросов к GPU — WebGL. Теперь их две, и они обязаны совпадать.
WebGL и WebGPU раскрывают один и тот же GPU. Их ответы должны быть непротиворечивы. Браузер, сообщающий через WebGL NVIDIA RTX 4080, но возвращающий лимиты WebGPU, соответствующие встроенному Intel, на реальном железе невозможен.
Согласованность между API — ещё один сигнал для детекции. Подделать один API просто. Подделать два API взаимно непротиворечиво — заметно сложнее, и нынешние антидетект-браузеры этого по большей части не делают.
Что WebGPU раскрывает об ОС и драйвере
Помимо идентификации GPU, WebGPU раскрывает контекст графического стека:
- В Windows по WebGPU видно, используется ли Direct3D 11 или Direct3D 12, а это коррелирует с версией ОС и поколением драйвера.
- В macOS поддерживаемая версия Metal выдаёт версию macOS — потому что версии Metal поставляются с обновлениями системы.
- В Linux уровни поддержки Vulkan выдают дистрибутив и происхождение драйвера (например, проприетарный NVIDIA против открытого Mesa).
Ни один из этих сигналов не является прямым — каждый требует интерпретации. Но вместе они складываются в картину программного стека, которая должна коррелировать с заявленным отпечатком браузера. Расхождения указывают на подделку.
Сроки внедрения в стеки детекции
В 2026 году фингерпринтинг WebGPU ещё не стал массовой техникой детекции — по трём причинам:
- Поддержка в браузерах всё ещё стабилизируется. WebGPU в Firefox вышел в 2024-м, но с ограниченным покрытием функций. В Safari WebGPU вышел в 2024-м, но с лимитами, отличными от Chrome. Системам детекции нужно широкое покрытие, прежде чем полагаться на сигналы WebGPU.
- Реальная поддержка WebGPU у пользователей всё ещё неполна. У старых устройств нет GPU с поддержкой функций WebGPU. Система детекции, штрафующая посетителей без WebGPU, рискует блокировать легитимных пользователей на пятилетнем железе.
- Антидетект-браузеры ещё не выстроили полноценную подделку WebGPU, а значит, сигналы на его основе сейчас эффективны против изощрённых атакующих, уверенных, что они замели следы. Это изменится по мере роста внедрения детекции и ответной доработки инструментов подделки.
Горизонт внедрения в 2–3 года выглядит реалистично. К 2027–2028 годам сигналы WebGPU станут для детекции ботов такими же центральными, как сегодня WebGL. Вопрос для команд детекции — когда начинать собирать данные WebGPU, и ответ здесь: сейчас, чтобы к моменту, когда эти сигналы станут основными, уже была историческая база.
Что это значит для защищающихся
Фингерпринтинг на Canvas — зрелая техника. Фингерпринтинг на WebGL — зрелая техника. Обе активно подделываются антидетект-инструментами, и с приемлемым для атакующих успехом.
Фингерпринтинг на WebGPU — техника молодая. Инструменты подделки за ней не поспели. Это создаёт окно — вероятно, 18–36 месяцев, — в котором сигналы WebGPU чисто отделяют настоящих пользователей от изощрённых ботов. В это окно стоит вложиться.
Сигналы, которые он даёт, к тому же структурно труднее подделать, чем Canvas или WebGL. Рендеринг можно перехватить. Производительность вычислений — нет. О наборах функций можно солгать, но не согласованно по всей поверхности API. Каждое поколение техник фингерпринтинга повышает цену подделки. WebGPU повышает её существенно.
Для платформ, серьёзно относящихся к детекции ботов в 2026 году и дальше, сигнал смещается именно в сторону WebGPU.