Mengapa Google +1 merekam gerakan mouse saya? [Tutup]

196

Ini hanya pada halaman dengan kotak Google +1 di situs web saya:

masukkan deskripsi gambar di sini

Tampaknya akan meluncurkan sebuah acara di setiap gerakan mouse. Adakah yang tahu apa yang dilakukannya? Saya mencari di Google (mungkin saya harus mencoba Bing sekali ini!) Tetapi tampaknya tidak ada yang menulis tentang itu. Apakah ini mencatat informasi tentang kebiasaan menjelajah pengunjung saya? Apakah ini semacam CAPTCHA untuk mendeteksi perilaku seperti manusia?

Contoh URL, tekan F12 di chrome, buka timeline dan tekan record, lalu gerakkan mouse Anda di sekitar halaman ini (ditambah pertanyaan ini, jangan khawatir):

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

Untuk apa nilainya (saya bisa melihat ini akan menjadi pertanyaan populer), saya tidak berpikir ada sesuatu yang menyeramkan di balik itu, bahkan mungkin artefak / bug yang tidak berguna, tetapi jika ia melakukan semacam pelacakan, nah, sepertinya agak menipu saya.

Google +1 kebijakan privasi

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

Kebijakan Privasi Tombol Google +1

28 Juni 2011

Kebijakan Privasi Google menjelaskan bagaimana kami memperlakukan informasi pribadi ketika Anda menggunakan produk dan layanan Google, termasuk informasi yang diberikan ketika Anda menggunakan tombol Google +1. Selain itu, berikut ini menjelaskan praktik privasi tambahan kami khusus untuk penggunaan tombol +1 Anda.

Informasi yang kami kumpulkan dan bagaimana informasi itu dibagikan

Tombol Google +1 adalah cara bagi Anda untuk berbagi informasi kepada publik dengan dunia. Tombol Google +1 membantu Anda dan orang lain menerima konten yang dipersonalisasi dari Google dan mitra kami. Fakta bahwa Anda memberi +1 sesuatu akan direkam oleh Google, bersama dengan informasi tentang halaman yang Anda lihat ketika Anda mengklik tombol +1. +1 Anda mungkin tampak oleh orang lain sebagai anotasi dengan nama profil dan foto Anda di layanan Google (seperti dalam hasil pencarian atau di Profil Google Anda) atau di tempat lain di situs web dan iklan di Internet.

Kami akan mencatat informasi tentang aktivitas +1 Anda untuk memberi Anda dan pengguna lain pengalaman yang lebih baik di layanan Google.

Untuk menggunakan tombol Google +1, Anda harus memiliki Google Profil publik yang dapat dilihat oleh dunia, yang minimal menyertakan nama yang Anda pilih untuk profil tersebut. Nama itu akan digunakan di seluruh layanan Google dan dalam beberapa kasus itu dapat menggantikan nama lain yang Anda gunakan saat berbagi konten di bawah Akun Google Anda. Kami dapat menampilkan identitas Profil Google Anda kepada orang-orang yang memiliki alamat email Anda atau informasi identitas lainnya.

Penggunaan informasi yang dikumpulkan

Selain penggunaan yang dijelaskan di atas, informasi yang Anda berikan kepada kami digunakan dengan tunduk pada Kebijakan Privasi Google utama kami.

Kami dapat membagikan statistik agregat yang terkait dengan aktivitas +1 pengguna dengan publik, pengguna, dan mitra kami, seperti penerbit, pengiklan, atau situs yang terhubung. Misalnya, kami dapat memberi tahu penerbit bahwa "10% orang yang memberi +1 pada laman ini berada di Tacoma, Washington."

Pilihan anda

Anda dapat melihat daftar item yang Anda beri +1 pada tab +1 di Profil Anda. Anda dapat menghapus item individual dari daftar itu.

Anda dapat memilih untuk tidak melihat rekomendasi +1 di situs web pihak ketiga (termasuk iklan di situs pihak ketiga) dari orang yang Anda kenal.

Kami akan menyimpan data (seperti +1 terbaru Anda) secara lokal di browser Anda. Anda mungkin dapat mengakses dan menghapus informasi ini di pengaturan browser Anda.

Informasi lebih lanjut

Google menganut prinsip privasi Safe Harbor AS. Untuk informasi lebih lanjut tentang kerangka kerja Safe Harbor atau pendaftaran kami, lihat situs web Departemen Perdagangan.

Tom Gullen
sumber
3
Human like behavior? Itu pemikiran yang menarik. Saya melihat kode pelacakan mouse yang sama yang hanya merekam koordinat X / Y dalam variabel global. Mereka kemudian digunakan untuk memulai / menghentikan / membatalkan pengguliran kustom pada plugin jQuery. Ada implementasi yang lebih baik daripada pelacakan global ini (yang akhirnya saya ubah).
Mrchief
7
@Mrchief, beberapa klien poker menggunakan gerakan mouse untuk mendeteksi pemain otomatis, saya berpikir mungkin Google mungkin menganggapnya sebagai pertahanan yang efektif terhadap bot yang membangun profil dan memberi +1 pada banyak situs tetapi membobotnya ke situs mereka memberi mereka keunggulan kompetitif yang tidak adil. Tapi siapa yang tahu.
Tom Gullen
1
Bertanya-tanya mengapa Facebook tidak melakukan hal seperti itu ... (atau tidak?)
Mrchief
7
Mungkin untuk semacam pengujian UI. Saya tahu Google suka melakukan banyak pengujian a / b, maka 41 tes warna mereka beberapa waktu lalu. Mungkin mereka mencoba melacak bagaimana pengguna bergerak melalui halaman, untuk memberikan UI yang lebih baik.
Greg Guida
Apa alat yang Anda gunakan?
Sid

