Как Google Analytics собирает свои данные?
Да, я знаю, что вам нужно встроить javascript Google Analytics на свою страницу.
Но как собирается собранная информация на сервере Google Analytics?
Например, запрос AJAX невозможен из-за настроек безопасности браузеров (междоменные скрипты).
Возможно, кто-то уже посмотрел на запутанный код javascript Google?
Ответы
Ответ 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:
Это полезно в тех случаях, когда вы хотите отслеживать событие непосредственно перед тем, как пользователь переходит от вашего сайта, не задерживая навигацию.
- Транспортный механизм "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, поэтому его нет межсайтового скриптового скрипта. Это была ошибка в рассуждении со мной. **