BotBan Защита сайта от ботов
Попробовать
Меню
BotBan Защита сайта от ботов
Тема оформления

Новости проекта

Журнал сворачивает повторы: одна запись на адрес и страницу в час, цифры без потерь

Значок «×N» вместо сотни одинаковых строк, лимит в 20 страниц на адрес в час, пропуски и реклама по-прежнему отдельными записями — и ни одной потерянной цифры в статистике.

На одном из подключённых сайтов на этой неделе журнал прирастал на 400 тысяч записей в сутки. Защита работала как надо: 86 % запросов получали проверку, адреса из дата-центров в США и на Сейшелах до сайта не доходили. Но когда мы открыли журнал, стало видно, что почти все эти строки — один и тот же адрес, который сотни раз за час запрашивает одну и ту же страницу и каждый раз получает один и тот же ответ. Читать такое невозможно, а хранить месяц — дорого: база прибавляла полтора гигабайта в день.

Что изменилось. Теперь первая запись адреса за час остаётся в журнале целиком — адрес, страна, браузер, признаки, балл, решение. Если тот же адрес в тот же час снова запрашивает ту же страницу, новой строки не появляется: к первой записи прибавляется счётчик и время последнего повтора. В журнале рядом с путём стоит значок «×37»; наведите курсор — подсказка скажет, сколько было повторов этой страницы и когда был последний. В панели разбора визита для этого есть строка «Повторы».

Разных страниц один адрес за час держит до 20 отдельными записями: этого хватает, чтобы увидеть, куда именно ходил сканер. Всё, что сверх, прибавляется к его первой записи вторым счётчиком — «ещё 140 к другим страницам». В сводке «Страницы» такие запросы по адресам не разнесены, и подпись под сводкой честно называет их число.

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

Цифры настоящие. Мы специально проверили каждый счётчик, который читает журнал. Дашборд, графики, доля ботов, разбивка по странам и баллам, клики по рекламе, список адресов ботов и выгрузки для Директа и файрвола, история адреса в панели разбора, квота тарифа — всё считает запросы, а не записи: запись с «×37» весит 37. Ни одна цифра в кабинете от этого не уменьшилась, уменьшился только объём журнала. В публичном API у визита появились поля repeats, overflow и last_repeat_at.

Если Redis, где живёт индекс повторов, вдруг окажется недоступен, журнал просто вернётся к прежнему поведению и запишет каждый запрос отдельной строкой. Потерять запрос из статистики он не может ни в одном из вариантов — это мы тоже проверили тестами.