¿Por qué Google +1 registra los movimientos de mi mouse? [cerrado]

196

Esto es solo en páginas con un cuadro de Google +1 en mi sitio web:

ingrese la descripción de la imagen aquí

Parece estar activando un evento en cada movimiento del mouse. Alguien sabe lo que está haciendo? Busqué en Google (¡tal vez debería probar Bing por una vez en este caso!) Pero nadie parece haber escrito al respecto. ¿Registra información sobre los hábitos de navegación de mis visitantes? ¿Es una especie de CAPTCHA detectar humanos como el comportamiento?

Ejemplo de URL, presione F12 en cromo, vaya a la línea de tiempo y presione grabar, luego mueva el mouse por esta página (además de esta pregunta, no se preocupe):

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

Por lo que vale (puedo ver que esta será una pregunta popular), no creo que haya nada siniestro detrás de esto, incluso podría ser un artefacto / error inútil, pero si está haciendo algún tipo de seguimiento, bueno, me parece un poco engañoso.

Política de privacidad de Google +1

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

Política de privacidad del botón Google +1

28 de junio de 2011

La Política de privacidad de Google describe cómo tratamos la información personal cuando utiliza los productos y servicios de Google, incluida la información proporcionada cuando utiliza el botón Google +1. Además, a continuación se describen nuestras prácticas de privacidad adicionales específicas para su uso del botón +1.

Información que recopilamos y cómo se comparte

El botón Google +1 es una forma de compartir información públicamente con el mundo. El botón Google +1 te ayuda a ti y a otros a recibir contenido personalizado de Google y nuestros socios. Google registrará el hecho de que hizo +1 en algo, junto con la información sobre la página que estaba viendo cuando hizo clic en el botón +1. Sus +1 pueden aparecer para otros como una anotación con su nombre de perfil y foto en los servicios de Google (como en los resultados de búsqueda o en su perfil de Google) o en otros sitios web y anuncios en Internet.

Registraremos información sobre su actividad +1 para proporcionarle a usted y a otros usuarios una mejor experiencia en los servicios de Google.

Para utilizar el botón Google +1, debe tener un perfil público de Google visible para el mundo, que como mínimo incluya el nombre que eligió para el perfil. Ese nombre se utilizará en todos los servicios de Google y, en algunos casos, puede reemplazar a otro nombre que haya utilizado al compartir contenido en su cuenta de Google. Podemos mostrar su identidad de perfil de Google a personas que tengan su dirección de correo electrónico u otra información de identificación.

Uso de la información recopilada.

Además de los usos descritos anteriormente, la información que nos proporciona está sujeta a nuestra Política de privacidad de Google principal.

Podemos compartir estadísticas agregadas relacionadas con la actividad +1 de los usuarios con el público, nuestros usuarios y socios, como editores, anunciantes o sitios conectados. Por ejemplo, podemos decirle a un editor que "el 10% de las personas que hicieron +1 en esta página están en Tacoma, Washington".

Tus opciones

Puede ver la lista de elementos que ha hecho +1 en la pestaña +1 de su perfil. Puede eliminar elementos individuales de esa lista.

Puede optar por no ver las recomendaciones de +1 en sitios web de terceros (incluidos los anuncios en sitios de terceros) de personas que conoce.

Almacenaremos datos (como sus +1 recientes) localmente en su navegador. Es posible que pueda acceder y borrar esta información en la configuración de su navegador.

Más información

Google se adhiere a los principios de privacidad de Safe Harbor de EE. UU. Para obtener más información sobre el marco de Safe Harbor o nuestro registro, visite el sitio web del Departamento de Comercio.

Tom Gullen
fuente
3
Human like behavior? Ese es un pensamiento interesante. Una vez vi un código de seguimiento del mouse similar que simplemente registraba coordenadas X / Y en variables globales. Posteriormente se utilizaron para iniciar / detener / cancelar el desplazamiento personalizado en un complemento jQuery. Hubo una mejor implementación que esta cosa de seguimiento global (que eventualmente cambié).
Mrchief
77
@Mrchief, algunos clientes de póker usan movimientos del mouse para detectar jugadores automatizados, estaba pensando que Google podría considerarlo una defensa efectiva contra los bots que crean perfiles y hacen +1 en muchos sitios, pero ponderlo hacia sus sitios les da una ventaja competitiva injusta. Quien sabe sin embargo.
Tom Gullen
1
Me
77
Podría ser para algún tipo de prueba de IU. Sé que a Google le gusta hacer muchas pruebas a / b, de ahí sus 41 tonos de prueba azul hace un tiempo. Quizás están tratando de rastrear cómo se mueve el usuario a través de la página, para proporcionar una mejor interfaz de usuario.
Greg Guida
¿Cuál es la herramienta que estás usando?
Sid

