Por que o Google +1 registra os movimentos do meu mouse? [fechadas]


196

Isso é apenas em páginas com uma caixa do Google +1 no meu site:

insira a descrição da imagem aqui

Parece estar disparando um evento a cada movimento do mouse. Alguém sabe o que está fazendo? Eu pesquisei no Google (talvez eu deva experimentar o Bing pela primeira vez neste caso!), Mas ninguém parece ter escrito sobre isso. Está gravando informações sobre meus hábitos de navegação dos visitantes? É algum tipo de CAPTCHA para detectar seres humanos como comportamento?

Exemplo de URL, pressione F12 no chrome, vá para a linha do tempo e pressione record, depois mova o mouse pela página (mais esta pergunta, não se preocupe):

https://plusone.google.com/u/0/_/+1/button?hl=pt-BR&jsh=r%3Bgc%2F22224365-adc8a19e#url=/programming/6667544/google -1-gravação-movimento-do-mouse & tamanho = alto & contagem = verdadeiro & id = I1_1310488711647 & parent = https: //plusone.google.com/u/0/_/+1/button? Hl = pt-BR & jsh = r% 3Bgc% 2F22224365-adc8a19e # url = https: //stackoverflow.com/questions/6667544/google-1-recording-mouse-move&size=tall&count=true&id=I1_1310488711647

Pelo que vale a pena (posso ver que essa será uma pergunta popular), não acho que exista algo sinistro por trás disso, pode até ser um artefato / bug inútil, mas se estiver fazendo algum tipo de rastreamento, bem, parece um pouco enganador para mim.

Política de Privacidade do Google +1

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

Política de Privacidade do Botão +1 do Google

28 de junho de 2011

A Política de Privacidade do Google descreve como tratamos as informações pessoais quando você usa os produtos e serviços do Google, incluindo as informações fornecidas quando você usa o botão Google +1. Além disso, a seguir, descrevemos nossas práticas de privacidade adicionais específicas para o uso do botão +1.

Informações que coletamos e como são compartilhadas

O botão do Google +1 é uma maneira de compartilhar informações publicamente com o mundo. O botão Google +1 ajuda você e outras pessoas a receber conteúdo personalizado do Google e de nossos parceiros. O fato de você marcar com +1 algo será registrado pelo Google, além de informações sobre a página que você estava visualizando quando clicou no botão +1. Seus + 1s podem aparecer para outras pessoas como uma anotação com o nome e a foto do seu perfil nos serviços do Google (como nos resultados de pesquisa ou no seu perfil do Google) ou em outros lugares nos sites e anúncios na Internet.

Registraremos informações sobre sua atividade do +1 para fornecer a você e a outros usuários uma melhor experiência nos serviços do Google.

Para usar o botão Google +1, você precisa ter um perfil público do Google visível para o mundo, que inclui no mínimo o nome que você escolheu para o perfil. Esse nome será usado nos serviços do Google e, em alguns casos, poderá substituir outro nome usado ao compartilhar conteúdo em sua Conta do Google. Podemos exibir sua identidade do perfil do Google para pessoas que tenham seu endereço de e-mail ou outras informações de identificação.

Uso das informações coletadas

Além dos usos descritos acima, as informações que você nos fornece são usadas de acordo com a nossa principal Política de Privacidade do Google.

Podemos compartilhar estatísticas agregadas relacionadas à atividade de +1 dos usuários com o público, nossos usuários e parceiros, como editores, anunciantes ou sites conectados. Por exemplo, podemos dizer a um editor que "10% das pessoas que marcaram esta página com +1 foram em Tacoma, Washington".

Suas escolhas

Você pode visualizar a lista de itens marcados com +1 na guia +1 do seu perfil. Você pode remover itens individuais dessa lista.

Você pode optar por não ver as recomendações do +1 em sites de terceiros (incluindo anúncios em sites de terceiros) de pessoas que você conhece.

Armazenaremos dados (como seus + 1s recentes) localmente no seu navegador. Você pode acessar e limpar essas informações nas configurações do seu navegador.

Mais Informações

O Google segue os princípios de privacidade do Safe Harbor dos EUA. Para obter mais informações sobre a estrutura Safe Harbor ou nosso registro, consulte o site do Departamento de Comércio.


