Canvas и WebGL спуфятся только тогда, когда их ломают несогласованно
Разберем энтропию данного параметра: антифрод редко смотрит на один Canvas или один gl.getParameter. Он сравнивает цепочку признаков — размер шрифта, fallback-рисунок, порядок рендера, vendor/renderer, precision в шейдерах, шум в пикселях и совпадение с аудио/платформой. Если менять только картинку, а TLS, UA и список расширений остаются чужими, профиль всплывает по корреляции.
Рабочая модель — не «рандом», а стабильная имитация устройства. Для Canvas важны: детерминированный seed на профиль, одинаковый шум для одинаковых условий, отсутствие скачков между вкладками и сохранение локальной консистентности в 2D/WebGL. Для WebGL — согласованные vendor, renderer, supported extensions, unmasked parameters и поведение шейдеров; особенно опасны редкие комбинации, которые не встречаются в реальном железе.
Спуфинг через инъекцию JS-кода должен перехватывать API на уровне раннего init, а не после загрузки страницы. Иначе сайт успеет снять исходный отпечаток через OffscreenCanvas, toDataURL, readPixels или createImageBitmap. Отдельно проверяйте, чтобы патч не ломал тайминги: лишние try/catch, тяжелые преобразования буфера и асимметрия между main thread и worker — это тоже сигнатура.
Минимальный чек: один профиль = один набор значений; одинаковый результат на повторном визите; совпадение Canvas/WebGL с платформой и GPU-профилем; отсутствие «идеально случайного» шума; тест через CreepJS, Pixelscan и BrowserLeaks до запуска в работу.
Если спуфинг не выдерживает повторяемость, его видят быстрее, чем сам отпечаток.
Антидетект: эксперт
@antidetect_expert_arb
Canvas и WebGL спуфятся только тогда, когда их ломают несогласованно
Этот пост опубликован в Telegram-канале Антидетект: эксперт. Подписаться можно по ссылке: @antidetect_expert_arb.