Respuestas:

123

Parece estar sembrando un generador de números aleatorios con los movimientos del mouse.

El controlador de movimiento del mouse hace algo similar a lo siguiente:

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

des (screen.width * screen.width + screen.height) * 1000000, y ces una variable que comienza como 1.

Todo esto está envuelto en el alcance de una función anónima, que se evalúa de inmediato para devolver una función que se asigna a una propiedad llamada "aleatoria". Esa función devuelta se parece a esto:

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

hash, Por cierto, es una variable que comienza como el hash MD5 de las cookies de la página, la ubicación, el new Date().getTime()y Math.random().

(Tenga en cuenta, por supuesto, que Google puede cambiar el script devuelto en cualquier momento y, por lo tanto, invalidar este análisis)

Anomia
fuente
44
Gran respuesta gracias, ¿alguna idea de por qué necesitaría un número aleatorio? Entiendo que los movimientos del mouse son una forma bastante buena de generar un número aleatorio, pero esto no fallaría con los dispositivos móviles (no tienen mouse)
Tom Gullen
27
¿No se Math.random()sembró de la marca de tiempo actual? Si es así, con un botón ampliamente desplegado como este, esperaría muchas colisiones. Podría explicar los esfuerzos adicionales.
Yahel
77
@yahelc: Esto puede ayudar . En resumen, en 2008 la mayoría de los navegadores sembraron con el tiempo solo una vez, ya sea al inicio del proceso o la primera vez que se llama a Math.random () (en el proceso o en la ventana / pestaña). Las cosas pueden haber cambiado desde entonces, por supuesto.
Anomie
3
Sin embargo, esto parece extraño: si este fuera el propósito, ¿no usarían window.crypto.getRandomValues: (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Rich Bradshaw
3
Suponiendo que fuera para dar una mejor semilla generadora aleatoria, una semilla provista por Google sería suficiente, ¿no? O al menos solo uno o dos movimientos del mouse. La forma actual parece un poco sospechosa de hecho. Sería bueno que Google muestre cierta transparencia aquí donde otros han fallado al darlo.
Wernight
47

El código real que se está ejecutando se deriva del código Shindig que se encuentra aquí:

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

Se necesita un número aleatorio seguro para garantizar que el canal seguro postMessage creado aquí no pueda verse comprometido por los scripts en la página para ejecutar acciones arbitrarias.

Aquí hay un artículo que explica por qué usar Math.random () es malo:

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

Paul Lindner
fuente
32

Si puede cargar su script primero, puede conectar addEventListener y registrar a todos los que estén configurando addEventListener y ver quién lo está haciendo y luego, al mirar el código relevante, ver qué están haciendo.

Pon esto en su lugar antes de que se cargue el código de 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));
}

Para ver qué estaba escuchando window.onmousemove, tendría que hacerlo después porque es solo una asignación variable, no una función que pueda interceptar. Entonces, a veces, después de que se ejecuta el código de inicialización de la página, haría esto para registrar lo que estaba conectado:

if (window.onmousemove) {
    console.log(window.onmousemove.toString().slice(0,80));
}
jfriend00
fuente
2
Buena idea, pero esto no funcionará si el script establece el estilo antiguo window.onmousemove(como lo hace el script de Google).
Anomie
Si ese fuera el caso, en puede conectar eso también de la misma manera.
jfriend00
@Ben Alpert: agregué un código para window.onmousemove a mi respuesta anterior.
jfriend00
El código de la función en sí podría ser arbitrariamente largo. No queremos volcar varios kb en la consola, así que elegí un límite más corto que no abrumará la ventana de registro. Si eso no es suficiente código para poder identificar dónde está, se puede aumentar el número, pero puede no ser práctico ver cosas en la ventana de registro si no hubiera un límite superior a la longitud.
jfriend00
17