3
Human like behavior? Esse pensamento é interessante. Eu vi um código de rastreamento de mouse semelhante uma vez que estava simplesmente gravando coordenadas X / Y em variáveis ​​globais. Mais tarde, eles foram usados ​​para iniciar / parar / cancelar a rolagem personalizada em um plug-in jQuery. Houve uma implementação melhor do que essa coisa de rastreamento global (que eu mudei eventualmente).
Mrchief

7
@Mchchief, alguns clientes de pôquer usam movimentos do mouse para detectar jogadores automatizados. Eu estava pensando que talvez o Google considere uma defesa eficaz contra a criação de perfis por bots e adicionar vários sites, mas ponderando-os em seus sites, dando-lhes uma vantagem competitiva injusta. Quem sabe embora.
Tom Gullen

1
Maravilha porque Facebook não está fazendo qualquer coisa assim ... (ou não?)
Mrchief

7
Pode ser para algum tipo de teste de interface do usuário. Eu sei que o Google gosta de fazer um monte de testes a / b, portanto, seus 41 tons de azul testar um tempo atrás. Talvez eles estejam tentando rastrear como o usuário se move pela página, a fim de fornecer uma interface melhor.
Greg Guida

Qual é a ferramenta que você está usando?
Sid

Respostas:


123

Parece estar semeando um gerador de números aleatórios com os movimentos do mouse.

O manipulador de movimentação do mouse faz algo ao longo das linhas a seguir:

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) * 1000000e cé uma variável que começa como 1.

Tudo isso está envolvido no escopo de uma função anônima, que é avaliada imediatamente para retornar uma função atribuída a uma propriedade denominada "aleatória". Essa função retornada se parece com isso:

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

hash, BTW, é uma variável que começa como o hash MD5 dos cookies da página, localização new Date().getTime(), e Math.random().

(Observe, é claro, que o Google pode alterar o script retornado a qualquer momento e, portanto, invalidar essa análise)


4
Ótima resposta, obrigado, alguma idéia de por que precisaria de um número aleatório? Eu entendo os movimentos do mouse é uma boa maneira bonita de gerar um número aleatório, mas que isso não falhar com dispositivos móveis (eles não têm um mouse)
Tom Gullen

27
Não é Math.random()propagada do carimbo de data / hora atual? Nesse caso, com um botão amplamente implantado como esse, você esperaria muitas colisões. Pode explicar os esforços extras.
Yahel

7
@ yahelc: Isso pode ajudar . Em resumo, em 2008 a maioria dos navegadores propagou o horário apenas uma vez, no início do processo ou na primeira vez em que Math.random () é chamado (no processo ou na janela / guia). As coisas podem ter mudado desde então, é claro.
Anomia

3
Isso parece estranho - se esse fosse o objetivo, eles não usariam window.crypto.getRandomValues: (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Rich Bradshaw

3
Supondo que fosse fornecer uma semente geradora aleatória melhor, uma semente fornecida pelo Google seria suficiente, não? Ou pelo menos apenas um ou dois movimentos do mouse. A maneira atual parece um pouco desconfiada. Seria bom que o Google mostre alguma transparência aqui, onde outros falharam em fornecê-lo.
Wernight

47

O código real que está sendo executado é derivado do código Shindig encontrado aqui:

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

É necessário um número aleatório seguro para garantir que o canal postMessage seguro criado aqui não possa ser comprometido por scripts na página para executar ações arbitrárias.

Aqui está um artigo que explica por que usar Math.random () é ruim:

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


32

Se você conseguir carregar seu script primeiro, poderá conectar addEventListener e registrar todos os que estão configurando addEventListener e ver quem está fazendo isso. Depois, olhando o código relevante, veja o que eles estão fazendo.

Coloque isso antes que o código do Google seja carregado:

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 o que estava ouvindo window.onmousemove, você teria que fazer isso depois, porque é apenas uma atribuição de variável, não uma função que você pode interceptar. Às vezes, depois que o código de inicialização da página é executado, você deve fazer isso para registrar o que foi conectado a ela:

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

2
Boa ideia, mas isso não funcionará se o script definir o estilo antigo window.onmousemove(como o script do Google).
Anomia

Se for esse o caso, também podemos ligar isso da mesma maneira.
jfriend00

@ Ben Alpert - eu adicionei algum código para window.onmousemove à minha resposta acima.
jfriend00

O próprio código de função pode ser arbitrariamente longo. Não queremos despejar vários kb no console, então escolhi um limite menor que não sobrecarregará a janela de log. Se esse código não for suficiente para identificar onde está, o número poderá ser aumentado, mas pode não ser prático exibir as coisas na janela de log se não houver um limite superior para o comprimento.
jfriend00

17

No código organizado de 22 de julho, você notará que onmousemove faz parte da 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))
    }
}();

