Pourquoi Google +1 enregistre-t-il les mouvements de ma souris? [fermé]

196

Ce n'est que sur les pages avec une case Google +1 sur mon site Web:

entrez la description de l'image ici

Il semble déclencher un événement à chaque mouvement de souris. Quelqu'un sait ce qu'il fait? J'ai cherché sur Google (je devrais peut-être essayer Bing pour une fois sur celui-ci!) Mais personne ne semble avoir écrit à ce sujet. Enregistre-t-il des informations sur les habitudes de navigation de mes visiteurs? Est-ce une sorte de CAPTCHA pour détecter un comportement humain comme?

Exemple d'URL, appuyez sur F12 en chrome, accédez à la chronologie et appuyez sur Enregistrer, puis déplacez votre souris sur cette page (elle plus cette question, ne vous inquiétez pas):

https://plusone.google.com/u/0/_/+1/button?hl=en-US&jsh=r%3Bgc%2F22224365-adc8a19e#url=/programming/6667544/google -1-enregistrement-déplacement de la souris & taille = grand & count = vrai & id = I1_1310488711647 & parent = https: //plusone.google.com/u/0/_/+1/button? Hl = en-US & jsh = r% 3Bgc% 2F22224365-adc8a19e # url = https: //stackoverflow.com/questions/6667544/google-1-recording-mouse-move&size=tall&count=true&id=I1_1310488711647

Pour ce que ça vaut (je peux voir que ça va être une question populaire), je ne pense pas qu'il y ait quelque chose de sinistre derrière, ça pourrait même être un artefact / bug inutile, mais s'il fait une sorte de suivi, eh bien, cela me semble un peu trompeur.

Politique de confidentialité de Google +1

http://www.google.com/intl/en/privacy/plusone/

Politique de confidentialité du bouton Google +1

28 juin 2011

La politique de confidentialité de Google décrit la façon dont nous traitons les informations personnelles lorsque vous utilisez les produits et services de Google, y compris les informations fournies lorsque vous utilisez le bouton Google +1. En outre, ce qui suit décrit nos pratiques de confidentialité supplémentaires spécifiques à votre utilisation du bouton +1.

Informations que nous collectons et comment elles sont partagées

Le bouton Google +1 est un moyen pour vous de partager des informations publiquement avec le monde. Le bouton Google +1 vous aide, vous et les autres, à recevoir du contenu personnalisé de Google et de nos partenaires. Le fait que vous ayez attribué +1 à quelque chose sera enregistré par Google, ainsi que des informations sur la page que vous consultiez lorsque vous avez cliqué sur le bouton +1. Vos +1 peuvent apparaître à d'autres sous la forme d'une annotation avec votre nom de profil et votre photo dans les services Google (comme dans les résultats de recherche ou sur votre profil Google) ou ailleurs sur des sites Web et des annonces sur Internet.

Nous enregistrerons des informations sur votre activité +1 afin de vous offrir, ainsi qu'à d'autres utilisateurs, une meilleure expérience sur les services Google.

Pour utiliser le bouton Google +1, vous devez avoir un profil Google public visible dans le monde, qui comprend au minimum le nom que vous avez choisi pour le profil. Ce nom sera utilisé dans tous les services Google et, dans certains cas, il peut remplacer un autre nom que vous avez utilisé lors du partage de contenu sous votre compte Google. Nous pouvons afficher votre identité de profil Google aux personnes disposant de votre adresse e-mail ou d'autres informations d'identification.

Utilisation des informations collectées

En plus des utilisations décrites ci-dessus, les informations que vous nous fournissez sont utilisées sous réserve de notre politique de confidentialité principale de Google.

Nous pouvons partager des statistiques agrégées liées à l'activité +1 des utilisateurs avec le public, nos utilisateurs et nos partenaires, tels que les éditeurs, les annonceurs ou les sites connectés. Par exemple, nous pouvons dire à un éditeur que "10% des personnes qui ont attribué +1 à cette page se trouvent à Tacoma, Washington."

Vos choix

Vous pouvez afficher la liste des éléments que vous avez attribué +1 à l'onglet +1 de votre profil. Vous pouvez supprimer des éléments individuels de cette liste.

