Передача IP-адреса посетителя в Google Analytics

Google Analytics в своих отчетах не предоставляет данные по IP-адресам пользователей. Однако по умолчанию в Analytics все же хранится полный IP-адрес посетителя. Он необходим для включения географических данных в отчеты и скрыт от анализа. Но что же делать, если очень нужны данные IP-адресов? Разбираемся в этой статье.

Но перед тем, как мы займемся настройкой, настоятельно рекомендую ознакомиться со следующими материалами Google:
Также не забываем про недавние обновленные правила обработки персональных данных (GDPR — General Data Protection Regulation).

Чтобы правильно интерпретировать данные, важно понимать общие принципы их сбора и обработки. В Analytics, как вы уже знаете, есть 4 основных компонента:

  1. сбор данных;
  2. обработка данных;
  3. настройка;
  4. отчеты.

Передача IP-адреса посетителя в Google AnalyticsСбор данных — Обработка данных — Настройка — Отчеты

Большинство из нас привыкли думать только об отчетах Google Analytics, поскольку именно там мы проводим всю работу. Но к тому времени, когда наши данные попадают на последний 4 этап, они уже будут очищены и обработаны Google.
На этапе сбора данных Google собирает IP-адреса. Адреса загружаются с помощью JavaScript, встроенного в ваш код отслеживания Google Analytics. Помимо прочего, Google собирает уникальные идентификаторы, а также такие данные, как тип и настройки браузера и устройства, операционная система, мобильная сеть (включая название оператора и номер телефона) и номер версии приложения. Они также регистрируют информацию о взаимодействии ваших приложений, браузеров и устройств с их сервисами, в том числе IP-адрес, отчеты о сбоях, сведения о действиях в системе, дата и время, когда вы посетили их ресурс, и URL, с которого вы на него перешли (URL перехода).
Анонимизация IP-адресов в Analytics
C 25 мая 2010 года Analytics поддерживает функцию _anonymizelp, которая позволяет владельцам сайтов скрывать IP-адреса своих посетителей при обработке данных в нашей системе. Анонимизация и частичное хранение IP-адресов помогают выполнять требования по защите личных данных, включая как политики конфиденциальности самих ресурсов, так и государственные законы. Адрес маскируется сразу же, как только поступает в сеть сбора данных Analytics, до обработки и хранения. То есть именно на этапе 1.
Подробнее о анонимизации IP-адресов в Analytics читайте в официальной справке Google.
После сбора IP-адреса вводятся на 2 и 3 компонентах (настройки и обработки данных). На этих этапах ваши фильтры, блоки и обработчики применяются Google. Большинство пользователей фильтруют свой собственный IP-адрес (или компании) из данных Google Analytics. Это не позволяет внутреннему трафику размывать отчеты ненужной статистикой.

Передача IP-адреса посетителя в Google AnalyticsФильтр по IP с использованием регулярных выражений

Подробнее об этом читайте в статье «Фильтры в Google Analytics».
На этапе обработки Google передает данные в базу данных отчетов, которые разбиваются на различные пути. IP-адреса, которые были уже анонимизированы или отфильтрованы, вычищаются. Хотя данные от интернет-провайдера видны в ваших отчетах, их IP-адреса не показываются.

Передача IP-адреса посетителя в Google AnalyticsИнтернет-провайдер в отчетах Google Analytics

Поэтому, когда Google собирает IP-адреса, они не предоставляют эти данные конечным пользователям. Суть в том, что вы не можете видеть IP-адреса в своих отчетах Google Analytics. Вы даже не сможете проверить фильтры исключений, поскольку Google полностью удаляет любые IP-данные до того, как они попадут в отчеты.
Но что делать, если все же необходимо отслеживать IP-адреса посетителей? Решение простое – определять IP на серверной стороне, а потом сохранять его в Custom Dimension (специальный параметр) в Google Analytics. В результате вы можете получить что-то похожее:

Передача IP-адреса посетителя в Google AnalyticsClient ID и IP-адрес

Здесь каждому Client ID, который тоже передается в качестве специального параметра, соответствует IP-адрес посетителя и сеансы. Сделано с помощью специальных отчетов.
Пошаговый план действий
Определяем, какой код отслеживания Google Analytics у вас установлен на сайте (библиотека analytics.js или gtag.js). От этого будет зависеть способ реализации и добавление дополнительных строчек кода в GA. У меня в блоге osipenkov.ru – это Global Site Tag.
Реализовывать будем с помощью PHP кода:

PHP код определения IP-адреса посетителя

<?php
$ip = $_SERVER[‘REMOTE_ADDR’] ;
?>

Не хотелось бы вдаваться в пояснения, скажу лишь то, что вы всегда можете зайти на соответствующие ресурсы по PHP (форумы, справки) и почитать про методы определения IP-адреса посетителя сайта. А лежит он (IP) в переменной REMOTE_ADDR. Это самая простая конструкция, но есть и более сложные, например, такая:

