Передача IP-адреса посетителя в Google Analytics
Google Analytics в своих отчетах не предоставляет данные по IP-адресам пользователей. Однако по умолчанию в Analytics все же хранится полный IP-адрес посетителя. Он необходим для включения географических данных в отчеты и скрыт от анализа. Но что же делать, если очень нужны данные IP-адресов? Разбираемся в этой статье.
Но перед тем, как мы займемся настройкой, настоятельно рекомендую ознакомиться со следующими материалами Google:
Также не забываем про недавние обновленные правила обработки персональных данных (GDPR - General Data Protection Regulation).
Чтобы правильно интерпретировать данные, важно понимать общие принципы их сбора и обработки. В Analytics, как вы уже знаете, есть 4 основных компонента:
- сбор данных;
- обработка данных;
- настройка;
- отчеты.
Большинство из нас привыкли думать только об отчетах 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-адрес с помощью gtag.js?
- Как анонимизировать IP-адрес с помощью analytics.js?
После сбора IP-адреса вводятся на 2 и 3 компонентах (настройки и обработки данных). На этих этапах ваши фильтры, блоки и обработчики применяются Google. Большинство пользователей фильтруют свой собственный IP-адрес (или компании) из данных Google Analytics. Это не позволяет внутреннему трафику размывать отчеты ненужной статистикой.
Подробнее об этом читайте в статье «Фильтры в Google Analytics».
На этапе обработки Google передает данные в базу данных отчетов, которые разбиваются на различные пути. IP-адреса, которые были уже анонимизированы или отфильтрованы, вычищаются. Хотя данные от интернет-провайдера видны в ваших отчетах, их IP-адреса не показываются.
Поэтому, когда Google собирает IP-адреса, они не предоставляют эти данные конечным пользователям. Суть в том, что вы не можете видеть IP-адреса в своих отчетах Google Analytics. Вы даже не сможете проверить фильтры исключений, поскольку Google полностью удаляет любые IP-данные до того, как они попадут в отчеты.
Но что делать, если все же необходимо отслеживать IP-адреса посетителей? Решение простое – определять IP на серверной стороне, а потом сохранять его в Custom Dimension (специальный параметр) в Google Analytics. В результате вы можете получить что-то похожее:
Здесь каждому Client ID, который тоже передается в качестве специального параметра, соответствует IP-адрес посетителя и сеансы. Сделано с помощью специальных отчетов.
Пошаговый план действий
Определяем, какой код отслеживания Google Analytics у вас установлен на сайте (библиотека analytics.js или gtag.js). От этого будет зависеть способ реализации и добавление дополнительных строчек кода в GA. У меня в блоге osipenkov.ru – это Global Site Tag.
Реализовывать будем с помощью PHP кода:
1 2 3 |
<?php $ip = $_SERVER['REMOTE_ADDR']; ?> |
Не хотелось бы вдаваться в пояснения, скажу лишь то, что вы всегда можете зайти на соответствующие ресурсы по PHP (форумы, справки) и почитать про методы определения IP-адреса посетителя сайта. А лежит он (IP) в переменной REMOTE_ADDR. Это самая простая конструкция, но есть и более сложные, например, такая:
1 2 3 4 5 6 7 |
<?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, необходимо сделать так:
1 2 3 |
<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.
Сохраняем и отправляем обновленные настройки на сервер. Теперь в переменную myip должно передаваться значение IP-адреса посетителя. Проверить это можно в консоли разработчика браузера. На вкладке Console в Google Chrome вводим myip и нажимаем Enter.
Если увидели свой IP, значит все сделали правильно. Теперь нам необходимо передавать это значение в Google Analytics.
Создаем пользовательский параметр:
Администратор – Ресурс – Пользовательские определения – Специальные параметры - +СПЕЦИАЛЬНЫЙ ПАРАМЕТР
- Название: IP-адрес (произвольное)
- Область действия: сеанс
- Активная: галочка
Сохраняем и запоминаем индекс параметра.
Он нам будет нужен на следующем шаге. Поскольку я использую gtag.js, то конструкция передачи пользовательских параметров в Google Analytics с помощью параметра custom_map будет выглядеть так:
1 2 3 4 5 6 |
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, я реализовал это так:
, где dimension2 – индекс специального параметра, созданного раннее.
Сохраняем код и отправляем на сервер. Чтобы убедиться в том, что IP-адрес посетителя действительно передается в custom dimension, воспользуемся расширением GA Debugger.
Включив его, зайдя на сайт и перейдя в Console браузера, я увижу напротив показателя тот же самый IP.
Все передается корректно. Через некоторое время в нашем параметре «IP-адрес» будут сохраняться IP-адреса посетителей.
Тоже самое можно реализовать с помощью JavaScript и стороннего сервиса. Например, через https://www.ipify.org/. Вы можете увидеть, как он возвращает IP-адрес для вашего собственного устройства, нажав на ссылку https://api.ipify.org?format=jsonp&callback=getIP .
В следующей статье, которая будет посвящена передаче IP-адреса посетителя с помощью Google Tag Manager, я опишу этот способ более подробно.