GL_RENDERER и Vendor strings: где WebGL сдаёт железо и драйвер
WebGL-окружение передаёт больше данных, чем кажется: достаточно пары строк, чтобы сузить профиль устройства до класса GPU, семейства драйвера и иногда до конкретной виртуализации. Анализируем энтропию параметров, а не только сами значения.
Ключевые поля для осмотра:
— GL_RENDERER и GL_VENDOR: часто выдают реальный стек рендера, а не то, что ждёт сайт
— UNMASKED_RENDERER_WEBGL и UNMASKED_VENDOR_WEBGL: расширения обычно снимают часть маскировки
— список supported extensions: набор редко совпадает у разных комбинаций GPU/ОС/драйвера
— precision formats и limits: мелкие расхождения создают стабильную сигнатуру на уровне syscall-следа браузера
Опасная ошибка — проверять только одну строку. Фингерпринт строится по корреляции: vendor + renderer + extensions + canvas behavior + WebGL2 limits. Если один параметр «шумит», остальные стабилизируют идентификатор. Браузерное окружение передает больше данных, чем кажется.
Для защиты важна не подмена одного поля, а согласованность всего набора. Несовпадение между заявленным GPU и списком расширений, между renderer и шейдерными ограничениями, между WebGL1 и WebGL2 — это уже аномалия, а не маскировка.
Скрытность — это не отсутствие следов, это шум, сливающийся с фоном. Проверяйте целостность WebGL-профиля целиком, иначе один «спрятанный» vendor только усилит детект.
Fingerprint-кузница
@fingerprint_forge_ubt
GL_RENDERER и Vendor strings: где WebGL сдаёт железо и драйвер
Этот пост опубликован в Telegram-канале Fingerprint-кузница. Подписаться можно по ссылке: @fingerprint_forge_ubt.