Dlaczego Google +1 rejestruje ruchy myszy? [Zamknięte]


196

To jest tylko na stronach z polem Google +1 w mojej witrynie:

wprowadź opis zdjęcia tutaj

Wydaje się, że odpala zdarzenie przy każdym ruchu myszy. Czy ktoś wie, co robi? Szukałem w Google (być może powinienem chociaż raz wypróbować Bing na tym!), Ale chyba nikt o tym nie napisał. Czy rejestruje informacje o moich nawykach przeglądania? Czy wykrywanie ludzi przypomina zachowanie CAPTCHA?

Przykładowy adres URL, naciśnij klawisz F12 w chromie, przejdź do osi czasu i naciśnij przycisk nagrywania, a następnie przesuń kursor myszy po tej stronie (plus te pytania, nie martw się):

https://plusone.google.com/u/0/_/+1/button?hl=pl-US&jsh=r%3Bgc%2F22224365-adc8a19e#url=/programming/6667544/google -1-record-mouse-move & size = tall & count = true & 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

Jeśli chodzi o to, co jest warte (widzę, że to będzie popularne pytanie), nie sądzę, że kryje się w tym coś złowieszczego, może to nawet być bezużyteczny artefakt / błąd, ale jeśli wykonuje jakieś śledzenie, wydaje mi się to trochę zwodnicze.

Polityka prywatności Google +1

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

Polityka prywatności przycisku Google +1

28 czerwca 2011 r

Polityka prywatności Google opisuje, w jaki sposób traktujemy dane osobowe, gdy korzystasz z produktów i usług Google, w tym informacje podawane, gdy używasz przycisku Google +1. Ponadto poniżej opisano nasze dodatkowe praktyki dotyczące prywatności związane z korzystaniem z przycisku +1.

Informacje, które zbieramy i jak są udostępniane

Przycisk Google +1 pozwala publicznie udostępniać informacje światu. Przycisk Google +1 pomaga Tobie i innym osobom otrzymywać spersonalizowane treści od Google i naszych partnerów. Fakt, że dałeś +1, zostanie zarejestrowany przez Google wraz z informacją o stronie, którą przeglądałeś po kliknięciu przycisku +1. Twoje + 1-ki mogą być wyświetlane innym jako adnotacja z nazwą Twojego profilu i zdjęciem w usługach Google (np. W wynikach wyszukiwania lub w profilu Google) lub w innych miejscach na stronach internetowych i reklamach w Internecie.

Będziemy rejestrować informacje o Twojej aktywności +1, aby zapewnić Tobie i innym użytkownikom lepszą obsługę usług Google.

Aby użyć przycisku Google +1, musisz mieć publiczny profil Google widoczny dla całego świata, który przynajmniej zawiera nazwę wybraną dla profilu. Ta nazwa będzie używana w różnych usługach Google, aw niektórych przypadkach może zastąpić inną nazwę, której użyłeś podczas udostępniania treści na swoim koncie Google. Możemy wyświetlać Twoją tożsamość profilu Google osobom, które mają Twój adres e-mail lub inne informacje umożliwiające identyfikację.

Wykorzystanie zebranych informacji

Oprócz wyżej opisanych zastosowań informacje, które nam przekazujesz, są wykorzystywane zgodnie z naszą główną Polityką prywatności Google.

Możemy udostępniać zbiorcze statystyki związane z aktywnością +1 użytkowników opinii publicznej, naszym użytkownikom i partnerom, takim jak wydawcy, reklamodawcy lub powiązane witryny. Na przykład możemy powiedzieć wydawcy, że „10% osób, które dały +1 tej stronie, znajduje się w Tacoma w stanie Waszyngton”.

Twoje wybory

Możesz wyświetlić listę elementów, które dałeś +1, na karcie +1 w swoim profilu. Możesz usunąć poszczególne elementy z tej listy.

Możesz zrezygnować z otrzymywania rekomendacji +1 w witrynach stron trzecich (w tym w reklamach w witrynach stron trzecich) od znajomych.

Będziemy przechowywać dane (takie jak twoje ostatnie +1) lokalnie w przeglądarce. Możesz mieć dostęp do tych informacji i wyczyścić je w ustawieniach przeglądarki.

Więcej informacji

Google przestrzega zasad prywatności Safe Harbor w USA. Więcej informacji na temat struktury Safe Harbor lub naszej rejestracji znajduje się na stronie internetowej Departamentu Handlu.


3
Human like behavior? To interesująca myśl. Widziałem kiedyś podobny kod śledzenia myszy, który po prostu rejestrował współrzędne X / Y w zmiennych globalnych. Zostały one później wykorzystane do uruchomienia / zatrzymania / anulowania niestandardowego przewijania wtyczki jQuery. Była lepsza implementacja niż ta globalna funkcja śledzenia (którą ostatecznie zmieniłem).
Mrchief,

