Миф о чтении истории браузера: что на самом деле собирает антифрод

Начну с мифа, потому что он дорогой: «антифрод читает мою историю браузера». Не читает. Ни один сайт не имеет доступа к чужой истории — same-origin policy никто не отменял и в 2026-м. Реальный механизм скучнее и опаснее: система собирает косвенные следы — собственные cookies и их возраст, записи в localStorage и IndexedDB, тайминги из HTTP-кеша, а поверх накладывает серверную память: с каких IP и устройств заходил аккаунт, как часто и во сколько. Плюс подхода — сбор незаметен и почти бесплатен. Минус — куча ложных срабатываний на людей, которые просто тщательно чистят браузер.

Дальше по слоям, потому что «история» для антифрода — это корреляция нескольких источников, а не один файл на диске.

Серверный слой: IP и биография аккаунта как главный источник риска

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

Cookies: возраст идентификатора и ловушка «состаренных» аккаунтов

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

Локальные хранилища: бэкдейтинг таймстемпов против серверной памяти

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

Cache probing: почему «детекция по истории посещений» — слабый сигнал

Четвёртый слой — cache probing, любимая тема статей про слежку. Идея: сайт грузит ресурс и меряет время через Resource Timing — из кеша единицы миллисекунд, из сети десятки. Звучит страшно, но Chrome ещё с 2020-го делит HTTP-кеш по топ-сайту, и пробить чужую историю так почти невозможно — осмысленно работает только проверка собственного домена. Открытые инструменты это подтверждают: FingerprintJS и CreepJS проверяют не посещаемость, а консистентность фингерпринта и ловлю «lies» в подменённых API. Маркетинг же вендоров про «детекцию по истории посещений» опирается на этот слабый сигнал плюс поведенческую биометрию: BioCatch и аналоги пишут не историю браузера, а историю поведения на своей стороне — ритм мыши, скорость набора, порядок событий.

Практика по нишам: беттинг, арбитраж и чистый мультиаккаунтинг

Теперь практика. Беттинг: аккаунты там не палит фингерпринт, а связка «один device id на несколько аккаунтов + повторные платежи + логины из разных гео». Настройка: каждому аккаунту свой профиль со своей куки-джарой, постоянный резидентный IP одного региона, и главное — не трогать накопленную историю внутри профиля. Арбитраж: отклонения по конверсиям редко связаны с фингерпринтом, чаще с поведенческой историей — ноль скролла, мгновенный клик по офферу, отсутствие смены фокусов. Лечится прогревом: два-три дня органических сессий до целевого действия. Чистый мультиаккаунтинг — это прогрессия: не логинься в свежий аккаунт в первый день, сначала набей ему обычную историю в браузере. Перед запуском прогоняй профиль через CreepJS — он покажет несостыковки в подменённых API — и проверяй репутацию своего IP открытым скорингом. Дешевле один прогон, чем месяц разгребания последствий.

Вывод: фингерпринт подделать можно, серверную память — нет

Вывод. Антифрод не читает твою историю — он её помнит у себя и сверяет слои: IP, куки, локальные хранилища, поведение. Где-то разъехалось — плюс к скору, накопил порог — получил проверку или лимиты. Реальные компромиссы всего три: возраст куки против скорости запуска, цена резидентов против стабильности гео, накопленная история против желания всё почистить. Всё, что продаётся как «обход детекции истории», — либо импорт настоящих куки, либо переписывание таймстемпов, которое первые же слои корреляции вскрывают. Фингерпринт подделать можно, серверную память — нет, и вся борьба идёт не за то, чтобы скрыть историю, а за то, чтобы она была правдоподобной.