Jawaban:

123

Tampaknya menjadi seeding generator angka acak dengan gerakan mouse Anda.

Mouse move handler itu sendiri melakukan sesuatu di sepanjang baris berikut ini:

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

dadalah (screen.width * screen.width + screen.height) * 1000000, dan cmerupakan variabel yang dimulai sebagai 1.

Semua ini dibungkus dalam lingkup fungsi anonim, yang dengan sendirinya segera dievaluasi untuk mengembalikan fungsi yang ditugaskan ke properti bernama "acak". Fungsi yang dikembalikan terlihat seperti ini:

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

hash, BTW, adalah variabel yang dimulai sebagai hash MD5 dari cookie halaman, lokasi new Date().getTime(), dan Math.random().

(Perhatikan, tentu saja, bahwa Google dapat mengubah skrip yang dikembalikan kapan saja dan karenanya membatalkan analisis ini)

Anomie
sumber
4
Jawaban bagus terima kasih, ada ide mengapa perlu nomor acak? Saya mengerti gerakan mouse adalah cara yang cukup baik untuk menghasilkan angka acak, tetapi bukankah ini akan gagal dengan perangkat seluler (mereka tidak memiliki mouse)
Tom Gullen
27
Tidak Math.random()diunggulkan dari cap waktu saat ini? Jika demikian, dengan tombol yang digunakan secara luas seperti ini, Anda akan mengharapkan banyak tabrakan. Dapat menjelaskan upaya ekstra.
Yahel
7
@yahelc: Ini mungkin membantu . Singkatnya, pada tahun 2008 sebagian besar browser diunggulkan dengan waktu hanya sekali, baik pada saat proses dimulai atau pertama kali Math.random () dipanggil (dalam proses atau di jendela / tab). Hal-hal mungkin telah berubah sejak saat itu, tentu saja.
Anomie
3
Ini sepertinya aneh - jika ini tujuannya, bukankah mereka hanya menggunakan window.crypto.getRandomValues: (function () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Rich Bradshaw
3
Andaikan itu untuk memberikan benih generator acak yang lebih baik, benih yang disediakan oleh Google akan cukup, bukan? Atau setidaknya hanya satu atau dua gerakan mouse. Cara saat ini memang agak mencurigakan. Akan menyenangkan jika Google menunjukkan transparansi di sini di mana orang lain gagal memberikannya.
Wernight
47

Kode aktual yang sedang dijalankan berasal dari kode Shindig yang ditemukan di sini:

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

Nomor acak aman diperlukan untuk memastikan bahwa saluran postMessage aman yang dibuat di sini tidak dapat dikompromikan oleh skrip pada halaman untuk melakukan tindakan sewenang-wenang.

Inilah artikel yang menjelaskan mengapa menggunakan Math.random () buruk:

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

Paul Lindner
sumber
32

Jika skrip Anda dimuat terlebih dahulu, Anda bisa mengaitkan addEventListener dan mencatat semua orang yang mengatur addEventListener dan melihat siapa yang melakukannya, kemudian, dengan melihat kode yang relevan, lihat apa yang mereka lakukan.

Letakkan ini di tempat sebelum kode Google dimuat:

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

Untuk melihat apa yang sedang mendengarkan window.onmousemove, Anda harus melakukannya setelah itu karena itu hanya tugas variabel, bukan fungsi yang dapat Anda intersep. Jadi kadang-kadang setelah kode inisialisasi halaman berjalan, Anda akan melakukan ini untuk mencatat apa yang terhubung dengannya:

if (window.onmousemove) {
    console.log(window.onmousemove.toString().slice(0,80));
}
pacar00
sumber
2
Gagasan bagus, tetapi ini tidak akan berhasil jika skrip menetapkan gaya lama window.onmousemovesebagai gantinya (seperti yang dilakukan skrip Google).
Anomie
Jika itu yang terjadi, on can hook itu juga dengan cara yang sama.
jfriend00
@Ben Alpert - Saya menambahkan beberapa kode untuk window.onmousemove ke jawaban saya di atas.
jfriend00
Kode fungsi itu sendiri bisa panjang sewenang-wenang. Kami tidak ingin membuang beberapa kb ke konsol jadi saya hanya memilih batas yang lebih pendek yang tidak akan membanjiri jendela log. Jika itu tidak cukup kode untuk dapat mengidentifikasi di mana itu, jumlahnya dapat ditingkatkan, tetapi mungkin tidak praktis untuk melihat hal-hal di jendela log jika tidak ada batas atas panjang.
jfriend00
17

Dalam kode yang tidak berantakan pada 22 Juli, Anda akan melihat bahwa onmousemove adalah bagian dari kelas 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))
    }
}();