Vous pouvez refuser de voir les recommandations +1 sur les sites Web tiers (y compris sur les annonces sur des sites tiers) de personnes que vous connaissez.

Nous stockons les données (telles que vos +1 récents) localement dans votre navigateur. Vous pourrez peut-être accéder à ces informations et les effacer dans les paramètres de votre navigateur.

Plus d'information

Google adhère aux principes de confidentialité US Safe Harbor. Pour plus d'informations sur le cadre Safe Harbor ou notre enregistrement, consultez le site Web du Département du commerce.

Tom Gullen
la source
3
Human like behavior? Voilà une pensée intéressante. J'ai vu une fois un code de suivi de souris similaire qui enregistrait simplement les coordonnées X / Y dans des variables globales. Ils ont ensuite été utilisés pour démarrer / arrêter / annuler le défilement personnalisé sur un plugin jQuery. Il y avait une meilleure implémentation que cette chose de suivi global (que j'ai finalement changé).
Mrchief
7
@Mrchief, certains clients de poker utilisent les mouvements de la souris pour détecter les joueurs automatisés, je pensais que Google pourrait peut-être le considérer comme une défense efficace contre les robots créant des profils et + 1 de nombreux sites, mais en le pondérant vers leurs sites en leur donnant un avantage concurrentiel injuste. Mais qui sait.
Tom Gullen
1
Je me
7
Cela pourrait être pour une sorte de test d'interface utilisateur. Je sais que Google aime faire beaucoup de tests A / B, d'où leurs 41 nuances de bleu testées il y a quelque temps. Peut-être qu'ils essaient de suivre la façon dont l'utilisateur se déplace à travers la page, afin de fournir une meilleure interface utilisateur.
Greg Guida
Quel est l'outil que vous utilisez?
Sid

Réponses:

123

Il semble ensemencer un générateur de nombres aléatoires avec les mouvements de votre souris.

Le gestionnaire de déplacement de la souris lui-même fait quelque chose comme suit:

var b = ((event.X << 16) + event.Y) * (new Date().getTime() % 1000000);
c = c * b % d;
if (previousMouseMoveHandler) previousMouseMoveHandler.call(arguments);

dest (screen.width * screen.width + screen.height) * 1000000, et cest une variable qui commence par 1.

Tout cela est enveloppé dans la portée d'une fonction anonyme, qui elle-même est immédiatement évaluée pour renvoyer une fonction qui est affectée à une propriété nommée "aléatoire". Cette fonction retournée ressemble à ceci:

var b = c;
b += parseInt(hash.substr(0,20), 16);
hash = MD5(hash);
return b / (d + Math.pow(16, 20));

hash, BTW, est une variable qui commence par le hachage MD5 des cookies, de l'emplacement, du new Date().getTime()et de la page Math.random().

(Notez bien sûr que Google peut modifier le script renvoyé à tout moment et donc invalider cette analyse)

