Подтвердить что ты не робот

Как Google Analytics собирает свои данные?

Да, я знаю, что вам нужно встроить javascript Google Analytics на свою страницу.

Но как собирается собранная информация на сервере Google Analytics?

Например, запрос AJAX невозможен из-за настроек безопасности браузеров (междоменные скрипты).

Возможно, кто-то уже посмотрел на запутанный код javascript Google?

4b9b3361

Ответ 1

Когда html-страница делает запрос на файл ga.js, http-протокол отправляет большой объем данных, информацию об IP-адресах, ссылках, browers, языке, системе. Нет необходимости использовать ajax.

Но все же некоторые данные не могут быть достигнуты таким образом, поэтому GA script помещает изображение в html с дополнительными параметрами, посмотрите на этот пример:

http://www.google-analytics.com/__utm.gif?utmwv=4.3&utmn=1464271798&utmhn=www.example.com&utmcs=UTF-8&utmsr=1920x1200&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=10.0%20r22&utmdt=Page title&utmhid=1805038256&utmr=0&utmp=/&utmac=cookie value

Это пустое изображение, иногда называемое пикселем отслеживания, которое GA помещает в HTML.

Ответ 2

Некоторые хорошие ответы здесь, которые индивидуально стремятся к тому или иному методу для отправки данных. Там ценная ссылка, которую я чувствую, отсутствует в приведенных выше ответах, и охватывает все методы.

Google ссылается на различные методы отправки транспортных "транспортных механизмов"

В документации Analytics.js Google упоминает три основных механизма транспорта, которые он использует для отправки данных.

Указывает транспортный механизм, с которым будут отправляться хиты. Возможные варианты: "маяк" , "ххр" или "изображение". По умолчанию analytics.js попытается найти лучший метод, основанный на размерах ударов и браузерах. Если вы укажете "маяк" , и браузер пользователя не поддерживает метод navigator.sendBeacon, он вернется к "image" или "xhr" в зависимости от размера ударов.

  • Один из распространенных и стандартных способов отправки некоторых данных в Google (что показано в ответе Thinker) заключается в добавлении данных в качестве параметров GET к пикселю отслеживания. Это относится к категории, которую Google называет транспортным средством "изображение".
  • Во-вторых, Google может использовать транспортный метод "маяк" , если клиентский браузер поддерживает его. Это часто мой предпочтительный метод, потому что он попытается немедленно отправить информацию. Или в словах Google:

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

  1. Транспортный механизм "xhr" - это третий способ, с помощью которого Google Analytics может отправлять данные домой, а используемый механизм транспорта может зависеть от таких вещей, как размер хита. (Я не уверен, какие другие факторы входят в GA, решая оптимальный механизм транспорта для использования).

Если вам интересно, как заставить GA использовать конкретный механизм транспорта, вот фрагмент кода примера, который заставляет это событие попадать в качестве "маяка":

ga('send', 'event', 'click', 'download-me', {transport: 'beacon'});

Надеюсь, это поможет.


Кроме того, если вам интересно узнать эту тему, потому что вы хотели бы ее перенести и отправить на свой сайт, я рекомендую создать привязку к отправке Google Analytics, которая позволит вам захватить полезную нагрузку и AJAX. на ваш собственный сервер.

    ga(function(tracker) {

       // Grab a reference to the default sendHitTask function.
       originalSendHitTask = tracker.get('sendHitTask');

       // Modifies sendHitTask to send a copy of the request to a local server after
       // sending the normal request to www.google-analytics.com/collect.
       tracker.set('sendHitTask', function(model) {
         var payload = model.get('hitPayload');
         originalSendHitTask(model);

         var xhr = new XMLHttpRequest();
         xhr.open('POST', '/index.php?task=mycollect', true);
         xhr.send(payload);
       });
    });

Ответ 3

Не глядя на код, я предполагаю, что их данные собираются из HTTP-заголовков, которые они получают в асинхронном запросе.

Помните, что большинство браузеров отправляют данные, такие как ОС, платформа, браузер, версия, локаль и т.д. Также у них есть IP-адрес, чтобы они могли оценивать ваше местоположение. И я предполагаю, что у них есть какой-то умный алгоритм, чтобы решить, являетесь ли вы уникальным посетителем или нет.

Время на сайте, вероятно, рассчитывается с помощью события onUnload().

Ответ 4

На веб-странице Google Analytics представлена ​​подробная информация о том, как сервер Google Analytics собирает данные. http://code.google.com/apis/analytics/docs/concepts/gaConceptsOverview.html

Все данные Google Analytics собираются и упаковываются в строку запроса URL-адреса запроса и отправляются на сервер Google Analytics. Запрос http выполняется с помощью gif-изображения (http://www.google-analytics.com/__utm.gif), активированного Google Analytics JS.

Ответ 5

Это достаточно легко сказать, используя что-то вроде вкладки Firebug Net.

Ajax не требуется - поскольку данные не извлекаются из Google. Они просто кодируют информацию в строке запроса, а затем загружают прозрачный gif, используя ее.

Ответ 6

Чтобы поделиться другими очень хорошими ответами, Google предоставляет API для отслеживания асинхронных "виртуальных просмотров страниц", которые, как сообщают сами авторы сайта, в своих сценариях для Google.

_gaq.push(['_trackPageview', 'my_unique_action']);

Они обеспечивают его, чтобы можно было отслеживать действия, которые не являются частью обычных просмотров страниц и HTTP-запросов.

Руководство по отслеживанию Async: http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html#Syntax

Ответ 7

Используйте расширение HTTPfox или firebug Firefox, чтобы выяснить, какие HTTP-запросы отправляет браузер и какие ответы он получает.

Я не знаю, как работает Google Analytics, но одна из возможностей - заставить браузер загружать изображение: <img src="http://my-analytics.com" width="1" height="1"> (с одним прозрачным пикселем) и записывать все заголовки HTTP-запросов (например, Referer:) на стороне сервера.

Ответ 8

//edit: см. внизу код

* Хорошо, найди ответ во время обсуждения с моим другом:-) Информация для Google Analytics представлена ​​тремя способами:

  • Элемент списка
  • HTTP-запрос может быть проанализирован со всей информацией заголовков http.
  • Файл cookie распознается сервером Google Analytics.
  • Ajax-вызов выполняется во встроенном javascript для отправки такой информации, как разрешение дисплея, версия флэш-плеера и т.д. Эти данные не передаются через заголовки http. * Это возможно, потому что вызов ajax выполняется в контексте встроенного javascript, поэтому его нет межсайтового скриптового скрипта. Это была ошибка в рассуждении со мной. **