Объяснение

Как работает снятие отпечатков браузера

Прежде чем прочитать ваши cookie, сайт измеряет ваш браузер: что рисует его графический стек, как звучит звуковой, какие часы он держит. Эти измерения и есть отпечаток, а причина, по которой аккаунты связывают друг с другом, почти никогда не одно неверное значение — это набор значений, которые между собой не сходятся.

Отпечаток — не одно число. Это несколько десятков свойств, которые страница читает за миллисекунды, без разрешения и не оставляя следа, и ценность их для сайта в том, что они переживают очистку cookie и смену IP. Эта страница разбирает, что именно измеряют, почему непротиворечивость важнее сокрытия и где Argus подставляет свои ответы.

Измерение

Что сайт читает на самом деле

Интереснее всего сигналы, под которыми лежит железо. Если попросить две машины нарисовать одну и ту же фигуру, пиксели выйдут чуть разными: различаются видеокарта, драйвер и растеризатор шрифтов, — страница берёт от результата хеш и получает число, устойчивое для вашего устройства и редкое среди всех остальных. Тот же приём работает со звуковым стеком. Рядом с ними лежат декларативные свойства: платформа, языки, часовой пояс, геометрия экрана, объём памяти, число ядер процессора.

Ничего экзотического или скрытого здесь нет. Каждое из этого — документированный веб-API, делающий ровно то, для чего он задуман, и именно поэтому блокировать их не вариант: браузер, отказывающийся сообщить размер экрана, заметнее того, что сообщает обычный размер экрана. Argus закрывает эти поверхности:

  • Canvas, WebGL (включая сообщаемые vendor и renderer) и звук
  • Платформа, языки, часовой пояс, экран, объём памяти устройства и число ядер процессора

Отпечатки

Одно расходящееся значение портит весь набор

Вот на чём люди теряют аккаунты. Отпечаток оценивают как набор, и важна не проверка «необычное ли это значение», а проверка «описывают ли эти значения машину, которая могла бы существовать». User-agent, заявляющий macOS, рядом с метаданными UA-CH, где написано Windows, не описывает ни одного реального компьютера. Как и устройство с экраном 4K, двумя ядрами процессора и часовым поясом в трёх часах от собственного исходящего IP.

Случайные значения на каждый профиль делают только хуже: чем больше полей вы перемешиваете независимо друг от друга, тем вероятнее, что два из них разойдутся. Поэтому Argus собирает личность как единое целое — Аппаратная личность генерируется для каждого профиля целиком и согласованно — так, чтобы ничто ничему не противоречило.

  • Пресеты Windows, macOS и Linux, а user-agent и метаданные UA-CH генерируются им под стать
  • Платформа, число ядер, память, экран, часовой пояс и языки создаются вместе, как один непротиворечивый набор

Сетевая половина той же задачи — адрес, с которого приходит сессия, и изнутри браузера никакая работа с отпечатками её не решает. Для этого есть прокси на каждый профиль.

Браузер

Где подставляется значение

Большинство антидетект-инструментов управляет браузером, который они не собирали, поэтому вмешаться они могут только в JavaScript: расширение или внедрённый скрипт подменяет настоящую функцию обёрткой, возвращающей другой ответ. Это работает ровно до того момента, когда страница посмотрит на саму обёртку. Переприсвоенная нативная функция больше не приводится к строке как нативная, меняются прототипы и дескрипторы свойств, и обёртка сама становится уликой: страница теперь знает не только то, что вы что-то прячете, но и то, что вы из тех посетителей, которые прячут.

Argus поставляет собственную сборку Chromium, поэтому подмена происходит слоем ниже. Личность применяется ниже страницы — там, где скрипт не сможет заглянуть в обход.

  • Скрипт видит подменённое значение потому, что другого там просто нет, а не потому, что обёртка спрятала настоящее

Страница допрашивает рендерер и получает один ответ.

Отпечатки

Четыре режима, на каждую поверхность