7
@Mrchief, niektórzy klienci pokera używają ruchów myszy do wykrywania automatycznych graczy, myślałem, że może Google uznałoby to za skuteczną obronę przed botami budującymi profile i dającymi +1 stronom, ale równoważącym je z ich stronami, co daje im nieuczciwą przewagę konkurencyjną. Kto wie.
Tom Gullen,

1
Zastanawiam się, dlaczego Facebook nie robi czegoś takiego ... (czy robi to?)
Mrchief

7
Może to być testowanie interfejsu użytkownika. Wiem, że Google lubi przeprowadzać wiele testów A / B, stąd ich 41 odcieni niebieskiego testu jakiś czas temu. Być może próbują śledzić, w jaki sposób użytkownik porusza się po stronie, aby zapewnić lepszy interfejs użytkownika.
Greg Guida

Jakiego narzędzia używasz?
Sid

Odpowiedzi:


123

Wygląda na to, że przesuwa generator myszy losowych ruchami myszy.

Sam program obsługi ruchów myszy robi coś w następujący sposób:

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

djest (screen.width * screen.width + screen.height) * 1000000i cjest zmienną, która zaczyna się od 1.

Wszystko to jest zawarte w zakresie funkcji anonimowej, która sama jest natychmiast oceniana w celu zwrócenia funkcji przypisanej do właściwości o nazwie „random”. Ta zwrócona funkcja wygląda mniej więcej tak:

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

hash, BTW, jest zmienną, która zaczyna się jako skrót MD5 plików cookie strony, lokalizacji new Date().getTime(), oraz Math.random().

(Należy oczywiście pamiętać, że Google może w dowolnym momencie zmienić zwrócony skrypt, a tym samym unieważnić tę analizę)


4
Świetna odpowiedź, dziękuję, jakiś pomysł, dlaczego potrzebowałby losowej liczby? Rozumiem, że ruchy myszy to całkiem dobry sposób na generowanie liczb losowych, ale czy nie zawiodłoby to na urządzeniach mobilnych (nie mają myszy)
Tom Gullen

27
Nie jest Math.random()wysyłany z bieżącego znacznika czasu? Jeśli tak, przy tak szeroko stosowanym przycisku można spodziewać się wielu kolizji. Może wyjaśnić dodatkowe wysiłki.
Yahel,

7
@yahelc: To może pomóc . W skrócie, w 2008 roku większość przeglądarek zaszczepiła czas tylko raz, albo na początku procesu, albo po raz pierwszy wywoływana jest funkcja Math.random () (w trakcie procesu lub w oknie / zakładce). Oczywiście od tego czasu wszystko mogło się zmienić.
Anomie

3
Wydaje się to dziwne - gdyby to był cel, czy nie użyliby po prostu window.crypto.getRandomValues: (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Rich Bradshaw

3
Przypuśćmy, że miałoby to dać lepsze losowe ziarno generatora, wystarczyłoby ziarno dostarczone przez Google, prawda? Lub przynajmniej jeden lub dwa ruchy myszy. Obecny sposób wydaje się rzeczywiście nieco podejrzany. Byłoby miło, gdyby Google pokazał tutaj pewną przejrzystość tam, gdzie inni jej nie udzielili.
Wernight

47

Rzeczywisty kod, który jest wykonywany, pochodzi z kodu Shindiga znalezionego tutaj:

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

Potrzebna jest bezpieczna liczba losowa, aby zapewnić, że utworzony tutaj bezpieczny kanał postMessage nie zostanie naruszony przez skrypty na stronie do wykonywania dowolnych działań.

Oto artykuł wyjaśniający, dlaczego używanie Math.random () jest złe:

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


32

Jeśli najpierw możesz załadować skrypt, możesz podłączyć addEventListener i zalogować wszystkich, którzy ustawiają addEventListener i zobaczyć, kto to robi, a następnie, patrząc na odpowiedni kod, zobacz, co robią.

Umieść to na miejscu przed załadowaniem kodu 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));
}

Aby zobaczyć, co nasłuchuje funkcji window.onmousemove, musisz to zrobić później, ponieważ jest to tylko zmienne przypisanie, a nie funkcja, którą możesz przechwycić. Czasami więc po uruchomieniu kodu inicjalizacji strony można to zrobić, aby zarejestrować to, co zostało do niego podłączone:

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

2
Dobry pomysł, ale to nie zadziała, jeśli window.onmousemovezamiast tego skrypt ustawi stary styl (podobnie jak skrypt Google).
Anomie

Gdyby tak było, on również może zaczepić to w ten sam sposób.
jfriend00

@Ben Alpert - dodałem kod do window.onmousemove do mojej powyższej odpowiedzi.
jfriend00

