Прокси Google Analytics

У меня особая ситуация, когда посетители сайтов могут получить доступ к странице из определенного домена, а не другим. Так что HTML и активы не являются проблемой, пока они хранятся на сервере. Google Analytics, с другой стороны, требует загрузки аналитики.js с серверов Googles, что невозможно.

поэтому я ищу способ передать. Сам веб-сервер имеет доступ в интернет и может ретранслировать трафик. Чтобы сообщить Google о моем представлении страницы, один пиксельный GIF загружено из Google, описано здесь: https://developers.google.com/analytics/resources/concepts/gaConceptsTrackingOverview

Я думаю, что было бы легко получить все параметры в GIF и использовать протокол измерения, чтобы сообщить Google с сервера, но жесткий бит - получить всю эту информацию на сервер. Чтобы скачать аналитики.js и изменить его, чтобы перейти на мой собственный сервер, мне кажется, как хак, который не является будущим доказательством вообще. Чтобы просто получить ток страница от пользователя к серверу не имеет большого значения, но мы хотели бы получить идентификатор пользователя, версию браузера и все, что вы получаете с помощью аналитики.

Как бы вы это сделали? Вы нашли решение для этого?

1 ответов


как указано в моем комментарии utm.gif больше не используется. Google Analytics полностью переключилась на протокол измерения, и теперь данные отправляются в конечную точку для протокола измерения по адресу google-analytics.com/collect - ... На самом деле это все еще возвращает прозрачный пиксель, так как вызов изображения с параметрами является завещательным способом передачи информации через границы домена.

теперь вы можете просто протокол измерения, чтобы реализовать свой собственный Google Analytics трекер.

до процитирую себя::

каждый вызов включает по крайней мере идентификатор учетной записи, которую вы хотите отправить data to, идентификатор клиента, позволяющий группировать взаимодействия в сеансы (таким образом, он должен быть уникальным для каждого посетителя, но он не должен идентифицировать пользователя лично), тип взаимодействия (просмотр страницы, Событие, Время и т. д., некоторые типы взаимодействий требуют дополнительных параметров) и версия протокол, который вы используете (на данный момент есть только одна версия.)

таким образом, самый простой пример для записи просмотра страницы будет выглядеть так:

www.google-analytics.com/collect/v=1&tid=UA-XXXXY&cid=555&t=pageview&dp=%2Fmypage

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

однако похоже, что вы предпочитаете использовать стандартный код аналитики для сбора данных и ретрансляции вызова отслеживания через собственный сервер. Хотя я не использовал следующее в производстве, я не вижу причин, почему это не сработает.

сначала вам нужна аналитика.файл js. Самостоятельный хостинг файла не рекомендуется, но данная причина заключается в том, что код иногда обновляется Google, и если вы размещаете его самостоятельно, вы можете пропустить обновления. Это можно исправить, настроив задание cron, которое регулярно загружает файл на ваш сервер, чтобы у вас всегда была текущая версия.

Далее вы бы адаптировать GA bootstrap функция загрузки кода с собственного сервера:

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.myserver.com/analytics.js','ga');

теперь у вас есть код, но вызов отслеживания все равно будет отправлен на сервер аналитики (т. е. в вашем случае он не будет отправлен вообще). Поэтому вам нужно перенаправить вызов через ваш сервер.

чтобы сделать это возможным, код Google (универсальный) Analytics имеет функция "задачи". задачи-это функции в коде отслеживания, в котором собирается вызов отслеживания.

это можно изменять задачи с помощью функции "set"объекта tracker, используя в качестве параметра taskname и передавая функцию, которая перезаписывает / перегружает функцию task.

ниже приведен пример из документации Google (за исключением того, что я опустил часть, где данные все еще отправляются в Google - вам это не нужно на данный момент):

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {

  tracker.set('sendHitTask', function(model) {
    var payLoad = model.get('hitPayload');
    var gifRequest = new XMLHttpRequest();
    var gifPath = "/__ua.gif";
    gifRequest.open('get', gifPath + '?' + payLoad, true);
    gifRequest.send();
  });
});

ga('send', 'pageview');   

теперь это отправляет данные в файл с именем __ua.gif на вашем собственном сервере (если вам нужно отправить данные кросс-домен вы можете просто сделать var ua = новый образ; ua.src = gifPath +'?'+ полезная нагрузка для создания запроса изображения).

параметр модели для sendHitTask - функция содержит (помимо большого количества накладных расходов) полезную нагрузку, то есть собранную строку запроса, содержащую данные аналитики. Затем вы можете сделать свой _ua.gif скрипт, который прокси запрос к google-analytics.com/collect - ...

на этом этапе пользовательский агент будет вашим скриптом, а IP-адрес будет это Вашего сервера, поэтому вам нужно включить параметры &uip (переопределение IP-адреса пользователя) и &ua (переопределение агента пользователя) ( https://groups.google.com/forum/#!msg/google-analytics-measurement-protocol/8TAp7_I1uTk/KNjI5IGwT58J) для получения гео-и технической информации.

если вы чувствуете себя более предприимчивыми, вы можете переопределить buildHitTask вместо этого и попробуйте добавить дополнительные параметры там (больше хлопот, вероятно, так как вам нужно будет получить IP-адрес откуда-то).

для дополнительного параметра см. ссылку для аналитика.js и Протокол Измерений.