Canvas и WebGL спуфят не подменой, а сохранением внутренней согласованности
Разберем энтропию данного параметра: антифрод редко валит Canvas или WebGL по одному признаку. Он сравнивает отпечаток с соседними слоями — шрифты, DPR, GPU-строку, тайминги рендера, поведение readPixels. Если Canvas «новый», а WebGL оставляет след реальной видеокарты, профиль рассыпается.
Корректный спуфинг строится на трёх правилах:
— подменяйте не только drawImage, но и методы получения данных: toDataURL, getImageData, readPixels;
— шум должен быть детерминированным внутри профиля, иначе между запросами появятся скачки;
— искажение обязано быть малым: несколько бит в байтовом буфере, без артефактов по краям фигур и текста.
В WebGL чаще палятся не пиксели, а несостыковки окружения: vendor/renderer не совпадает с семейством GPU, список extensions слишком «богат» или, наоборот, урезан не по профилю, параметры precision в шейдерах дают не тот диапазон. Под капотом Chromium API это лечится только целостной моделью: одинаковая маска для WebGL, Canvas, AudioContext и client hints.
Практика простая: сначала снимите эталон с реального устройства, потом воспроизводите его как набор зависимостей, а не как отдельную строку. Спуфинг через инъекцию JS-кода работает только если он не создаёт новой математики отпечатка. Иначе детект на уровне сетевого стека добирает то, что вы не успели сломать в браузере.
Антидетект: эксперт
@antidetect_expert_arb
Canvas и WebGL спуфят не подменой, а сохранением внутренней согласованности
Этот пост опубликован в Telegram-канале Антидетект: эксперт. Подписаться можно по ссылке: @antidetect_expert_arb.