PowerScan
RU

Как работают антидетект-браузеры: полное техническое объяснение

Антидетект-браузеры · 11 мин чтения · Автор: PowerOps

Фото: Unsplash

Поверхности отпечатка, генерация согласованной идентичности, изоляция хранилища на диске, маршрутизация для каждого профиля и честные пределы всего подхода.

Антидетект-браузер выполняет четыре задачи. Он хранит данные просмотра каждого профиля отдельно, управляет идентичностью устройства, о которой сообщает каждый профиль, направляет трафик каждого профиля независимо и поддерживает согласованность всех трёх со временем. В этой статье разбирается, как выполняется каждая из задач, на уровне механизма, а в конце говорится о том, чего этот подход не может.

Поверхности отпечатка

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

ПоверхностьЧто читает страница
NavigatorНазвание и версия браузера, платформа, список языков, заявленное число процессоров и объём памяти, поддержка касаний
ЭкранШирина, высота, доступная рабочая область, глубина цвета, соотношение пикселей устройства
CanvasТочные пиксели, полученные при отрисовке текста и фигур вне экрана, преобразованные в стабильное хеш-значение
WebGLСтроки производителя и модели графики, а также хеши отрисованных сцен
АудиоВыход осциллятора, пропущенный через граф обработки звука, который различается в зависимости от стека
ШрифтыКакие гарнитуры установлены, определяется по измерениям текста
Часовой пояс и часыЗаявленный пояс и смещение, сравниваемые с тем, откуда приходит трафик
СетьСам адрес, взгляд WebRTC на кандидатов соединения и форма TLS-рукопожатия

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

Сбор дёшев и бесшумен. Каждое значение из таблицы доступно любой странице через документированные API без запроса разрешения, и большая часть поступает в первую секунду визита. Какой бы позиции вы ни придерживались в отношении этой практики, это постоянный факт современного веба и та база, против которой проектируется антидетект-браузер.

Как генерируется согласованная идентичность

Наивный подход — перехватывать каждый вопрос и случайно подменять ответ. Он не работает по структурной причине. Ответы описывают одну машину, поэтому они коррелированы, а независимо случайные ответы эти корреляции ломают. User-Agent Windows рядом со шрифтами, которые есть только в macOS, размер экрана, с которым не выпускали ни один ноутбук, строка графики, которая никогда не сочеталась с заявленной платформой: каждое из этих противоречий проверяется дёшево.

Поэтому рабочий антидетект-браузер генерирует идентичность как набор. Он начинает с реального распространённого класса машин и выводит из этого выбора каждое значение. Платформа определяет правдоподобный список шрифтов, строки графики и поддержку касаний. Экран берётся из размеров, с которыми такой класс машин действительно выпускается. Язык и часовой пояс берутся из предполагаемого региона профиля. Значения согласованы друг с другом, потому что выбирались вместе, из одного описания одной машины.

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

Изоляция хранилища на диске

Задача хранилища — наименее эффектная и наиболее абсолютная. У каждого профиля свой каталог, и всё, что браузер сохраняет, лежит внутри него: база cookie, Local Storage, IndexedDB, HTTP-кэш, регистрации service worker, состояние расширений, история и сохранённые учётные данные. Два профиля — это два непересекающихся каталога, и каждый запущенный браузер указывает на свой.

Проверять нужно полную непересекаемость, потому что частичная изоляция даёт сбой незаметно. Cookie разделить легко. Кэш может опознать вернувшийся браузер по сохранённым им ресурсам. Service worker могут хранить идентификаторы и продолжать работать между визитами. IndexedDB — это место, где современные приложения держат записи, которым они действительно доверяют. Изоляция, которая охватывает известные хранилища и делит любые другие, изолировала лишь видимую часть проблемы.

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

Сетевая маршрутизация

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

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

Что меняет сам браузер

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

ПодходКак работаетСлабое место
Внедрение скриптаРасширение или внедрённый скрипт переопределяет функции, которые вызывает страница, так что чтение canvas и запросы к navigator возвращают подставленные значенияСами переопределения видны. Подменённые функции можно распознать как подменённые, а любая поверхность, о которой инжектор забыл, по-прежнему отвечает настоящим значением
Внутри собственного кода браузераРеализация браузера отвечает сохранёнными значениями профиля в тех участках кода, где получаются настоящие значенияЗначительно больше работы по созданию и поддержке, и именно это отличает специализированные инструменты от расширений

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

Что на самом деле делает открытие профиля

  1. Загружается сохранённая идентичность: один согласованный набор значений устройства, тот же, что и в прошлый раз.
  2. Браузер запускается на собственном каталоге профиля, так что каждое постоянное хранилище — собственное хранилище профиля.
  3. Применяется маршрут: прокси, разрешение имён через него, WebRTC, ограниченный им.
  4. Сессия идёт, накапливая состояние внутри каталога.
  5. При закрытии состояние записывается, так что при следующем открытии продолжаются то же устройство, то же хранилище и тот же маршрут.

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

Честные пределы

У подхода есть границы, и знание их — часть умелого использования.

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

Все статьи · Запустить проверку