Sam kod funkcji może być dowolnie długi. Nie chcemy wrzucać wielu KB do konsoli, więc właśnie wybrałem krótszy limit, który nie przytłoczy okna dziennika. Jeśli to za mało kodu, aby można było określić, gdzie on jest, liczbę można zwiększyć, ale może nie być praktyczne wyświetlanie rzeczy w oknie dziennika, jeśli nie ma górnej granicy długości.
jfriend00

17

W nieuporządkowanym kodzie od 22 lipca zauważysz, że onmousemove jest częścią klasy 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))
    }
}();

Mnoży sumę xiy przez 2 ^ 16 za pomocą przesunięcia bitów, a następnie dodaje kilka innych wymiarów i mnoży to wszystko przez czas w modach 1000000 milisekund. To zdecydowanie wygląda na algorytm losowy.

Nie jestem pewien, dlaczego strona potrzebowałaby czegoś takiego, być może używa pliku cookie, co uniemożliwia automatyczne klikanie +1? Po kliknięciu przycisku „+1” na wyskakującym ekranie logowania pojawia się losowa liczba dołączana jako skrót, adres URL kończy się na „& hl = en-US # RANDOMNUMBER”


4

Założę się, że jest to beta „In-Page Analytics”. Utworzenie kursora i kliknięcie mapy cieplnej.


Istnieje również kilka dobrych projektów, które robią dokładnie to samo w tej aplikacji node.js , na przykład
Pier Paolo Ramon

+1 (sic). Dobrze jest wiedzieć, gdzie ludzie klikają, aby wiedzieć, co jest przydatne, i które miejsce najlepiej nadaje się na reklamy.
rds

Fajny pomysł, ale nie ma nic wspólnego z tematem;)
naugtur,


1

Prawdopodobnie używają go do mierzenia, jak szybko użytkownicy przechodzą z jednego elementu interfejsu do drugiego, jak często pomijane są kliknięcia itp.

Zwykle mam głęboko cyniczny pogląd na funkcje inwazyjne, ale nie sądzę, aby stanowiło to zagrożenie dla prywatności. To szokujące, ponieważ jest niezwykle drobnoziarniste, ale nie jest zbyt odkrywcze . Czy twój ruch myszy koduje dane bankowe? Porno?

Google i tym podobne mają mnóstwo danych wysokiej jakości do śledzenia. Współrzędne myszy mają bardzo ograniczone zastosowanie.

Aby trochę odejść od tematu:

Do pewnego stopnia im więcej danych na temat ludzi gromadzisz, tym więcej masz problemów. Słyszę (od Schneiera i tym podobnych), że agencje wywiadowcze cierpią z powodu ogromnej liczby fałszywych alarmów wywołanych ich stale przyspieszającą akwizycją danych - stosunek sygnału do szumu jest fatalny. Uważam to za nieco zabawne.


Dzięki skryptom Google +1 pojawiającym się w mini-grach, które używają myszy do sterowania ... Naprawdę będzie naprawdę dużo hałasu. XD
PicoCreator

1

Nie można z całą pewnością stwierdzić, co Google robi z tymi danymi dotyczącymi ruchu myszy. Jak sam widzisz, nie zwraca on z powrotem mnóstwa informacji na serwer, dlatego nie musisz się martwić.

Pierwszy to prawdopodobnie ogólny moduł obsługi zdarzeń. Powód, dla którego myślę, że tak jest, jeśli czytasz źródło, możesz zobaczyć, że w wierszu, zanim pojawi się błąd Error („Nieprawidłowy argument słuchacza”); a następnie jeden lub jeden po następnym występuje błąd rzutu („Nieprawidłowy typ zdarzenia”). Ponieważ odpalona linia znajduje się pomiędzy tymi dwoma wyjątkami (związanymi ze zdarzeniem), jestem prawie pewien, że jest to jakiś moduł obsługi zdarzeń. Używając debuggera, tak naprawdę nic nie robi (nie przeskakuje do żadnej innej funkcji), więc wydaje się, że jest dostępny do przyszłej implementacji.

Druga funkcja jest identyczna z pierwszą. Ponieważ jest to gTalk, przypuszczam, że aktualizuje twój status (poza domem, online itp.).

Trzeci wydaje się być aktualizatorem treści lub czymś podobnym, ponieważ widać ciągi takie jak cacheTimeout itp. Rozrzucone wokół niego.

Moje 2 centy.


1

to jest naprawdę dalekie od daleko idących, ale tutaj i tak idzie ...

obraca się wokół rodzaju trajektorii i krzywizny ruchu myszy od punktu początkowego w kierunku różnych atraktorów, tj. 2 elementów / linków na stronie.

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

w skrócie, jeśli umieścisz dwa konkurujące linki / przyciski i przeanalizujesz trajektorię w kierunku jednego z tych linków, możesz wydedukować wzór lub sposób , w jaki podjąłeś decyzję o kliknięciu tylko 1 z tych linków (zobacz vid około 13:00)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.