Anomie
la source
4
Grande réponse merci, une idée pourquoi il faudrait un nombre aléatoire? Je comprends que les mouvements de la souris sont un assez bon moyen de générer un nombre aléatoire, mais cela n'échouerait-il pas avec les appareils mobiles (ils n'ont pas de souris)
Tom Gullen
27
N'est-il pas Math.random()issu de l'horodatage actuel? Si oui, avec un bouton largement déployé comme celui-ci, vous vous attendriez à beaucoup de collisions. Pourrait expliquer les efforts supplémentaires.
Yahel
7
@yahelc: Cela peut aider . En bref, en 2008, la plupart des navigateurs ont semé le temps une seule fois, soit au démarrage du processus, soit lors du premier appel de Math.random () (dans le processus ou dans la fenêtre / l'onglet). Les choses ont peut-être changé depuis, bien sûr.
Anomie
3
Cela semble cependant étrange - si tel était le but, n'utiliseraient-ils pas simplement window.crypto.getRandomValues: (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Rich Bradshaw
3
En supposant qu'il s'agissait de donner une meilleure graine de générateur aléatoire, une graine fournie par Google serait suffisante, non? Ou au moins un ou deux mouvements de souris. La voie actuelle semble en effet un peu suspecte. Ce serait bien d'avoir Google montrer une certaine transparence ici où d'autres n'ont pas réussi à le donner.
Wernight
47

Le code réel en cours d'exécution est dérivé du code Shindig trouvé ici:

http://svn.apache.org/repos/asf/shindig/trunk/features/src/main/javascript/features/shindig.random/random.js

Un nombre aléatoire sécurisé est nécessaire pour garantir que le canal postMessage sécurisé créé ici ne peut pas être compromis par des scripts sur la page pour exécuter des actions arbitraires.

Voici un article qui explique pourquoi l'utilisation de Math.random () est mauvaise:

http://baagoe.com/en/RandomMusings/javascript/

Paul Lindner
la source
32

Si vous pouvez d'abord charger votre script, vous pouvez accrocher addEventListener et consigner tous ceux qui définissent addEventListener et voir qui le fait, puis, en consultant le code pertinent, voir ce qu'ils font.

Mettez cela en place avant le chargement du code Google:

var oldListener = document.addEventListener;
document.addEventListener = function(type, listener, capture) {
    if (type == "mousedown" || type == "mouseup" || type == "mousemove") {
        console.log("type=" + type + " listener=" + listener.toString().slice(0, 80));
    }
    return (oldListener.apply(this, arguments));
}

Pour voir ce qu'écoutait window.onmousemove, vous devriez le faire après parce que c'est juste une affectation de variable, pas une fonction que vous pouvez intercepter. Donc, parfois, après l'exécution du code d'initialisation de la page, vous procédiez ainsi pour enregistrer ce qui y était connecté:

if (window.onmousemove) {
    console.log(window.onmousemove.toString().slice(0,80));
}
jfriend00
la source
2
Bonne idée, mais cela ne fonctionnera pas si le script définit à la place l'ancien style window.onmousemove(comme le fait le script de Google).
Anomie
Si tel était le cas, on peut accrocher cela aussi de la même manière.
jfriend00
@Ben Alpert - J'ai ajouté du code pour window.onmousemove à ma réponse ci-dessus.
jfriend00
Le code de fonction lui-même peut être arbitrairement long. Nous ne voulons pas vider plusieurs ko dans la console, j'ai donc choisi une limite plus courte qui ne submergera pas la fenêtre du journal. Si ce n'est pas assez de code pour pouvoir identifier où il se trouve, le nombre peut être augmenté, mais il peut ne pas être pratique d'afficher les choses dans la fenêtre de journal s'il n'y avait pas de limite supérieure à la longueur.
jfriend00
17

Dans le code épuré du 22 juillet, vous remarquerez que onmousemove fait partie de la classe Gb.random:

Gb.random = function () {
    function a(a) {
        var b = Jb();
        b.update(a);
        return b.ib()
    }
    var b = la.random(),
        c = 1,
        d = (screen[za] * screen[za] + screen[J]) * 1E6,
        e = i.onmousemove || Db();
    i.onmousemove = function (a) {
        if (i.event) a = i.event;
        var b = a.screenX + a.clientX << 16;
        b += a.screenY + a.clientY;
        b *= (new Date)[Ta]() % 1E6;
        c = c * b % d;
        return e[G](i, ka[x][Aa][G](arguments))
    };
    var f = a(k.cookie + "|" + k[B] + "|" + (new Date)[Ta]() + "|" + b);
    return function () {
        var b = c;
        b += ia(f[cb](0, 20), 16);
        f = a(f);
        return b / (d + la.pow(16, 20))
    }
}();

C'est multiplier la somme de x et y par 2 ^ 16 en utilisant le décalage de bits, puis en ajoutant d'autres dimensions et en multipliant tout cela par le temps en millisecondes mod 1000000. Cela ressemble définitivement à un algorithme de randomisation.

Je ne sais pas pourquoi la page aurait besoin de quelque chose comme ça, peut-être qu'elle utilise un cookie, empêchant un clic +1 automatisé? Lorsque vous cliquez sur le "+1", l'écran de connexion qui apparaît semble avoir un nombre aléatoire ajouté comme hachage, l'URL se termine par "& hl = en-US # RANDOMNUMBER"

NoBugs
la source
4

Je vous parie sa version bêta "In-Page Analytics". Faire un curseur et cliquer sur la carte thermique.

Fresheyeball
la source
Il y a aussi de bons projets qui font exactement la même chose que cette application node.js , par exemple
Pier Paolo Ramon
+1 (sic). Il est bon de savoir où les gens cliquent pour savoir ce qui est utile et quel endroit est le meilleur pour les publicités.
rds
Belle idée, mais rien à voir avec le sujet;)
naugtur
2