En el código ordenado a partir del 22 de julio, notará que onmousemove es parte de la clase 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))
    }
}();

Multiplica la suma de x e y por 2 ^ 16 usando el desplazamiento de bits, luego agrega algunas otras dimensiones y multiplica todo esto por tiempo en milisegundos mod 1000000. Esto definitivamente parece un algoritmo de aleatorización.

No estoy seguro de por qué la página necesitaría algo como esto, ¿tal vez está usando una cookie, evitando el clic automático +1? Cuando hace clic en "+1", la pantalla de inicio de sesión que aparece parece tener un número aleatorio agregado como el hash, la url termina con "& hl = es-US # RANDOMNUMBER"

NoBugs
fuente
4

Apuesto a que es "Beta In-Page Analytics". Hacer un cursor y hacer clic en mapa de calor.

Fresheyeball
fuente
También hay algunos buenos proyectos que hacen exactamente lo mismo en esta aplicación node.js , por ejemplo
Pier Paolo Ramon
+1 (sic). Es bueno saber dónde la gente hace clic para saber qué es útil y qué lugar es mejor para los anuncios.
rds
Buena idea, pero nada que ver con el tema;)
naugtur
2

Creo que el documento de Guo y Agichtein de CHI 2010 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf puede proporcionar más ideas sobre por qué Google está haciendo eso.

Aparentemente, los movimientos del mouse son un proxy aproximado del movimiento de los ojos y permiten a las personas aproximar los resultados del seguimiento ocular.

Panos Ipeirotis
fuente
1

Probablemente lo usan para medir la rapidez con que los usuarios se mueven de un elemento de la IU a otro, con qué frecuencia fallan los clics, etc.

Normalmente tengo una visión profundamente cínica de las características invasivas, pero no creo que esto sea un riesgo de privacidad. Es impactante porque es extraordinariamente fino, pero no es muy revelador . ¿El movimiento del mouse codifica los datos bancarios? ¿Pornografía?

Google y similares tienen muchos datos de alta calidad para rastrearlo. Las coordenadas del mouse tienen una aplicación muy limitada.

Para salir un poco del tema:

Hasta cierto punto, cuantos más datos recopiles sobre las personas, más problemas tendrás. Escuché (de Schneier y similares) que las agencias de inteligencia están sufriendo la gran cantidad de falsos positivos provocados por su adquisición de datos cada vez más acelerada: la relación señal-ruido es abismal. Esto me parece algo divertido.

rociar
fuente
Con los scripts de google +1, que aparecen en mini juegos, que usan el mouse para los controles ... Realmente habrá mucho ruido. XD
PicoCreator
1

Es imposible saber con certeza qué hace Google con estos datos de movimiento del mouse. Como puede ver, no está devolviendo cargas y cargas de información al servidor, por lo tanto, no hay nada de qué preocuparse.

El primero es probablemente un controlador de eventos genérico. Motivo por el que creo que es si lees la fuente, puedes ver eso en la línea antes de que haya un error de lanzamiento ("argumento de escucha no válido"); y luego o uno después del siguiente hay un error de lanzamiento ("Tipo de evento no válido"). Dado que la línea activada se encuentra entre estas dos excepciones (relacionadas con eventos), estoy bastante seguro de que es una especie de controlador de eventos. Al usar el depurador, en realidad no hace nada (no salta a alguna otra función), por lo que parece que está ahí para una futura implementación.

La segunda función es idéntica a la primera. Como es gTalk, supongo que actualiza su estado (ausente, en línea, etc.).

El tercero parece ser el actualizador de contenido o algo similar, ya que puede ver cadenas como cacheTimeout, etc. dispersas a su alrededor.

Mis 2 centavos

zatatatata
fuente
1

esto es realmente mucho más que exagerado, pero aquí va de todos modos ...

gira en torno al tipo de trayectoria y curvatura de un movimiento del mouse desde un punto de partida hacia diferentes atractores, es decir, 2 elementos / enlaces en una página.

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

en resumen, si coloca dos enlaces / botones de la competencia y analiza la trayectoria hacia uno de esos enlaces, puede deducir un patrón o cómo llegó a la decisión de hacer clic en solo 1 de esos enlaces (vea el video alrededor de las 13:00)

utonio automático
fuente