
Есть параметр, который не встречается ни в одном популярном чек-листе по маскировке профилей, хотя снимается одной строкой и говорит о машине больше, чем половина привычных отпечатков, — квота браузерного хранилища. Современный браузер умеет сообщать странице, сколько места он готов выделить сайту под данные и сколько уже занято. Оба числа берутся не с потолка: квота рассчитывается от объёма свободного места на диске, а занятое — от того, сколько сайтов профиль успел посетить и что они успели сохранить.
Для живой аудитории это даёт колоссальный разброс. У одного человека диск забит под завязку, у другого свободны сотни гигабайт, у третьего телефон с вечно кончающейся памятью. Для парка профилей на одном сервере картина обратная: у всех профилей один физический диск, значит, квота либо совпадает, либо отличается в пределах погрешности. Ниже — как устроен расчёт, что из него вытягивает антифрод и как приводить эти числа в правдоподобный вид. Тема примыкает к разговору про аппаратный отпечаток железа и про изоляцию профилей при мультиаккаунтинге.
Что именно отдаёт браузер
Запрос оценки хранилища возвращает объект с двумя основными полями, и каждое несёт свой пласт информации:
- Квота. Верхняя граница объёма, который сайт может занять. Считается как доля от свободного места на разделе, где лежит профиль браузера. Отсюда косвенно восстанавливается, сколько свободного места на диске у посетителя.
- Занятый объём. Сколько данных текущий сайт уже сохранил. У свежего профиля это почти ноль, у постоянного посетителя — заметная величина, растущая со временем.
- Детализация по типам. В части браузеров доступна разбивка занятого объёма по подсистемам: кэш, индексируемая база, файловая система. Соотношение между ними тоже характеризует историю профиля.
- Признак устойчивого хранилища. Отдельный флаг, показывающий, защищены ли данные сайта от автоматической очистки. Он зависит от того, насколько браузер считает сайт «своим» для пользователя.
- Сам факт доступности механизма. В приватном режиме и в некоторых конфигурациях оценка либо недоступна, либо возвращает искусственно урезанные значения — и это состояние тоже читается.
Всё это отдаётся без разрешений и без запроса к пользователю. С точки зрения антибот-системы получается почти бесплатный доступ к двум характеристикам, которые крайне трудно подделать согласованно: состоянию диска и возрасту профиля.
Квота хранилища отвечает сразу на два неудобных вопроса: сколько у вас свободно на диске и как давно вы вообще пользуетесь этим браузером. У сотни профилей на одном сервере ответы на оба вопроса одинаковые.
Почему квота выдаёт виртуалки
Один диск на всех
Главная механика проста до банальности. Профили в парке живут на одном физическом накопителе или на одном разделе. Браузер считает квоту от свободного места, следовательно, у всех профилей она получается одинаковой или различается на десятые доли процента — ровно настолько, насколько меняется занятость диска в течение дня. Ста «разным людям» из разных городов и с разными устройствами выпасть на одно и то же число свободного места — событие, вероятность которого антифроду считать необязательно: достаточно сгруппировать визиты по значению.
Серверные диски маленькие
Вторая беда — абсолютная величина. Арендованные виртуальные машины обычно берут с небольшим диском: место на них стоит денег, а для запуска браузеров кажется ненужным. В результате квота выходит маленькой, а иногда и совсем крошечной, если диск забит образами и профилями. Живой пользователь с настольным компьютером или ноутбуком выдаёт совсем другие порядки величин. Профиль, у которого квота соответствует почти полностью забитому диску, да ещё и повторяется у соседей по парку, выглядит однозначно.
Свежий профиль занимает ноль
Третий слой — занятый объём. Человек, который заходит на сайт не в первый раз, уже имеет там сохранённые данные: кэш, служебные записи, настройки. Профиль, созданный пять минут назад и удаляемый после сессии, стабильно показывает нулевое или почти нулевое занятое хранилище. Одноразовость профиля читается прямо из этого числа, и она смыкается с темой, разобранной в материале про user-agent, куки и историю профиля: профиль без прошлого выдаёт себя десятком независимых способов сразу.
Приватный режим отдельно виден
Попытка работать в приватных окнах, чтобы «не оставлять следов», приводит к тому, что квота урезается до характерных значений или механизм перестаёт быть доступным. Доля живых посетителей, которые ходят по коммерческим запросам исключительно в приватном режиме, невелика. Весь парк, приходящий в таком состоянии, снова образует собственную аномальную группу вместо того, чтобы раствориться.
Таблица: слои сигнала и что они выдают
| Что читается | О чём говорит | Типовая картина парка профилей |
|---|---|---|
| Величина квоты | свободное место на диске машины | одно значение на весь парк |
| Абсолютный порядок квоты | размер накопителя | подозрительно маленький серверный диск |
| Занятый объём | возраст профиля и история визитов | ноль или околонулевое значение |
| Разбивка по подсистемам | характер использования браузера | пусто по всем разделам |
| Флаг устойчивого хранилища | отношения пользователя с сайтом | одинаково выключен у всех |
| Доступность механизма | приватный режим, нестандартные настройки | недоступен у всего парка сразу |
Третья строка — самая недооценённая. Величину квоты многие догадываются подменить, а вот занятый объём почти никто не трогает, и он продолжает честно рассказывать, что профиль впервые открыт минуту назад. Логика та же, что и с любым редко закрываемым параметром: чем меньше его подменяют, тем чище кластеры он даёт.
Как антифрод использует хранилище
- Снятие пары чисел. Скрипт запрашивает оценку и получает квоту и занятый объём. Обе величины округляются до разумной точности и уходят в сигнатуру визита.
- Кластеризация по квоте. Визиты группируются по совпадению значения. Живая аудитория даёт широкий разброс, парк — узкий пик.
- Проверка правдоподобия порядка. Величина сверяется с заявленным классом устройства: у мобильного профиля и у настольного разные типичные диапазоны.
- Анализ занятого объёма. Нулевое хранилище при заявленном возвратном визите — противоречие. Человек, который был на сайте неделю назад, что-то там оставил.
- Динамика во времени. У живого профиля занятый объём растёт от визита к визиту. У одноразового он всегда одинаково нулевой.
- Сверка с прочими признаками возраста. Хранилище сопоставляется с историей, куками, состоянием кэша. Профиль, который везде выглядит новорождённым, получает соответствующую оценку доверия.
Почему это важнее, чем кажется
У этого сигнала есть особенность, делающая его неудобным для маскировки: он завязан на физический ресурс. Разрешение экрана можно объявить любым, набор шрифтов — подставить, графический адаптер — подменить. А свободное место на диске — это состояние железа, которое меняется само по себе, у живого человека постоянно и непредсказуемо: скачался фильм, установилось обновление, почистилась корзина. Синтетическому профилю такую естественную динамику нужно воспроизводить осознанно, и почти никто этого не делает. В сочетании с другими признаками одноразовости, о которых шла речь в материале про прогрев прокси и адресов, картина складывается очень быстро.
Таблица: живая аудитория против парка на одном сервере
| Признак | Живая аудитория | Парк без маскировки |
|---|---|---|
| Разброс квоты | огромный, от почти нуля до сотен единиц | одно значение или узкий пучок |
| Порядок величины | соответствует классу устройства | характерен для маленького серверного диска |
| Занятый объём | растёт с историей визитов | нулевой у всех и всегда |
| Изменение квоты со временем | плавает естественно | зафиксировано намертво |
| Флаг устойчивого хранилища | встречаются оба состояния | одинаково у всех профилей |
| Доступность оценки | доступна почти всегда | отсутствует при работе в приватном режиме |
Как приводить хранилище в порядок
Разброс квоты по парку
Первое и главное: значения квоты у разных профилей обязаны различаться, и различаться заметно. Ориентироваться нужно не на красивое круглое число, а на распределение: у части профилей диск почти полон, у части свободна половина, у части — почти весь. Мобильные профили тяготеют к меньшим значениям, настольные — к большим. Цель не в том, чтобы каждое значение было уникальным, а в том, чтобы гистограмма по парку имела форму, похожую на живую популяцию, без единственного острого пика.
Стабильность с естественным дрейфом
Второе требование выглядит противоречивым, но противоречия здесь нет. У одного профиля квота не должна прыгать между визитами в разы: люди не меняют диск каждый день. Но и застывшее до последней цифры значение неестественно, потому что свободное место у живого человека постоянно немного меняется. Рабочая модель — базовое значение, закреплённое за профилем, плюс небольшой медленный дрейф в обе стороны, с редкими более заметными скачками, соответствующими удалению или установке чего-то крупного.
Ненулевое занятое хранилище
Профиль, который работает не первый день, обязан иметь накопленные данные. Это решается не подменой числа, а нормальной эксплуатацией: профиль должен переиспользоваться, ходить по разным сайтам, копить кэш и служебные записи, а не создаваться заново под каждую сессию. Такой профиль сам собой набирает правдоподобный занятый объём, и подделывать ничего не нужно. Это же требование закрывает добрую половину других признаков одноразовости.
Соответствие классу устройства
Квота обязана быть согласована с легендой. Профиль, заявляющий бюджетный телефон, но сообщающий о колоссальном свободном пространстве, противоречит сам себе; настольная машина с квотой в несколько мегабайт выглядит так же странно. Эта проверка дешёвая, и её стоит внести в предстартовый контроль рядом со сверкой часового пояса, языка и региона выхода, о которой шла речь в материале про рассинхрон часового пояса и языка.
Не отключать и не обнулять
Классическая ошибка — заставить механизм возвращать нули или недоступность. Нулевая квота означает, что сайту негде хранить данные, а это состояние в реальной жизни почти не встречается и ломает работу многих сайтов, что само по себе привлекает внимание. Недоступность оценки указывает на приватный режим или нестандартную сборку. Оба состояния сужают круг возможных объяснений визита вместо того, чтобы его расширить.
Чек-лист проверки
- Снимите квоту и занятый объём с пяти-шести профилей парка и сравните значения между собой.
- Постройте простейшую гистограмму по всему парку: острый пик на одном значении означает, что маскировки нет.
- Проверьте порядок величины на правдоподобие для заявленного класса устройства.
- Посмотрите занятый объём: у профилей, работающих не первый день, он не должен быть нулевым.
- Повторите замер через несколько дней: квота у профиля должна немного измениться, но не в разы.
- Убедитесь, что оценка вообще доступна и что профили не работают в приватном режиме.
- Сверьте картину с прочими признаками возраста профиля: куки, история, кэш должны рассказывать ту же историю.
Разбор кейса: одинаковое число на сотню профилей
Проект работал по конкурентным запросам в тематике услуг. Инструментарий был современный: свежая версия антидетекта, подменённая графика, аккуратный сетевой отпечаток, резидентские адреса с прогревом, поведение собиралось по записям реальных сессий. На старте всё шло по плану, затем прогресс замедлился, а доля визитов, которые перестали учитываться, начала расти. Обычный аудит ничего не давал: по всем параметрам из привычного чек-листа профили были уникальны и согласованы.
Развязка наступила после полного дампа окружения, куда впервые попала оценка хранилища. Выяснилось, что квота совпадает у всей сотни профилей: все они жили на одном разделе одного арендованного сервера с небольшим диском, забитым почти под завязку. Мало того, что значение было одинаковым, — оно было ещё и маленьким, нехарактерным для настольных машин, которыми притворялось большинство профилей. Занятый объём при этом у всех был нулевым, потому что профили пересоздавались перед каждым циклом.
Исправление заняло две недели. Профили перевели на переиспользование вместо пересоздания, чтобы они естественно накапливали данные. В окружение добавили подмену квоты с раздачей значений по парку в форме реалистичного распределения и с медленным дрейфом внутри профиля. Класс устройства увязали с диапазоном значений, а проверку внесли в предстартовый контроль. Постепенно доля неучитываемых визитов снизилась, а динамика возобновилась. Главный урок здесь не про хранилище: парк, собранный на одном сервере, склеивается по любому параметру, завязанному на физическую машину, — и проверять надо именно такие параметры.
Частые ошибки
- Считать хранилище незначимым. Параметр завязан на физический ресурс, поэтому подделывается хуже прочих и кластеризует точнее.
- Обнулять квоту. Нулевое значение почти не встречается у людей и вдобавок ломает работу сайтов, привлекая внимание.
- Подменять квоту, забыв про занятый объём. Нулевое хранилище у «постоянного посетителя» выдаёт одноразовость профиля напрямую.
- Фиксировать значение намертво. Свободное место у живого человека постоянно немного меняется, застывшее число выглядит синтетически.
- Работать в приватном режиме ради чистоты. Урезанная или недоступная оценка образует узкую аномальную группу вместо маскировки.
Частые вопросы
Действительно ли по квоте видно свободное место на диске? Не буквально до байта, но порядок величины восстанавливается уверенно, потому что квота считается как доля от доступного пространства. Для кластеризации точность и не нужна: достаточно, чтобы значения совпадали у профилей, живущих на одной машине.
Закрывают ли этот параметр антидетект-браузеры? Часть инструментов уже добавила соответствующие настройки, но массовым решением это пока не стало, а занятый объём не трогает почти никто. Проверять нужно собственным замером на своих профилях, а не по описанию инструмента.
Что важнее — квота или занятый объём? Они работают в связке и отвечают на разные вопросы. Квота выдаёт общую машину для всего парка, занятый объём — одноразовость конкретного профиля. Чинить нужно оба, причём второе лечится правильной эксплуатацией профилей, а не подменой чисел.
Помогает ли распределение профилей по разным серверам? Помогает, и существенно: разные машины дают разные диски и разное свободное место. Но полностью задачу это не снимает, потому что внутри одного сервера профили всё равно совпадут между собой, а число серверов всегда ограничено. Разнесение по машинам стоит сочетать с корректной подменой значений.
Вывод
Оценка браузерного хранилища — это два числа, которые сайт получает без разрешений и которые крайне неудобно подделывать: квота считается от свободного места на физическом диске, а занятый объём отражает, сколько данных профиль успел накопить за свою жизнь. У живой аудитории первое даёт широчайший разброс, потому что у всех разные накопители с разной степенью заполненности, а второе растёт от визита к визиту. У парка профилей на одном сервере обе величины вырождаются: квота совпадает, потому что диск общий, и вдобавок оказывается маленькой, потому что арендованные машины берут экономно, а занятый объём остаётся нулевым, потому что профили пересоздаются под каждую сессию. Правильная работа складывается из четырёх вещей — раздать квоты по парку так, чтобы распределение походило на живую популяцию, добавить каждому профилю медленный естественный дрейф значения, перейти на переиспользование профилей вместо их пересоздания, чтобы хранилище наполнялось само, и увязать порядок величин с заявленным классом устройства. И отдельно стоит запомнить общий принцип: любой параметр, завязанный на физический ресурс машины, склеивает парк на одном сервере надёжнее любого программного отпечатка, поэтому именно такие параметры нужно искать и проверять в первую очередь.
Больше о поведенческом продвижении и других услугах — на главной странице ProfSEO24.
Закажите накрутку ПФ в ProfSEO24
Выводим сайты в ТОП-1 Яндекса за счёт поведенческих факторов на базе ИИ — без риска фильтров. Более 300 сайтов в ТОП-1, первые сдвиги по позициям за 3 дня. Рассчитаем стоимость под вашу нишу и регион.
Заказать накрутку ПФ Написать в TelegramКомментарии
Вадим Полещук
Снял квоту с двадцати профилей — значения совпали до третьего знака. Все на одной машине, диск маленький и почти забитый. Никогда бы не подумал, что диск можно увидеть из браузера.
Admin
Это самый частый результат первого замера. Быстрое временное улучшение — разнести профили по нескольким машинам с разными дисками, это уже даст несколько кластеров вместо одного. Но полноценно закрывается только подменой значений с раздачей по парку, потому что внутри каждой машины профили всё равно совпадут.
Полина Вересова
Занятый объём — вот что меня добило. Профиль создаётся под сессию и удаляется, значит, хранилище всегда пустое. То есть каждый мой визит выглядит как визит человека, который впервые в жизни открыл браузер.
disk_watcher
Параметр завязан на железо, поэтому и подделывается хуже. Программные штуки подменить легко, а физический ресурс надо ещё осмысленно смоделировать. Сильная мысль.
Герман Литвинов
А если просто отдавать ноль? Типа хранилище недоступно, сайт ничего не сохранит и ничего не узнает.
Admin
Узнает, причём сразу две вещи. Первое: нулевая квота в живой популяции почти не встречается, это отдельное редкое состояние. Второе: при нулевой квоте у многих сайтов ломается сохранение служебных данных, поведение страницы меняется, и это тоже фиксируется. Правдоподобное число всегда лучше отсутствия числа.
Алла Мещерякова
Переиспользование профилей вместо пересоздания решает сразу пачку проблем: и хранилище наполняется, и куки, и кэш. Странно, что многие до сих пор работают одноразовыми.
Никита Сапрыкин
Вопрос про дрейф: насколько сильно должна меняться квота у одного профиля между визитами? Боюсь переборщить и сделать хуже.
Admin
Держитесь логики реального диска. За сутки свободное место у человека меняется на проценты, а не в разы: что-то скачалось, что-то удалилось, прошло обновление. Значит, повседневный дрейф — небольшие колебания, и лишь изредка, раз в недели, заметный скачок. Изменение в два-три раза между соседними визитами выглядит куда подозрительнее, чем полностью застывшее число.
Зоя Терещенко
Про приватный режим важно. Многие включают его ради чистоты и не понимают, что тем самым метят себя. Доля людей, которые ходят по коммерческим запросам только инкогнито, сами понимаете какая.
Клим Ожегов
Гистограмма по парку — хороший практический приём. Не надо ничего сложного: выгрузил значения, посмотрел на форму. Один пик — беда, растянутое облако — норма.
Регина Асадуллина
Связка квоты с классом устройства не очевидна, но логична. Бюджетный телефон, у которого полтерабайта свободно, это оксюморон. Добавила проверку в предстарт.
Савелий Дроздов
Получается, чем больше профилей на одной машине, тем хуже. А есть какой-то разумный потолок, сколько профилей держать на сервер?
Admin
Универсального числа нет, потому что решает не количество, а качество изоляции. Если квота, хранилище, аппаратный отпечаток и сетевой слой подменяются корректно, на одной машине спокойно живёт много профилей. Если не подменяются, беда начинается уже с десятка. Считайте не профили на сервер, а число уникальных сигнатур, которые ваш парк отдаёт наружу.
Эдуард Бахметьев
Фраза про то, что любой параметр, завязанный на физическую машину, склеивает парк, — по сути готовый метод поиска дыр. Выписал себе список таких параметров и пошёл проверять по очереди.
Ксения Долматова
Интересно, что квота ломается не от плохой настройки, а от самой архитектуры: сервер по определению имеет один диск на всех. То есть проблема системная, а не от криворукости.
fresh_profile
А если профиль долгоживущий, но им пользуются только для одного проекта, хранилище же будет наполняться однобоко? Только один сайт и пусто по остальным.
Admin
Именно так, и это отдельный признак. Живой человек за месяц оставляет следы на десятках ресурсов: почта, соцсети, новости, магазины, видео. Профиль, у которого хранилище наполнено ровно по одному адресу, выглядит как инструмент под задачу. Поэтому в прогрев имеет смысл закладывать обычную бытовую активность, а не только целевые сессии.
Антонина Жаркова
С ProfSEO24 работаю с весны. Отдельно ценю, что не пытаются продать больше, чем нужно: посмотрели проект, честно сказали, что часть задач я закрою сама, и расписали, что именно проверять. Такое отношение встречается нечасто.