Perché Google +1 registra i movimenti del mio mouse? [chiuso]


196

Questo è solo nelle pagine con una casella di Google +1 sul mio sito Web:

inserisci qui la descrizione dell'immagine

Sembra scatenare un evento ad ogni mossa del mouse. Qualcuno sa cosa sta facendo? Ho cercato su Google (forse dovrei provare Bing per una volta su questo!) Ma nessuno sembra averlo scritto. Sta registrando informazioni sulle abitudini di navigazione dei miei visitatori? È una sorta di CAPTCHA rilevare esseri umani come un comportamento?

Esempio di URL, premi F12 in Chrome, vai alla timeline e premi record, quindi sposta il mouse su questa pagina (più una di queste domande, non ti preoccupare):

https://plusone.google.com/u/0/_/+1/button?hl=en-US&jsh=r%3Bgc%2F22224365-adc8a19e#url=/programming/6667544/google -1-registrazione del mouse-move & size = & alto contare = true & id = I1_1310488711647 & parent = https:? //plusone.google.com/u/0/_/+1/button hl = it-IT & jsh = r% 3Bgc% 2F22224365-adc8a19e # url = https: //stackoverflow.com/questions/6667544/google-1-recording-mouse-move&size=tall&count=true&id=I1_1310488711647

Per quello che vale (vedo che questa sarà una domanda popolare), non penso che ci sia qualcosa di sinistro dietro di esso, potrebbe anche essere un artefatto / bug inutile, ma se sta facendo una sorta di tracciamento, beh, mi sembra un po 'ingannevole.

Informativa sulla privacy di Google +1

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

Informativa sulla privacy del pulsante Google +1

28 giugno 2011

Le Norme sulla privacy di Google descrivono il modo in cui trattiamo le informazioni personali quando si utilizzano i prodotti e i servizi di Google, comprese le informazioni fornite quando si utilizza il pulsante Google +1. Inoltre, di seguito vengono descritte le nostre pratiche sulla privacy aggiuntive specifiche per l'utilizzo del pulsante +1.

Informazioni che raccogliamo e come vengono condivise

Il pulsante Google +1 ti consente di condividere le informazioni pubblicamente con il mondo. Il pulsante Google +1 consente a te e ad altri di ricevere contenuti personalizzati da Google e dai nostri partner. Il fatto che tu abbia fatto +1 su qualcosa verrà registrato da Google, insieme alle informazioni sulla pagina che stavi visualizzando quando hai fatto clic sul pulsante +1. I tuoi +1 possono apparire ad altri come un'annotazione con il nome del tuo profilo e la foto nei servizi di Google (come nei risultati di ricerca o sul tuo profilo Google) o altrove su siti Web e annunci su Internet.

Registreremo informazioni sulla tua attività +1 al fine di fornire a te e agli altri utenti un'esperienza migliore sui servizi di Google.

Per utilizzare il pulsante Google +1, devi avere un profilo Google pubblico visibile al mondo, che includa almeno il nome che hai scelto per il profilo. Tale nome verrà utilizzato in tutti i servizi di Google e in alcuni casi potrebbe sostituire un altro nome utilizzato durante la condivisione di contenuti nel proprio account Google. Potremmo mostrare l'identità del tuo profilo Google a persone che hanno il tuo indirizzo email o altre informazioni identificative.

Utilizzo delle informazioni raccolte

Oltre agli usi sopra descritti, le informazioni che ci fornisci sono utilizzate in base alla nostra politica sulla privacy di Google.

Potremmo condividere statistiche aggregate relative all'attività +1 degli utenti con il pubblico, i nostri utenti e partner, come editori, inserzionisti o siti collegati. Ad esempio, possiamo dire a un editore che "il 10% delle persone che hanno fatto +1 su questa pagina si trova a Tacoma, Washington".

Le tue scelte

Puoi visualizzare l'elenco degli elementi che hai fatto +1 sulla scheda +1 del tuo profilo. Puoi rimuovere singoli elementi da quell'elenco.

È possibile scegliere di non visualizzare i consigli +1 su siti Web di terzi (compresi gli annunci su siti di terzi) di persone che conosci.

Conserveremo i dati (come i tuoi +1 recenti) localmente nel tuo browser. Potresti essere in grado di accedere e cancellare queste informazioni nelle impostazioni del tuo browser.

Maggiori informazioni

Google aderisce ai principi sulla privacy degli Stati Uniti Safe Harbor. Per ulteriori informazioni sul framework Safe Harbor o sulla nostra registrazione, consultare il sito Web del Dipartimento del Commercio.


