Как проверить профиль браузера, прежде чем доверить ему аккаунт
Самая частая ошибка в этой теме - принимать оценку детектора за отметку. Вы запускаете whoer.net, видите высокий процент и делаете вывод, что профиль безопасен.
Страницы с оценкой полезны, но они отвечают на вопрос «насколько вы необычны», а система оценки риска спрашивает не это. Она спрашивает, согласуются ли ваши сигналы друг с другом. Совершенно обычная машина на Windows, сообщающая шрифты MacBook, не необычна ни по одному отдельному измерению. Она невозможна в сочетании, а невозможное определяется куда легче необычного.
Пройдите по списку до того, как аккаунт станет чего-то стоить.
1. User agent против платформы
Самое дешёвое противоречие и создать, и поймать. Если UA заявляет Windows, navigator.platform обязан быть Win32, и client hint Sec-CH-UA-Platform должен говорить то же самое. Три места, один ответ.
console.log(navigator.userAgent, navigator.platform, navigator.userAgentData?.platform)
2. Часовой пояс против выходного IP
Если прокси выходит во Франкфурте, а Intl.DateTimeFormat().resolvedOptions().timeZone говорит America/New_York, одного этого достаточно. Хуже того, это проверяется на стороне сервера вообще без JavaScript - достаточно сопоставить гео вашего IP с присланной вами меткой времени.
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone, new Date().getTimezoneOffset())
Привязывайте часовой пояс к прокси, а не к своему ноутбуку. Всё, что заставляет выставлять это вручную, рано или поздно будет выставлено неверно.
3. Язык против всего остального
navigator.language, заголовок Accept-Language и страна IP должны складываться в правдоподобную историю. Совпадать в точности они не обязаны, множество реальных людей ходят в сеть на втором языке, но немецкий IP плюс en-US плюс американская локаль в Intl - шаблон, частый у прокси и редкий у людей.
4. Рендерер WebGL против остального устройства
Самое информативное отдельное поле и чаще всего неверное. Проверьте, что:
- Строка рендерера называет видеокарту, которая действительно выпускается.
SwiftShader,llvmpipeилиMesaна машине, называющей себя обычным ноутбуком на Windows, - признак headless. - Вендор и рендерер согласованы между собой, и оба - с заявленной ОС.
ANGLE (Intel, Intel(R) Iris(R) Xe Graphics ...)осмысленно на Windows и бессмысленно на macOS. - Заявленное разрешение экрана и объём памяти правдоподобны для этого класса видеокарт.
5. Шрифты против ОС
Списки шрифтов сильно опознают, а межплатформенные ошибки очевидны. Профиль, заявляющий Windows, должен иметь виндовый набор (Segoe UI и компания) и не должен иметь гарнитур, которые бывают только на macOS. Это один из самых сильных признаков того, что отпечаток собран из деталей, а не снят с одной машины.
6. Canvas и аудио: стабильны, не отсутствуют, не шумят
Три вида отказа, два из которых вы устраиваете себе сами:
- Отсутствуют (заблокированы или подменены константой): крошечная подозрительная группа.
- Случайны при каждом вызове: хуже. Настоящее железо детерминировано. Если хеш canvas меняется между двумя чтениями в одной сессии, вы объявили, что подменяете его.
- Общие: тысячи профилей с одинаковым хешем - это свой собственный кластер.
Прочитайте значение дважды за сессию. Оно обязано совпасть. Прочитайте в новой сессии того же профиля. Снова обязано совпасть.
7. Утечки WebRTC
WebRTC может раскрыть локальные и публичные адреса через ICE-кандидатов независимо от вашего прокси. Если он выдаёт ваш настоящий IP, всё остальное в этом списке не имеет значения.
8. Признаки автоматизации
navigator.webdriver должен быть false. Дальше - артефакты CDP, отсутствующий или неправильный объект chrome, разрешения, отвечающие вразрез с состоянием уведомлений, и аномальный массив плагинов.
9. То, что не проверяет никто: переживёт ли это перезапуск
Всё перечисленное выше - снимок. Вопрос, от которого зависит выживание аккаунта, в другом: остаётся ли профиль той же машиной завтра.
Закройте браузер. Откройте тот же профиль. Прогоните проверки заново. Хеш canvas, рендерер WebGL, шрифты, аудио и часовой пояс обязаны совпасть байт в байт. Если что-то поплыло, сайт видит вернувшегося пользователя, у которого за ночь сменилось железо, а это сигнал сильнее большинства отдельных признаков выше.
Именно здесь проваливается подход «случайный отпечаток на каждый запуск». Он оптимизирует снимок и теряет личность.
Где всё это прогонять
- whoer.net - взгляд на IP, часовой пояс и определение прокси.
- CreepJS на abrahamjuliot.github.io/creepjs - глубокая проверка согласованности, включая выявление лжи между контекстами; это ближайший публичный аналог того, что делает настоящая система оценки риска.
- Тот сайт, который вам действительно нужен. Ни один универсальный детектор не предскажет решение конкретного вендора. Если вам надо пройти определённую стену, эта стена и есть тест.
Потом проверьте тот же профиль через неделю
Прогоните список, пользуйтесь профилем обычным образом неделю, прогоните ещё раз. Дрейф - это тот вид отказа, который имеет значение и которого не видно за один прогон.
Если вам нужен профиль, согласованный по построению, а не собранный вручную, AntiBrow снимает каждый целиком и применяет его в движке браузера. Локальных профилей неограниченно, без карты, так что этот чек-лист можно прогнать по нему до того, как поверить хоть одному слову выше.
Попробуйте на бесплатном тарифе.
Неограниченное число локальных профилей, без карты. Проверьте результат детекторами сами.