Подменять всё — не автоматически самая безопасная настройка, поэтому каждая поверхность настраивается отдельно, а не одним общим переключателем.

  • Каждая поверхность работает в одном из четырёх режимов: настоящий, шум, выключено или вручную

Real пропускает собственный ответ машины — это то, что нужно там, где ваше железо ничем не выделяется. Noise искажает результат так, что хеш у каждого профиля свой, а вывод по-прежнему выглядит как то, что произвела видеокарта. Off отказывает поверхности. Manual закрепляет ровно то значение, которое вы впишете, — на случай, когда профиль должен и дальше сообщать то же, что сообщал месяц назад.

Отпечатки

Пресеты, закрепление и повторный бросок

Новый профиль получает непротиворечивую личность без каких-либо действий с вашей стороны; редактор нужен для тех частей, которые вы хотите решить сами.

  • Редактор в каждом профиле — для тех значений, которые вы хотите задать сами
  • Перегенерация в один клик даёт новую личность, сохраняя вашу конфигурацию

Повторный бросок важнее, чем кажется. Когда личность профиля должна смениться — старт с чистого листа после блокировки, профиль, переданный другому клиенту, — вам нужны новая аппаратная личность и тот же прокси, те же cookie, теги и заметки. Один клик делает это, вместо того чтобы удалять профиль и восстанавливать его настройки по памяти.

Доказательство

Проверьте сами — и знайте, что именно доказывает проверка

Всё сказанное выше — аргумент. Рынок, для которого написана эта страница, не решает споры прозой: он открывает чекер. Так и сделайте: откройте профиль, зайдите в один из них и прочитайте результат сами. Внимания стоят четыре. CreepJS — самый суровый и единственный, кто оценивает внутреннюю согласованность, а не список значений; Whoer — тот, на который операторы чаще всего ссылаются друг другу; BrowserLeaks — чтобы прочитать одну поверхность в отдельности: canvas, WebGL, звук; и Pixelscan, который пристальнее всех смотрит, сходятся ли адрес и устройство.

И прочитайте число честно, потому что оценка — это не приговор. Чекер измеряет то, что видит страница, и сверяет это само с собой. Зелёный результат означает, что личность, которую страница может прочитать, непротиворечива. Он не доказывает, что конкретный сайт не пометит аккаунт, и ничего не говорит о внутренностях браузера, до которых чекер не дотягивается. Кто обещает второе, исходя из первого, что-то вам продаёт. Зато два провала с этой страницы, которые чекер действительно поймает, ловить стоит: значение, противоречащее соседним, и кандидат WebRTC с вашим настоящим адресом.

Argus поставляет ту же проверку как инструмент — версию, которая масштабируется дальше одного профиля. Она измеряет то, что на самом деле видит страница внутри запущенного профиля: кандидатов WebRTC, часовой пояс, язык, user agent, платформу, экран, железо, строки WebGL, хеши шума, — сверяет каждое с личностью, которую лаунчер объявил для этого профиля, и помечает расходящиеся. Она есть в локальном API и как инструмент для агента, так что проверить двести профилей — это цикл, а не полдня. Ограничения у неё те же, что названы выше, и она говорит об этом в собственном описании, а не в сноске.

Честно

Чего отпечаток не исправит

Непротиворечивая личность отвечает на один из трёх вопросов, которые сайт задаёт на входе. С двумя другими она не делает ничего, и схема, которая ошибается в них, проваливается независимо от того, насколько хорош отпечаток.

Второй вопрос — адрес. Профиль, показывающий варшавское устройство и приходящий с серверного диапазона во Франкфурте, противоречит себе ещё до того, как страница догрузится. Сетевую половину разбирает как работают прокси в Argus — включая то, как покупать прокси, которые переживут нужные вам сайты.

Третий — состояние. Два профиля с безупречными и совершенно разными отпечатками всё равно один аккаунт, если у них общая банка cookie, общий кэш или общая регистрация service worker'а. На диске их разводит изоляция профилей.

Готовы запускать профили в масштабе?

Скачайте Argus для Mac или Windows и начните бесплатно с 5 профилями.