É multiplicar a soma de xey por 2 ^ 16 usando deslocamento de bits, adicionando outras dimensões e multiplicando tudo isso por tempo em milissegundos mod 1000000. Isso definitivamente parece um algoritmo aleatório.

Não sei por que a página precisaria de algo assim, talvez esteja usando um cookie, impedindo o clique automático de +1? Quando você clica em "+1", a tela de login exibida parece ter um número aleatório anexado como hash, o URL termina com "& hl = pt-BR # RANDOMNUMBER"


4

Aposto que você é o beta "Análise na página". Fazendo um cursor e clique em mapa de calor.


Existem também alguns bons projetos que faz exatamente o mesmo este app Node.js , por exemplo
Pier Paolo Ramon

+1 (sic). É bom saber onde as pessoas clicam para saber o que é útil e qual é o melhor local para anúncios.
rds 22/07

Boa idéia, mas nada a ver com o assunto;)
naugtur

2

Penso que o artigo de Guo e Agichtein da CHI 2010 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf pode fornecer mais idéias sobre o motivo pelo qual o Google está fazendo isso.

Aparentemente, os movimentos do mouse são uma proxy aproximada dos movimentos oculares e permitem que as pessoas aproximem os resultados do rastreamento ocular.


1

Eles provavelmente o usam para medir a rapidez com que os usuários se movem de um item da interface do usuário para outro, com que frequência os cliques perdem etc.

Normalmente, tenho uma visão profundamente cínica dos recursos invasivos, mas não acho que isso seja um risco à privacidade. É chocante porque é tão incomumente refinado, mas não é muito revelador . O movimento do mouse codifica os dados bancários? Pornô?

O Google e similares têm muitos dados de alta qualidade para acompanhar você. As coordenadas do mouse têm aplicação muito limitada.

Para sair um pouco do tópico:

Até certo ponto, quanto mais dados você coletar sobre as pessoas, mais problemas você terá. Ouvi (de Schneier e similares) que as agências de inteligência estão sofrendo com o grande número de falsos positivos desencadeados por sua aquisição de dados cada vez mais acelerada - a relação sinal / ruído é péssima. Acho isso um tanto divertido.


Com os scripts do google +1, aparecendo em minijogos, que usam o mouse para controles ... Realmente haverá muito barulho. XD
PicoCreator 21/07

1

É impossível dizer com certeza o que o Google faz com esses dados de movimento do mouse. Como você pode ver, não está retornando cargas e informações de volta ao servidor, portanto, não há nada com que se preocupar.

O primeiro é provavelmente um manipulador de eventos genérico. Motivo pelo qual penso que, se você ler a fonte, poderá ver isso na linha antes de lançar o Error ("argumento de ouvinte inválido"); e próximo ou um após o próximo, há Erro de lançamento ("Tipo de evento inválido"). Como a linha disparada está entre essas duas exceções (relacionadas ao evento), tenho certeza de que é algum tipo de manipulador de eventos. Usando o depurador, ele não faz nada realmente (não pula para outra função), então parece que está lá para implementação futura.

A segunda função é idêntica à primeira. Como é do gTalk, suponho que ele atualize seu status (ausente, online etc.).

O terceiro parece ser um atualizador de conteúdo ou algo semelhante, pois você pode ver seqüências de caracteres como cacheTimeout etc. espalhadas ao redor.

Meus 2 centavos.


1

isso está muito além de muito buscado, mas aqui vai mesmo assim ...

ele gira em torno do tipo de trajetória e curvatura de um movimento de mouse, de um ponto de partida para diferentes atratores, ou seja, leva 2 itens / links em uma página.

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

em resumo, se você colocar dois links / botões concorrentes e analisar a trajetória em direção a um desses links, poderá deduzir um padrão ou como chegou à decisão de clicar em apenas um desses links (veja o vídeo por volta das 13:00)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.