Comment google analytics collecte-t-il ses données?

Oui, je sais que vous devez intégrer le javascript de google analytics dans votre page.

Mais comment les informations collectées soumises au serveur google analytics?

par exemple, une requête AJAX ne sera pas possible en raison des paramètres de sécurité des navigateurs (cross domain scripting).

peut-être que quelqu'un avait déjà regardé le code Javascript déroutant de google?

24
demandé sur echox 2009-05-21 13:20:45

8 réponses

quand page html fait une demande pour une ga.fichier js le protocole http envoie beaucoup de données, sur IP, refer, browers, langue, système. Il n'est pas nécessaire d'utiliser de l'ajax.

mais certaines données ne peuvent pas être obtenues de cette façon, donc le script GA met l'image en html avec des paramètres supplémentaires, jetez un oeil à cet exemple:

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

il s'agit d'une image vierge, parfois appelée pixel de suivi, que GA met en HTML.

26
répondu Thinker 2014-03-21 22:56:06

quelques bonnes réponses ici qui individuellement tendent à frapper sur une méthode ou une autre pour envoyer les données. Il y a une référence précieuse qui, à mon avis, est manquante dans les réponses ci-dessus, bien que, et couvre toutes les méthodes.

Google se réfère aux différentes méthodes d'envoi de données 'mécanismes de transport'

D'après les analyses.la documentation de JS Google mentionne le trois principaux mécanismes de transport qu'il utilise pour envoyer des données.

spécifie le mécanisme de transport avec lequel les hits seront envoyés. Les options sont 'phare', 'xhr", ou "image". Par défaut, google analytics.js va essayer de trouver la meilleure méthode basée sur la taille de la touche et les capacités du navigateur. Si vous spécifiez "beacon" et que le navigateur de l'utilisateur ne supporte pas le navigator.sendBeacon méthode, elle retombera à 'image' ou 'xhr' en fonction de la taille de la touche.

  1. L'un des moyens communs et standard pour envoyer certaines des données à Google (qui est affiché dans la réponse de Thinker's) est en ajoutant les données comme paramètres GET à un pixel de suivi. Cela relèverait de la catégorie que Google appelle un transport "image".
  2. Deuxièmement, Google peut utiliser la méthode de transport' beacon ' si le navigateur du client la supporte. C'est souvent ma méthode préférée car elle tentera d'envoyer les informations immédiatement. Ou dans les mots de Google:

C'est utile dans le cas où vous souhaitez suivre un événement juste avant un utilisateur navigue loin de votre site, sans retarder la navigation.

  1. le mécanisme de transport 'xhr' est la troisième façon que Google Analytics peut envoyer des données à la maison, et le mécanisme de transport particulier qui est utilisé peut dépendre de choses telles que la taille du résultat. (Je ne sais pas quels autres facteurs entrent en jeu dans la décision de GA le mécanisme de transport optimal à utiliser)

au cas où vous seriez curieux de savoir comment forcer GA à utiliser un transport spécifique mécanisme, voici un exemple de fragment de code qui force cet événement a frappé à être envoyé comme un "phare":

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

Espérons que cette aide.


en outre, si vous êtes curieux de ce sujet parce que vous souhaitez capturer et envoyer ces données à votre propre site aussi, je recommande la création d'une liaison à Google Analytics' Envoyer, qui vous permet de saisir la charge utile et AJAX il à votre propre serveur.

    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);
       });
    });
8
répondu jstats 2015-11-17 16:38:25

sans regarder le code, je suppose que leurs données sont collectées à partir des en-têtes HTTP qu'ils reçoivent dans la requête asynchrone.

rappelez-vous que la plupart des navigateurs envoient des données telles que OS, plate-forme, navigateur, version, locale, etc... En outre, ils ont l'IP afin qu'ils puissent deviner votre emplacement. Et je suppose qu'ils ont une sorte d'algorithme intelligent pour décider si vous êtes un visiteur unique ou pas.

Le temps sur le site est probablement calculé en utilisant un onUnload() événement.

6
répondu Yuval Adam 2009-05-21 09:24:47

la page Web de Google Analytics fournit des informations détaillées sur la façon dont le serveur de Google Analytics collecte des données. http://code.google.com/apis/analytics/docs/concepts/gaConceptsOverview.html

toutes les données de Google Analytics sont collectées et stockées dans la chaîne de requête de L'URL de requête et envoyées au serveur Google Analytics. La requête http est faite par une image gif(http://www.google-analytics.com/__utm.gif) activé par Google Analytics JS.

6
répondu Is Learning English 2011-04-07 05:53:17

il est assez facile de le dire en utilisant quelque chose comme coupe-feu.

Ajax n'est pas nécessaire - puisque les données ne sont pas récupérées à partir de Google. Ils encodent simplement l'information dans une chaîne de requête, puis chargent un gif transparent en l'utilisant.

4
répondu Quentin 2009-05-21 09:24:18

pour étendre sur d'autres très bonnes réponses, Google ne fournit une API pour suivre async "pageviews virtuelles" qui sont signalés par les auteurs de site Web eux-mêmes dans leurs scripts à Google.

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

ils le fournissent pour qu'il soit possible de suivre des actions qui ne font pas partie des vues de page régulières et des requêtes http.

guide de suivi Async: http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html#Syntax

2
répondu miguelr 2012-03-21 09:39:11

httpfox ou firebugg extension Firefox pour comprendre ce que le navigateur envoie comme requêtes HTTP et quelles réponses il reçoit.

Je ne sais pas comment Google Analytics fonctionne, mais une possibilité est de faire télécharger une image par le navigateur:<img src="http://my-analytics.com" width="1" height="1"> (avec un seul pixel transparent), et enregistrer tous les en-têtes de requête HTTP (par exemple Referer:) côté serveur.

1
répondu pts 2009-05-21 09:23:24

//edit: voir commentaire en bas

*Ok, trouver une réponse lors d'une discussion avec un ami à moi :-) Les informations à google analytics sont soumises de trois façons:

  1. élément de la Liste
  2. la requête HTTP peut être analysée avec toutes les informations des en-têtes http.
  3. Un cookie est reconnu par le serveur google analytics.
  4. un appel ajax est fait dans le javascript intégré pour soumettre de telles informations comme résolution d'affichage, version flash player,etc. ces informations ne sont pas transmises via les en-têtes http. *Ceci est possible, parce que l'appel ajax est fait dans le contexte du javascript intégré, de sorte qu'il n'y a pas de script de domaine croisé. C'était une erreur de raisonnement de ma part.**
-1
répondu echox 2011-02-05 09:41:17