Блог · Как это работает

Как аналитика считает посетителей без cookie

Чтобы отличить десять просмотров одного человека от десяти разных людей, счётчику нужно как-то узнавать посетителя. Обычно для этого служит cookie. Расскажем, как обходимся без неё мы, почему по нашим данным нельзя восстановить IP-адрес и в чём такой подход уступает классическому.

Как считают обычно

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

Это удобно для аналитики и неудобно для посетителя: появляется долгоживущий идентификатор, к которому со временем прирастает история его визитов. Именно из-за него на сайтах появляется cookie-баннер.

Как считаем мы

MetricsOn ничего не записывает в браузер. Вместо этого при каждом просмотре сервер вычисляет отпечаток визита:

отпечаток = SHA-256(соль_суток | сайт | IP-адрес | браузер)
  • Соль суток — 32 случайных байта, которые сервер генерирует раз в сутки. Она хранится только в оперативной памяти и удаляется через 48 часов.
  • Сайт — идентификатор вашего сайта в MetricsOn. Поэтому один и тот же человек на двух разных сайтах даёт два разных отпечатка, и связать его визиты между сайтами нельзя.
  • IP-адрес и строка браузера (User-Agent) — то, что браузер и так сообщает любому серверу при загрузке страницы.

В базу попадает только отпечаток. Сам IP-адрес используется в момент запроса — чтобы определить город и отсеять ботов — и отбрасывается. Его нет ни в базе статистики, ни в логах сервера.

Просмотры с одинаковым отпечатком за сутки — это один посетитель и одна сессия. Так считаются уникальные посетители, отказы, время на сайте, цели и воронки.

Почему IP нельзя восстановить

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

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

Чем приходится платить

Честно о том, что такой подход меняет в цифрах:

  • Вернувшийся посетитель считается заново. Человек, который заходил вчера и зашёл сегодня, — для нас два разных посетителя. Поэтому за неделю или месяц уникальных посетителей получается больше, чем в системах с cookie, и нет отчёта «новые и вернувшиеся».
  • Сутки меняются в 03:00 по Москве. Соль привязана к суткам по UTC, и визит, который начался в 02:50 и продолжился в 03:10, разделится на две сессии. Ночью трафика мало, так что на итог это почти не влияет.
  • Смена сети — новая сессия. Если человек начал читать сайт по Wi-Fi, а закончил по мобильному интернету, IP-адрес меняется, а с ним и отпечаток.
  • Одинаковые браузеры за одним адресом склеиваются. Два сотрудника офиса с одним внешним IP и одинаковыми версиями браузера в один день будут выглядеть как один посетитель. На практике это редкость: строка браузера включает версию и систему, и совпадает она реже, чем кажется.
  • Нет истории по человеку. Нельзя посмотреть путь конкретного посетителя за месяц или связать визиты с разных устройств. Это не недоработка, а суть подхода.

Что ещё мы не собираем

  • Отпечаток браузера в расширенном смысле — шрифты, canvas, звуковую карту и прочие приёмы, которыми рекламные системы узнают человека без cookie. Скрипт отправляет только адрес страницы, источник перехода, размер экрана, язык и часовой пояс.
  • Визиты с Do Not Track. Если в браузере включён запрет отслеживания, скрипт ничего не отправляет.
  • Локальную разработку. На localhost и на сайтах, открытых по IP-адресу, счётчик молчит — ваши собственные тесты не попадут в статистику.

Итог

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

Попробуйте MetricsOn на своём сайте

Бесплатно для одного сайта. Одна строка кода — и данные пойдут через минуту. Можно поставить рядом с текущим счётчиком и сравнить цифры.

Подключить бесплатно →