3
Human like behavior? Questo è un pensiero interessante. Una volta ho visto un codice di monitoraggio del mouse simile che stava semplicemente registrando le coordinate X / Y nelle variabili globali. Successivamente sono stati utilizzati per avviare / arrestare / annullare lo scorrimento personalizzato su un plug-in jQuery. C'è stata un'implementazione migliore di questa cosa di tracciamento globale (che alla fine ho cambiato).
Mrchief,

7
@Mrchief, alcuni client di poker usano i movimenti del mouse per rilevare i giocatori automatizzati, stavo pensando che forse Google potrebbe considerarlo un'efficace difesa contro i robot che costruiscono profili e + 1ing molti siti ma ponderandoli verso i loro siti dando loro un vantaggio competitivo sleale. Chi lo sa però.
Tom Gullen,

1
Mi chiedo perché Facebook non stia facendo nulla del genere ... (o lo fa?)
Mrchief,

7
Potrebbe essere per una sorta di test dell'interfaccia utente. So che a Google piace fare molti test a / b, quindi i loro 41 toni di blu testano qualche tempo fa. Forse stanno cercando di tracciare il modo in cui l'utente si sposta attraverso la pagina, al fine di fornire un'interfaccia utente migliore.
Greg Guida,

Qual è lo strumento che stai utilizzando?
Sid,

Risposte:


123

Sembra che stia seminando un generatore di numeri casuali con i movimenti del mouse.

Il gestore di spostamento del mouse stesso fa qualcosa in linea con quanto segue:

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

dè (screen.width * screen.width + screen.height) * 1000000ec è una variabile che inizia come 1.

Tutto ciò è racchiuso nell'ambito di una funzione anonima, che a sua volta viene immediatamente valutata per restituire una funzione assegnata a una proprietà denominata "casuale". La funzione restituita è simile alla seguente:

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

hash, BTW, è una variabile che inizia come hash MD5 dei cookie, della posizione, della new Date().getTime()e della paginaMath.random() .

(Si noti, ovviamente, che Google può modificare lo script restituito in qualsiasi momento e quindi invalidare questa analisi)


4
Ottima risposta grazie, hai idea del perché avrebbe bisogno di un numero casuale? Capisco che i movimenti del mouse sono un ottimo modo per generare un numero casuale, ma questo non fallirebbe con i dispositivi mobili (non hanno un mouse)
Tom Gullen,

27
Non viene Math.random()eseguito il seeding dal timestamp corrente? In tal caso, con un pulsante ampiamente distribuito come questo, ti aspetteresti molte collisioni. Potrebbe spiegare gli sforzi extra.
Yahel,

7
@yahelc: questo può aiutare . In breve, nel 2008 la maggior parte dei browser ha eseguito il seeding dell'ora solo una volta, all'avvio del processo o alla prima chiamata di Math.random () (nel processo o nella finestra / scheda). Le cose potrebbero essere cambiate da allora, ovviamente.
Anomie,

3
Questo sembra strano - se questo fosse lo scopo, non userebbero semplicemente window.crypto.getRandomValues: (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Rich Bradshaw,

3
Supponendo che fosse per dare un migliore seme generatore casuale, un seme fornito da Google sarebbe abbastanza, no? O almeno una o due mosse del mouse. Il modo attuale sembra davvero un po 'sospetto. Sarebbe bello che Google mostrasse un po 'di trasparenza qui dove altri non ce l'hanno fatta.
Wernight,

47

Il codice effettivo che viene eseguito deriva dal codice Shindig trovato qui:

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

È necessario un numero casuale sicuro per garantire che il canale postMessage sicuro creato qui non possa essere compromesso da script nella pagina per eseguire azioni arbitrarie.

Ecco un articolo che spiega perché l'utilizzo di Math.random () non va bene:

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


32

Se riesci a caricare prima lo script, puoi agganciare addEventListener e registrare tutti coloro che stanno impostando addEventListener e vedere chi lo sta facendo e poi, guardando il codice pertinente, vedere cosa stanno facendo.

Metti questo in posizione prima che il codice di Google venga caricato:

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));
}

Per vedere cosa stava ascoltando window.onmousemove, dovresti farlo in seguito perché è solo un compito variabile, non una funzione che puoi intercettare. Quindi a volte dopo l'esecuzione del codice di inizializzazione della pagina, si dovrebbe fare questo per registrare ciò che è stato collegato ad esso:

if (window.onmousemove) {
    console.log(window.onmousemove.toString().slice(0,80));
}

2
Buona idea, ma questo non funzionerà se lo script imposta invece il vecchio stile window.onmousemove(come fa lo script di Google).
Anomie,

In tal caso, anche On può agganciarlo allo stesso modo.
jfriend00,

@Ben Alpert - Ho aggiunto del codice per window.onmousemove alla mia risposta sopra.
jfriend00