Ini mengalikan jumlah x dan y dengan 2 ^ 16 menggunakan bitshift, kemudian menambahkan beberapa dimensi lain dan mengalikan semua ini dengan waktu dalam milidetik mod 1000000. Ini jelas terlihat seperti algoritma pengacakan.

Saya tidak yakin mengapa halaman membutuhkan sesuatu seperti ini, mungkin menggunakan cookie, mencegah klik +1 otomatis? Saat Anda mengeklik "+1" layar masuk yang muncul tampaknya memiliki nomor acak yang ditambahkan sebagai hash, url berakhir dengan "& hl = en-US # RANDOMNUMBER"

NoBugs
sumber
4

Saya yakin Anda Beta "In-Page Analytics" -nya. Membuat kursor dan klik peta panas.

Bola mata baru
sumber
Ada juga beberapa proyek bagus yang melakukan persis sama dengan aplikasi node.js ini , misalnya
Pier Paolo Ramon
+1 (sic). Adalah baik untuk mengetahui di mana orang mengklik untuk mengetahui apa yang bermanfaat dan tempat apa yang terbaik untuk iklan.
rds
Ide bagus, tapi tidak ada hubungannya dengan subjek;)
naugtur
2

Saya pikir makalah oleh Guo dan Agichtein dari CHI 2010 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf dapat memberikan gagasan lebih lanjut tentang mengapa Google melakukan itu.

Rupanya gerakan mouse adalah proksi kasar untuk gerakan mata dan memungkinkan orang untuk memperkirakan hasil pelacakan mata.

Panos Ipeirotis
sumber
1

Mereka mungkin menggunakannya untuk mengukur seberapa cepat pengguna berpindah dari satu item UI ke item lain, seberapa sering klik hilang dll.

Saya biasanya memiliki pandangan yang sangat sinis terhadap fitur invasif, tetapi saya rasa ini bukan risiko privasi. Ini mengejutkan karena sangat halus, tetapi tidak terlalu terbuka . Apakah gerakan mouse Anda menyandikan detail bank? Porno?

Google dan sejenisnya memiliki banyak data berkualitas tinggi untuk melacak Anda. Koordinat mouse memiliki aplikasi yang sangat terbatas.

Untuk sedikit keluar topik:

Pada tingkat tertentu, semakin banyak data yang Anda kumpulkan tentang orang, semakin banyak masalah yang Anda miliki. Saya mendengar (dari Schneier dan sejenisnya) bahwa badan-badan intelijen menderita dari sejumlah besar kesalahan positif yang dipicu oleh akuisisi data mereka yang semakin cepat - rasio sinyal-ke-suara sangat buruk. Saya menemukan ini agak lucu.

Spraff
sumber
Dengan skrip google +1, muncul di mini game, yang menggunakan tetikus untuk kontrol ... Benar-benar akan ada banyak kebisingan. XD
PicoCreator
1

Mustahil untuk mengatakan dengan pasti, apa yang Google lakukan dengan data pergerakan mouse ini. Seperti yang Anda lihat sendiri, itu tidak mengembalikan banyak dan banyak informasi kembali ke server, oleh karena itu, tidak ada yang perlu dikhawatirkan.

Yang pertama mungkin adalah pengendali event generik. Alasan mengapa saya pikir itu adalah jika Anda membaca sumbernya, Anda dapat melihat bahwa pada baris sebelum ada kesalahan melempar ("Argumen pendengar tidak valid"); dan berikutnya atau satu setelah berikutnya ada kesalahan melempar ("tipe acara tidak valid"). Karena jalur yang dipecat berada di antara dua pengecualian (terkait acara) ini, saya cukup yakin bahwa itu semacam pengendali acara. Menggunakan debugger, tidak benar-benar melakukan apa-apa (tidak melompat ke beberapa fungsi lain) sehingga tampaknya ada untuk implementasi di masa depan.

Fungsi kedua identik dengan yang pertama. Karena itu gTalk, saya kira itu memperbarui status Anda (pergi, online dll).

Yang ketiga tampaknya menjadi pembaru konten atau sesuatu yang serupa, karena Anda dapat melihat string seperti cacheTimeout dll tersebar di sekitarnya.

2 sen saya.

zatatatata
sumber
1

ini benar-benar di luar dari jauh diambil, tapi ini dia tetap ...

itu berputar di sekitar jenis lintasan & kelengkungan dari pergerakan mouse dari titik awal menuju berbagai penarik mengambil yaitu 2 item / link pada halaman.

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

Singkatnya, jika Anda meletakkan dua tautan / tombol yang bersaing dan menganalisis lintasan ke salah satu tautan tersebut, Anda dapat menyimpulkan suatu pola atau bagaimana Anda mencapai keputusan untuk mengklik hanya 1 tautan tersebut (lihat vid sekitar pukul 13:00)

utonia otomatis
sumber