Одного разу нічний графік переглядів виглядав так, ніби блог раптом отримав сильний сплеск уваги.
Total views помітно виросли. Якби я дивилася тільки на цю метрику, можна було б вирішити, що на сайт прийшло багато нових читачів.
Але deduplicated views майже не змінилися.
Саме цей розрив став для мене важливішим за абсолютне число переглядів.
Спочатку треба чітко знати, що саме рахує кожна метрика
Total views кожен відповідний перегляд сторінки,що надходить до системи аналітики Deduplicated views перегляди після застосуванняправила усунення дублікатів у проектіУсунення повторних переглядів не дозволяє визначити точну кількість людей. Значення цього показника залежить від правил проєкту: використання файлів cookie, сесій, умовного ідентифікатора відвідувача, часового проміжку або іншого способу визначення повторів.
Тому я не називаю перегляди без повторів «реальними користувачами». Але цей показник добре допомагає зрозуміти, яку частину загальної кількості переглядів становить повторна активність.
При звичайному рості обидві метрики часто рухаються в одному напрямку
Example A total views 100 -> 160deduplicated views 70 -> 110 Обидва показники зросли.Розрив змінився, проте спостерігається зростанняв обох показниках.Це не правило, але такий рух не викликає в мене автоматичної підозри.
Зростання загальної кількості переглядів супроводжується збільшенням кількості переглядів без повторів. Тобто активність зростає не лише завдяки повторним запитам.
Сильний сигнал з’являється, коли total views відриваються від deduplicated views
Example B total views 100 -> 900deduplicated views 70 -> 82 Обсяг необроблених даних різко зріс.Показники активності після дедуплікації майже не змінилися.Такий графік не доводить bot traffic.
Але він говорить, що великий обсяг нових page views не перетворився на відповідне зростання deduplicated activity.
Для мене це вже не "цікава різниця метрик", а тригер для розслідування.
Корисно аналізувати не лише кількість переглядів, а й співвідношення між показниками
repeat_factor = total_views / deduplicated_views Приклад: 160 / 110 = 1.45 900 / 82 = 10.98Я не використовую один універсальний поріг на кшталт «вище 5 - це бот».
Нормальне значення залежить від типу контенту, інтерфейсу, поведінки користувачів під час оновлення сторінки, часу доби та правил усунення повторних переглядів.
Але різка зміна співвідношення порівняно зі звичними показниками сайту часто дає більше інформації, ніж універсальне порогове значення.
Час аномалії додає контекст, але не є доказом
У моєму випадку такі різкі розбіжності між показниками повторювалися вночі.
Для невеликого блогу це було особливо нетипово: загальна кількість переглядів різко зростала в години, коли кількість переглядів без повторів не показувала схожого зростання.
Але час доби сам по собі нічого не доводить. Він лише допомагає точніше оцінити інші ознаки підозрілої активності.
Помітивши розбіжності між показниками, я не блокую трафік одразу, а переходжу до детальнішого аналізу.
Аналітика тут працює як система раннього попередження.
Після сплеску активності я перевіряю, на які URL надходили запити, з яких країн, пристроїв і браузерів, які дані про клієнтське програмне забезпечення передавалися, у які години була найбільша активність і які джерела трафіку переважали.
Потім порівнюю ці дані з журналами вебсервера.
Лише після такої перевірки можна робити висновки про конкретну причину сплеску.
У моєму випадку сигнали аналітики підтвердилися даними з журналів вебсервера
У ті самі періоди журнали вебсервера показували повторювані запити до технічних шляхів і адрес, які зазвичай перевіряють під час пошуку вразливостей.
Саме цей збіг підвищив упевненість у висновках: розбіжність між показниками переглядів була першим сигналом, а характер запитів у журналах сервера вже давав конкретні докази автоматизованої активності.
Security-частину цього кейсу я розбирала в окремому матеріалі про трафік, який виглядає людським, але поводиться як bot. Для мене тут важливіше інше: саме порівняння двох показників аналітики першим показало, що зростання загальної кількості переглядів не схоже на звичайне збільшення аудиторії.
Я не вважаю аномалію в аналітиці автоматичним доказом активності ботів
Велика різниця між загальною кількістю переглядів і переглядами без повторів може мати й інші пояснення.
Користувач багато разів оновлює одну сторінку.
Через помилку інтерфейс надсилає подію перегляду кілька разів.
Змінилася поведінка попереднього завантаження сторінок або переходів між ними.
На одну адресу надходить багато повторних переходів з іншого джерела.
Правила усунення повторів надто суворі й помилково об’єднують різні відвідування.
Тому розбіжність між показниками - це привід перевірити дані, а не готовий висновок про активність ботів.
Аномалія може вказувати на проблему не з трафіком, а з реалізацією самої системи аналітики
Неочікуваний розрив Можлива причина A:повторюваний трафік Можлива причина B:дублювання відстеження Можлива причина C:зміна правила дедуплікації Можлива причина D:нова модель навігаціїЦе одна з причин, чому я не хочу приховувати загальну кількість переглядів і показувати лише перегляди без повторів.
Загальна кількість переглядів допомагає помітити незвично високу активність, а кількість переглядів без повторів показує, скільки нових переглядів система зарахувала відповідно до встановлених правил.
Разом ці показники допомагають виявляти не лише аномальний трафік, а й помилки, що виникли після змін у коді відстеження переглядів.
Різні метрики не треба зливати тільки тому, що вони описують одну сторінку
Це той самий принцип, який я використовую в статті про різницю між Share action і visit from shared link: дві пов’язані події або два способи вимірювання можуть давати корисний сигнал саме тому, що вони залишаються окремими.
Якби загальну кількість переглядів автоматично замінювали переглядами без повторів або панель аналітики показувала лише один показник, цю закономірність нічних сплесків активності було б значно важче помітити.
На дашборді я хочу бачити обидві метрики поруч
Година Усього Без дублікатів Коефіцієнт повторюваності 20:00 118 81 1.4621:00 742 86 8.6322:00 905 89 10.1723:00 131 84 1.56Ці числа умовні, але вони показують саме ту закономірність, яку я хочу виявляти.
Загальні показники за день можуть приховати короткий нічний сплеск активності. Погодинна аналітика дозволяє побачити, що розбіжність між показниками виникла в певний проміжок часу, а потім зникла.
Звичні показники важливіші за універсальне порогове значення
Для одного сайту коефіцієнт повторних переглядів 2 може бути нормальним, а для іншого - вже незвичним.
Тому я порівнюю поточні показники не з абстрактним «правильним» числом, а з власною історією сайту: за той самий час доби, для тих самих типів контенту та за схожі дні.
Аномалія - це насамперед відхилення від звичайної поведінки конкретної системи.
Цю різницю між показниками можна використовувати як сигнал про можливу аномалію
$repeatFactor = $deduplicatedViews > 0 ? $totalViews / $deduplicatedViews : null; $isSuspicious = $totalViews >= $minimumVolume && $repeatFactor !== null && $repeatFactor > $expectedBaselineFactor;Тут важливо враховувати мінімальну кількість переглядів. Співвідношення 10 / 1 виглядає великим, але за такого малого обсягу даних це може бути просто випадкове коливання.
І навіть якщо система виявила можливу аномалію, я не блокую трафік автоматично. Це лише сигнал про необхідність детальнішого аналізу.
Що я перевіряю після такого сплеску активності
Погодинну динаміку загальної кількості переглядів і переглядів без повторів.
Які сторінки або маршрути отримали найбільше запитів.
Країни, пристрої, браузери та операційні системи.
Джерела трафіку, канали переходів і домени, з яких приходили відвідувачі.
Чи повторюються однакові дані про клієнтське програмне забезпечення або характер запитів.
Чи збігається час сплеску із записами в журналах вебсервера.
Чи не було розгортання нової версії або змін у відстеженні переглядів перед аномалією.
Чи не змінилися самі правила усунення повторних переглядів.
Чого я не роблю після одного сплеску розбіжностей між показниками
Я не вважаю весь сплеск активністю ботів лише на підставі співвідношення показників.
Я не прибираю загальну кількість переглядів з аналітики лише для того, щоб графік «виглядав чистіше».
Я не змінюю історичні дані, доки не з’ясую, у чому причина: у самому трафіку, його класифікації чи механізмі відстеження переглядів.
І я не ухвалюю рішень щодо безпеки на основі одного показника, отриманого з інтерфейсу, без підтвердження даними вебсервера.
Два недосконалі показники разом можуть дати дуже важливий сигнал.
Загальна кількість переглядів сама по собі показує обсяг активності. Кількість переглядів без повторів показує, скільки переглядів залишилося після застосування встановлених правил усунення повторів.
Але найкориснішою для мене в цьому випадку стала саме різниця між цими показниками.
Коли загальна кількість переглядів різко зросла, а кількість переглядів без повторів майже не змінилася, система дала важливий сигнал: не поспішай радіти зростанню трафіку, спочатку перевір, що саме спричинило таку кількість запитів.
Аномалія не завжди живе в одному числі. Іноді вона стає видимою тільки тоді, коли дві метрики перестають рухатися разом.