Il codice funzione stesso potrebbe essere arbitrariamente lungo. Non vogliamo scaricare più kb nella console, quindi ho appena scelto un limite più breve che non travolgerà la finestra del registro. Se questo non è abbastanza codice per essere in grado di identificare dove si trova, il numero può essere aumentato, ma potrebbe non essere pratico visualizzare le cose nella finestra del registro se non c'era limite superiore alla lunghezza.
jfriend00

17

Nel codice ordinato al 22 luglio noterai che onmousemove fa parte della 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))
    }
}();

Si sta moltiplicando la somma di xey per 2 ^ 16 usando bitshift, quindi aggiungendo alcune altre dimensioni e moltiplicando tutto questo per tempo in millisecondi mod 1000000. Questo sembra sicuramente un algoritmo randomizzato.

Non sono sicuro del motivo per cui la pagina avrebbe bisogno di qualcosa del genere, forse sta usando un cookie, impedendo il clic +1 automatico? Quando fai clic su "+1" nella schermata di accesso che appare appare un numero casuale aggiunto come hash, l'URL termina con "& hl = en-US # RANDOMNUMBER"


4

Scommetto che è la Beta "In-Page Analytics". Fare un cursore e fare clic sulla mappa di calore.


Ci sono anche alcuni buoni progetti che fanno esattamente la stessa cosa con questa app node.js , ad esempio
Pier Paolo Ramon,

+1 (sic). È utile sapere dove le persone fanno clic per sapere che cosa è utile e che posto è il migliore per gli annunci pubblicitari.
rds

Bella idea, ma niente a che fare con l'argomento;)
naugtur

2

Penso che l'articolo di Guo e Agichtein del CHI 2010 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf possa fornire ulteriori idee sul perché Google lo stia facendo.

Apparentemente i movimenti del mouse sono un proxy approssimativo per il movimento degli occhi e consentono alle persone di approssimare i risultati del monitoraggio degli occhi.


1

Probabilmente lo usano per misurare la velocità con cui gli utenti si spostano da un elemento dell'interfaccia utente a un altro, con quale frequenza mancano i clic, ecc.

Normalmente ho una visione profondamente cinica delle funzionalità invasive ma non penso che questo sia un rischio per la privacy. È scioccante perché è così insolitamente a grana fine, ma non è molto rivelatore . Il movimento del mouse codifica i dettagli bancari? Porno?

Google e simili hanno molti dati di alta qualità con cui rintracciarti. Le coordinate del mouse hanno un'applicazione molto limitata.

Per andare un po 'fuori tema:

In una certa misura, maggiore è il numero di dati raccolti sulle persone, maggiori saranno i problemi. Ho sentito (da Schneier e simili) che le agenzie di intelligence soffrono dell'enorme numero di falsi positivi innescati dalla loro acquisizione di dati in costante accelerazione - il rapporto segnale-rumore è spaventoso. Lo trovo in qualche modo divertente.


Con gli script di Google +1, che appaiono sui mini giochi, che utilizza il mouse per i controlli ... Ci sarà davvero molto rumore. XD
PicoCreator il

1

È impossibile dire con certezza cosa fa Google con questi dati di movimento del mouse. Come puoi vedere, non sta restituendo un sacco di informazioni al server, quindi nulla di cui preoccuparsi.

Il primo è probabilmente un gestore di eventi generico. Il motivo per cui penso che sia se leggi la fonte, puoi vederlo sulla riga prima che venga generato Error ("Argomento listener non valido"); e il prossimo o uno dopo il successivo viene generato l'errore ("Tipo di evento non valido"). Dato che la linea di demarcazione si trova tra queste due eccezioni (relative all'evento), sono abbastanza sicuro che si tratti di una specie di gestore di eventi. Usando il debugger, in realtà non fa nulla (non passa a qualche altra funzione) quindi sembra che sia lì per un'implementazione futura.

La seconda funzione è identica alla prima. Dal momento che è gTalk suppongo che aggiorni il tuo stato (via, online ecc.).

Il terzo sembra essere un programma di aggiornamento dei contenuti o qualcosa di simile, poiché puoi vedere stringhe come cacheTimeout ecc.

I miei 2 centesimi.


1

questo è davvero al di là di gran lunga recuperabile, ma qui va comunque ...

ruota attorno al tipo di traiettoria e curvatura di un movimento del mouse da un punto di partenza verso diversi attrattori, ovvero 2 elementi / collegamenti su una pagina.

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

in breve, se metti due link / pulsanti concorrenti e analizzi la traiettoria verso uno di quei link, puoi dedurre uno schema o come hai preso la decisione di fare clic su 1 solo di quei link (vedi video intorno alle 13:00)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.