Je pense que l'article de Guo et Agichtein de CHI 2010 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf peut fournir d'autres idées sur les raisons pour lesquelles Google fait cela.

Apparemment, les mouvements de la souris sont un indicateur approximatif des mouvements oculaires et permettent aux gens d'approximer les résultats du suivi oculaire.

Panos Ipeirotis
la source
1

Ils l'utilisent probablement pour mesurer la vitesse à laquelle les utilisateurs passent d'un élément d'interface utilisateur à un autre, la fréquence à laquelle les clics manquent, etc.

J'ai normalement une vision profondément cynique des fonctionnalités invasives, mais je ne pense pas que ce soit un risque pour la vie privée. C'est choquant parce qu'il est si exceptionnellement fin, mais ce n'est pas très révélateur . Le mouvement de votre souris code-t-il les coordonnées bancaires? Porno?

Google et autres ont de nombreuses données de haute qualité pour vous suivre. Les coordonnées de la souris ont une application très limitée.

Pour aller un peu hors sujet:

Dans une certaine mesure, plus vous collectez de données sur les personnes, plus vous avez de problèmes. J'entends (par Schneier et autres) que les agences de renseignement souffrent du grand nombre de faux positifs déclenchés par leur acquisition de données toujours plus rapide - le rapport signal / bruit est épouvantable. Je trouve cela un peu amusant.

vaporiser
la source
Avec les scripts google +1, apparaissant sur les mini-jeux, qui utilise la souris pour les contrôles ... Il y aura vraiment vraiment beaucoup de bruit. XD
PicoCreator
1

Il est impossible de dire avec certitude ce que Google fait avec ces données de mouvement de souris. Comme vous pouvez le constater, il ne renvoie pas des charges et des charges d'informations au serveur, donc, rien à craindre.

Le premier est probablement un gestionnaire d'événements générique. La raison pour laquelle je pense que c'est si vous lisez la source, vous pouvez le voir sur la ligne avant qu'il n'y ait une erreur throw ("Argument d'écoute invalide"); et suivant ou un après le suivant, il y a une erreur de projection ("Type d'événement non valide"). Étant donné que la ligne déclenchée se situe entre ces deux exceptions (liées aux événements), je suis presque sûr qu'il s'agit d'une sorte de gestionnaire d'événements. En utilisant le débogueur, il ne fait rien (ne passe pas à une autre fonction), il semble donc qu'il soit là pour une implémentation future.

La deuxième fonction est identique à la première. Puisque c'est gTalk, je suppose qu'il met à jour votre statut (absent, en ligne, etc.).

Le troisième semble être un programme de mise à jour de contenu ou quelque chose de similaire, car vous pouvez voir des chaînes comme cacheTimeout, etc. dispersées autour de lui.

Mes 2 cents.

zatatatata
la source
1

c'est vraiment loin d'être tiré par les cheveux, mais ici ça va quand même ...

il tourne autour du type de trajectoire et de courbure d'un mouvement de souris d'un point de départ vers différents attracteurs, c'est-à-dire 2 éléments / liens sur une page.

http://sciencestage.com/v/26698/dynamics-and-embodiment-in-language-comprehension.html

en bref, si vous mettez deux liens / boutons concurrents et analysez la trajectoire vers l'un de ces liens, vous pouvez en déduire un modèle ou comment vous avez pris la décision de cliquer sur seulement 1 de ces liens (voir la vidéo vers 13h00)

utonian automatique
la source