
Пока рынок накрутки спорит о Canvas и WebGL, Яндекс и антибот-системы уже считывают параметр, которого нет в чек-листах трёхлетней давности, — WebGPU-отпечаток. Это новый графический API, пришедший на смену WebGL, и он отдаёт о видеокарте и драйверах в разы больше данных, чем предшественник. Беда в том, что большинство антидетект-браузеров научились подменять WebGL, но WebGPU у них либо не тронут вовсе, либо подменён небрежно — и ферма профилей, безупречная по старым параметрам, склеивается в один кластер по новому.
Разберём на инженерном уровне, что именно отдаёт WebGPU, почему он информативнее WebGL, как антифрод превращает его в детектор фермы, и что нужно проверить в своём инструменте прямо сегодня. Это продолжение цикла про отпечатки — рядом читайте про Canvas и WebGL и аппаратный отпечаток железа.
Что такое WebGPU и почему он опаснее WebGL
WebGPU — современный стандарт доступа браузера к графическому процессору. В отличие от WebGL, который был надстройкой над устаревшим OpenGL ES, WebGPU работает ближе к «железу» через нативные API системы (Vulkan, Metal, Direct3D 12). Для разработчика игр это производительность, а для антибот-системы — подробнейший паспорт видеокарты и драйвера, который сайт получает без всяких разрешений.
Ключевое отличие от WebGL в объёме и точности данных. WebGL отдавал строку вендора и модель рендерера — по сути пару текстовых полей, которые легко подменить. WebGPU отдаёт структурированный набор лимитов и возможностей адаптера: десятки числовых параметров, описывающих, что конкретно умеет данный GPU с данным драйвером. Подделать одно текстовое поле просто. Подделать согласованный набор из десятков чисел так, чтобы он соответствовал реально существующей видеокарте, — задача другого уровня.
WebGL спрашивал у видеокарты «как тебя зовут». WebGPU снимает с неё полную анкету: лимиты, форматы, разрядность, поддерживаемые функции. Соврать в анкете на десятки пунктов, не противореча себе, почти невозможно.
Из чего складывается WebGPU-отпечаток
Когда страница запрашивает адаптер через navigator.gpu.requestAdapter(), она получает объект, из которого извлекаются:
- Информация об адаптере — вендор, архитектура, описание устройства, тип (дискретная карта, интегрированная, программный рендер).
- Лимиты (limits) — десятки числовых ограничений: максимальный размер текстуры, число привязок, размер буферов, размер рабочей группы вычислительного шейдера и так далее. У каждой связки «GPU + драйвер» набор этих чисел свой.
- Features — список поддерживаемых возможностей: сжатие текстур определённых форматов, работа с глубиной, шейдерные расширения. Набор зависит от поколения карты и версии драйвера.
- Результат вычислений — можно прогнать шейдер и снять хеш результата, как это делали с Canvas: мельчайшие различия в математике GPU дают стабильный уникальный отпечаток.
- Доступность самого API — есть ли WebGPU вообще, и если нет, то почему: отключён, не поддерживается, заблокирован.
Таблица: WebGL против WebGPU как детектора
| Параметр | WebGL (старый детектор) | WebGPU (новый детектор) |
|---|---|---|
| Что отдаёт | вендор и рендерер — 2 строки | вендор, архитектура, десятки лимитов, features |
| Объём данных | низкий | высокий, структурированный |
| Сложность подмены | простая (текст) | высокая (нужна согласованность чисел) |
| Покрытие антидетектами | закрыт почти везде | часто не закрыт или закрыт формально |
| Ценность для антифрода | средняя (все подменяют) | высокая (мало кто подменяет) |
| Возможность хеша вычислений | есть | есть, точнее |
Обратите внимание на предпоследнюю строку — в ней вся суть. Для антифрода ценен не тот сигнал, который технически сложнее, а тот, который реже подменяют. Именно поэтому редко закрываемые параметры дают самые чистые кластеры ботов, как мы разбирали в материале про AudioContext-фингерпринт.
Как антифрод использует WebGPU против фермы
Механика та же, что и с другими отпечатками, но результат жёстче из-за богатства данных:
- Сбор. Счётчик или антибот-скрипт запрашивает адаптер и снимает полный набор параметров плюс хеш вычислений.
- Кластеризация. Визиты группируются по совпадению WebGPU-профиля. Если сорок «разных пользователей» отдают бит-в-бит одинаковые лимиты и один хеш — это одна машина.
- Проверка согласованности. Заявленный в WebGPU адаптер сверяется с тем, что говорят WebGL, user-agent и аппаратный отпечаток. Профиль, где WebGL рапортует мобильный GPU, а WebGPU — десктопный адаптер, разваливается мгновенно.
- Поиск невозможных комбинаций. Набор лимитов должен соответствовать реально существующему железу. Случайно сгенерированные числа дают конфигурацию, которой не существует в природе, — и это ловится сверкой с базой эталонов.
Особый случай: WebGPU отключён у всех профилей
Популярный «способ защиты» — отключить WebGPU целиком. Логика понятна: нет API — нет отпечатка. Но статистика играет против вас. В современных браузерах WebGPU включён по умолчанию, и доля живых пользователей без него невелика. Когда вся ваша ферма приходит без WebGPU, вы не прячетесь в толпе, а формируете собственную аномальную группу. Это та же ошибка, что с блокировкой Web Audio: отключение не маскирует, а выделяет.
Таблица: живое устройство против небрежной фермы
| Признак | Живая аудитория | Ферма без маскировки WebGPU |
|---|---|---|
| Адаптер | разные вендоры и модели | один и тот же у всех |
| Лимиты | разброс по поколениям карт | идентичный набор чисел |
| Хеш вычислений | широкое распределение | 2–3 значения на тысячи визитов |
| Согласованность с WebGL | полная | рассинхрон мобильный/десктоп |
| Наличие API | есть у большинства | отключён у всех (аномалия) |
| Тип адаптера | реальные GPU | программный рендер / виртуальный |
Почему старые антидетекты не спасают
Антидетект-браузеры создавались в эпоху, когда графический отпечаток сводился к WebGL. Их движки умеют подменять строки вендора и рендерера, добавлять шум в Canvas — и на этом исторически всё заканчивалось. WebGPU появился позже, и разработчики инструментов закрывают его с задержкой. На практике встречаются три состояния:
- WebGPU не тронут вообще. Профиль честно отдаёт реальный адаптер хост-машины. Вся ферма на одном сервере = один адаптер у всех.
- WebGPU отключён. Аномалия, о которой писали выше.
- WebGPU подменён формально. Меняется строка вендора, но лимиты остаются от реального железа или генерируются случайно, создавая несуществующую конфигурацию.
Именно поэтому выбор инструмента сегодня решает больше, чем год назад. Подробный разбор инструментов — в статье про антидетект-браузеры, а о радикальной альтернативе — в материале про реальные устройства, где проблема снимается сама собой: у настоящего телефона WebGPU настоящий.
Как правильно закрывать WebGPU
Подмена целостным профилем реального GPU
Правильный подход — не рандомизировать числа, а подставлять эталонный набор от реально существующей видеокарты: вендор, архитектура, лимиты и features одной конкретной модели с конкретной версией драйвера. Тогда конфигурация проходит сверку с базой реального железа.
Согласованность со всей связкой
WebGPU обязан рассказывать ту же историю, что WebGL, user-agent, разрешение экрана и аппаратный отпечаток. Если профиль заявляет флагманский Android — у него должен быть мобильный адаптер и в WebGL, и в WebGPU, с соответствующими лимитами. Рассинхрон между двумя графическими API — грубейшая ошибка, потому что проверяется одной строкой кода.
Стабильность профиля во времени
Один профиль = одно железо навсегда. Если при повторном визите с теми же куками WebGPU отдаёт другой адаптер, это признак генерации на лету. Профиль ведётся стабильно весь цикл накрутки, как и все прочие параметры.
Естественное распределение по ферме
Модели видеокарт по парку профилей должны распределяться как в реальной популяции: много интегрированной графики и распространённых мобильных чипов, меньше топовых дискретных карт. Ферма, где у всех профилей флагманский GPU, статистически невозможна.
Шум в вычислительном хеше
Как и с Canvas, выходной результат шейдерных вычислений стоит сдвигать детерминированным микрошумом, уникальным для профиля и стабильным во времени. Без этого даже при разных заявленных адаптерах хеш вычислений может совпасть.
Как проверить свои профили за десять минут
- Откройте с двух-трёх профилей страницу, выводящую
navigator.gpu: наличие API, данные адаптера, лимиты. Значения обязаны различаться между профилями. - Убедитесь, что WebGPU вообще доступен — «немой» профиль без API подозрителен.
- Сверьте адаптер WebGPU с рендерером WebGL: они должны описывать одно устройство.
- Проверьте тип адаптера — не программный рендер и не виртуальный адаптер.
- Повторите проверку через сутки на тех же профилях: параметры не должны измениться.
- Оцените разброс по ферме: если у всех один и тот же набор лимитов — маскировки нет.
Разбор кейса: чистая ферма, которая склеилась по GPU
Проект в конкурентной нише работал на дорогом антидетекте и мобильных прокси. Canvas, WebGL, аудио, железо, гео — всё было закрыто и проверено, поведение нейросетевое. Первые недели шёл рост, затем эффект начал угасать, а доля отсеиваемых сессий расти. Стандартная диагностика ничего не находила: по всем привычным параметрам профили были уникальны.
Проблему нашли, когда прогнали профили через свежий фингерпринт-тест с поддержкой WebGPU. Оказалось, что версия антидетекта закрывала WebGL, но не трогала WebGPU вовсе: все сорок профилей честно отдавали адаптер хост-сервера с идентичным набором лимитов. Для антифрода это был идеальный кластер: сорок «разных людей» с одной видеокартой, одними лимитами и одним хешем вычислений.
После обновления инструмента до версии с полноценной подменой WebGPU и перенастройки профилей на эталонные конфигурации реальных GPU отсев прекратился, а позиции восстановились в течение месяца. Вывод: чистота по вчерашнему списку параметров не означает чистоту сегодня — список растёт, и проверять нужно по актуальному.
Частые ошибки
- Игнорировать WebGPU. «Мы закрыли WebGL, этого хватит» — типовое заблуждение, дающее кластер клонов.
- Отключать API целиком. Создаёт аномальную группу вместо маскировки.
- Случайные лимиты. Генерация чисел наугад даёт несуществующие конфигурации, которые ловятся сверкой с эталонами.
- Рассинхрон с WebGL. Два графических API, описывающих разные устройства, — мгновенное палево.
- Плавающий адаптер. Смена GPU у профиля между визитами выдаёт генерацию на лету.
Частые вопросы
Все ли антидетекты уже закрывают WebGPU? Нет. Ситуация меняется, но на рынке до сих пор много версий, где WebGPU не тронут или подменён формально. Проверять нужно не по обещаниям на сайте инструмента, а собственным тестом на своих профилях.
Насколько это критично по сравнению с Canvas? Сегодня — критичнее, именно потому что Canvas подменяют почти все, а WebGPU почти никто. Ценность сигнала для антифрода обратно пропорциональна тому, насколько массово его закрывают.
Решают ли проблему реальные устройства? Да, полностью: у физического смартфона WebGPU настоящий и естественно уникальный, подделывать нечего. Это ещё один аргумент в пользу гибридной схемы, где ядро трафика идёт с реальных устройств.
Что делать прямо сейчас? Прогнать свои профили через актуальный фингерпринт-тест с проверкой WebGPU. Если у всех один адаптер — это ваша главная точка отказа, и чинить надо её, а не докупать прокси.
Вывод
WebGPU — это отпечаток нового поколения, который отдаёт не пару строк, как WebGL, а развёрнутую анкету видеокарты: вендор, архитектуру, десятки лимитов, список возможностей и хеш вычислений. Подделать такой набор согласованно намного сложнее, а главное — его до сих пор закрывают единицы, что делает его идеальным инструментом кластеризации ферм для антифрода Яндекса. Правильная работа — это подмена целостным профилем реально существующего GPU, полная согласованность с WebGL и остальной связкой, стабильность во времени, естественное распределение моделей по ферме и детерминированный шум в вычислительном хеше. И главный практический вывод: список параметров, по которым вас проверяют, растёт каждый год, поэтому «мы всё закрыли» — утверждение со сроком годности.
Больше о поведенческом продвижении и других услугах — на главной странице ProfSEO24.
Закажите накрутку ПФ в ProfSEO24
Выводим сайты в ТОП-1 Яндекса за счёт поведенческих факторов на базе ИИ — без риска фильтров. Более 300 сайтов в ТОП-1, первые сдвиги по позициям за 3 дня. Рассчитаем стоимость под вашу нишу и регион.
Заказать накрутку ПФ Написать в TelegramКомментарии
Артём Гладков
Прогнал ферму через свежий тест — у всех 25 профилей один адаптер в WebGPU. Антидетект дорогой, WebGL закрыт, а про WebGPU разработчики видимо забыли. Спасибо, нашёл дыру.
dev_nastya
А можно просто отключить WebGPU флагом в браузере? Вроде нет API — нет отпечатка.
Admin
Настя, можно, но это работает против вас. В современных браузерах WebGPU включён по умолчанию, и профилей без него в живой популяции мало. Отключив API на всей ферме, вы не растворяетесь в толпе, а создаёте отдельную аномальную группу «пользователей без WebGPU». Ровно та же история была с отключением Web Audio. Правильнее иметь нормальный, но подменённый адаптер.
Сергей М.
Лимиты адаптера — вот это жесть. Одно дело строку вендора подменить, другое — согласованный набор из десятков чисел под реальную карту.
Ольга Т.
Правильно поняла, что рандомить лимиты нельзя? Думала просто разброс сделать по числам.
Admin
Ольга, именно так — рандом тут хуже, чем ничего. Лимиты не независимые числа, они жёстко связаны между собой и с конкретной моделью GPU. Случайный набор даёт конфигурацию, которой не существует ни в одной видеокарте мира, и это вскрывается сверкой с базой эталонов. Нужно брать готовый профиль реальной карты целиком и подставлять его.
proxy_pro
Ценность сигнала обратно пропорциональна массовости его закрытия — золотая формула. Поэтому редкие параметры и дают самые чистые кластеры.
Виктор Панин
Кейс один в один мой. Всё закрыто по старому чек-листу, а эффект гас. Полез в WebGPU — там реальный адаптер сервера у всех. Обновляю инструмент.
Ирина К.
Рассинхрон WebGL и WebGPU — самое обидное. Два API про одну видеокарту, а рассказывают разное. Проверяется одной строкой, а ловит намертво.
Дмитрий Л.
Вопрос: а на реальных телефонах эта проблема вообще есть? Или там всё честно по определению?
Admin
Дмитрий, на реальных устройствах проблемы нет вообще: WebGPU отдаёт настоящий адаптер настоящего чипа, и у разных телефонов он естественно разный. Подделывать нечего — отпечаток честный. Это как раз тот случай, когда девайс-ферма снимает целый класс задач. Но и стоит соответственно, поэтому чаще используют гибрид: реальные устройства под ключевые запросы, качественная эмуляция на объём.
Наталья В.
Распределение моделей карт по ферме как в реальной популяции — тонкий момент. У всех флагманский GPU это же нонсенс, у людей в основном интегрированная графика.
webmaster_ufa
Хеш шейдерных вычислений — это же Canvas по сути, только на GPU. И его тоже мало кто шумит. Ещё одна дыра.
Максим
«Мы всё закрыли» — утверждение со сроком годности. Прям в рамку. Каждый год список растёт, а люди работают по чек-листу трёхлетней давности.
Елена С.
А как часто вообще надо перепроверять профили на новые параметры? Раз в полгода хватит?
Admin
Елена, полгода — слишком редко. Практика такая: базовую проверку профилей делать ежемесячно, а после каждого крупного обновления браузерного движка или заметных колебаний в качестве трафика — внепланово. Новые векторы детекта появляются быстрее, чем раз в полгода, и WebGPU тому пример: год назад его почти не проверяли, сегодня он один из самых информативных.
Роман Ф.
Программный рендер вместо реального GPU — та же беда что в WebGL была. Headless выдаёт себя и тут.
Admin
Роман, верно, и в WebGPU это видно даже нагляднее: у адаптера есть явный тип, и программный рендер честно себя объявляет. Живой пользователь с софтверным рендерером — большая редкость, поэтому такой профиль сразу в подозрении. Лечится запуском с реальным GPU или корректной подменой адаптера на аппаратный.
gpu_hunter
Лучший материал по теме в рунете. Про WebGPU в контексте накрутки вообще никто не пишет, а это сейчас главная точка отказа. Забрал чек-лист проверки.