PHP код определения IP-адреса посетителя, вариант 2

<?php
if (!empty($_SERVER[‘HTTP_CLIENT_IP’] )) {
$ip=$_SERVER[‘HTTP_CLIENT_IP’] ;}
elseif (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’] )) {
$ip=$_SERVER[‘HTTP_X_FORWARDED_FOR’] ;} else {
$ip=$_SERVER[‘REMOTE_ADDR’] ;}
?>

Переменная $_SERVER[‘REMOTE_ADDR’] не всегда содержит реальное значение IP. Если клиент, например, зашел через прокси-сервер, то $_SERVER[‘REMOTE_ADDR’] вернет вам лишь адрес прокси-сервера. Для того чтобы добраться до реального адреса посетителя используют $_SERVER[‘HTTP_CLIENT_IP’] и $_SERVER[‘HTTP_X_FORWARDED_FOR’] . Второй код (который подлиннее) тоже годится, но мы будем использовать первой, состоящий из 3 строк.
Чтобы передать значения переменной из PHP в JavaScript, необходимо сделать так:

Из PHP в JavaScript

<script type=»text/javascript»>
var myip = ‘<?php echo $ip;?>’;
</script>

У нас есть PHP-переменная с именем $ip (может начинаться со знака $, ага) и значением $_SERVER[‘REMOTE_ADDR’], которая в отчетах будет отображаться как IP-адрес посетителя. И наша задача состоит в том, чтобы это значение вывести на экран, но не средствами PHP, а с помощью JavaScript. Для этого открываем теги JavaScript и объявляем переменную myip.
На месте присвоения JavaScript переменной myip мы пишем PHP код, который выводит нашу переменную $ip.
Все это вставляем в код страницы нашего сайта. Я добавлю его в header.php.

Передача IP-адреса посетителя в Google AnalyticsВставка кодов на страницу сайта

Сохраняем и отправляем обновленные настройки на сервер. Теперь в переменную myip должно передаваться значение IP-адреса посетителя. Проверить это можно в консоли разработчика браузера. На вкладке Console в Google Chrome вводим myip и нажимаем Enter.

Передача IP-адреса посетителя в Google AnalyticsConsole — Проверка передачи IP

Если увидели свой IP, значит все сделали правильно. Теперь нам необходимо передавать это значение в Google Analytics.
Создаем пользовательский параметр:
Администратор – Ресурс – Пользовательские определения – Специальные параметры — +СПЕЦИАЛЬНЫЙ ПАРАМЕТР

  • Название: IP-адрес (произвольное)
  • Область действия: сеанс
  • Активная: галочка

Сохраняем и запоминаем индекс параметра.

Передача IP-адреса посетителя в Google AnalyticsСпециальный параметр «IP-адрес»

Он нам будет нужен на следующем шаге. Поскольку я использую gtag.js, то конструкция передачи пользовательских параметров в Google Analytics с помощью параметра custom_map будет выглядеть так:

Передача пользовательских параметров через custom_map

gtag(‘config’, GA-TRACKING_ID’, {
‘custom_map’: {‘dimension1’: ‘value1’,
‘dimension2’: ‘value2’,
‘dimension3’: ‘value3’}
});
gtag(‘event’,’eventname’, {‘value1′:»1″,’value2′:»2″,’value3’:»3″});

, где GA-TRACKING_ID – код отслеживания Google Analytics.
Подробнее о специальных параметрах и показателях в gtag.js читайте в справке разработчиков Google. Для библиотеки analytics.js и кода Universal Analytics команда выглядит несколько иначе.
Можно использовать и несколько другую конструкцию. Поскольку в качестве пользовательского параметра я еще передаю Client ID, я реализовал это так:

Передача IP-адреса посетителя в Google AnalyticsВставка кодов в страницу сайта, gtag.js

, где dimension2 – индекс специального параметра, созданного раннее.
Сохраняем код и отправляем на сервер. Чтобы убедиться в том, что IP-адрес посетителя действительно передается в custom dimension, воспользуемся расширением GA Debugger.
Включив его, зайдя на сайт и перейдя в Console браузера, я увижу напротив показателя тот же самый IP.

Передача IP-адреса посетителя в Google AnalyticsПроверка передачи IP в dimension2 с помощью GA Debugger

Все передается корректно. Через некоторое время в нашем параметре «IP-адрес» будут сохраняться IP-адреса посетителей.

Передача IP-адреса посетителя в Google AnalyticsДанные по IP в Google Analytics

Тоже самое можно реализовать с помощью JavaScript и стороннего сервиса. Например, через https://www.ipify.org/. Вы можете увидеть, как он возвращает IP-адрес для вашего собственного устройства, нажав на ссылку https://api.ipify.org?format=jsonp&callback=getIP .