Canvas и WebGL ломаются не шумом, а несогласованностью слоёв отпечатка
Canvas и WebGL часто спуфят «в лоб»: подменяют одну строку в getParameter или рисуют псевдослучайный шум в toDataURL. Под капотом Chromium API это быстро ловится, потому что профиль начинает расходиться с остальными источниками: размер буфера, частота рендера, шрифты, цветовой путь, поведение readPixels.
Разберем энтропию данного параметра: корректный спуфинг должен быть детерминированным на уровне сессии и связанным с профилем, а не с каждым вызовом. Иначе CreepJS видит дрожание значений, а антифрод — аномальную нестабильность. Особенно плохо выглядит «универсальный» шум, который меняет LSB-паттерн и оставляет следы в гистограмме пикселей.
Для WebGL важнее не только vendor/renderer, но и согласование с расширениями, precision mediump/highp, limits по MAX_TEXTURE_SIZE, а также с поведением shader compilation. Для Canvas безопаснее модифицировать итоговый bitmap минимальным, повторяемым сдвигом, чем вставлять случайные пиксели. Спуфинг через инъекцию JS-кода должен перехватывать API точечно: не ломать прототипы, не трогать сериализацию и не создавать лишние исключения.
Проверка простая: сравнивайте Canvas, WebGL, AudioContext и TLS Client Hello как единый стек. Если меняется только один слой — детект на уровне сетевого стека и браузерной телеметрии собирает пазл быстрее, чем кажется.
Правило одно: подменяйте не «значение», а модель поведения; иначе отпечаток станет заметнее оригинала.
Антидетект: эксперт
@antidetect_expert_arb
Canvas и WebGL ломаются не шумом, а несогласованностью слоёв отпечатка
Этот пост опубликован в Telegram-канале Антидетект: эксперт. Подписаться можно по ссылке: @antidetect_expert_arb.