Чому Google +1 записує мої рухи мишею? [зачинено]


196

Це лише на сторінках, на яких на моєму веб-сайті розміщено вікно Google +1:

введіть тут опис зображення

Здається, що він знімає подію на кожному русі миші. Хтось знає, що це робить? Я шукав в Google (можливо, я повинен спробувати Бінга один раз на цьому!), Але, здається, ніхто про це не писав. Чи записує інформацію про звички перегляду моїх відвідувачів? Це якась CAPTCHA для виявлення такої людини, як поведінка?

Приклад URL-адреси, натисніть F12 в хромі, перейдіть до шкали часу і натисніть запис, а потім перемістіть мишкою по цій сторінці (це плюс ті питання, не хвилюйтесь):

https://plusone.google.com/u/0/_/+1/button?hl=en-US&jsh=r%3Bgc%2F22224365-adc8a19e#url=/programming/6667544/google -1-запис-переміщення миші & розмір = високий & 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

Оскільки це варте (я можу бачити, що це буде популярним питанням), я не думаю, що за цим є щось зловісне, це може бути навіть марний артефакт / помилка, але якщо він проводить якесь відстеження, ну, мені це здається трохи оманливим.

Політика конфіденційності Google +1

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

Політика конфіденційності кнопки Google +1

28 червня 2011 року

Політика конфіденційності Google описує, як ми ставимося до особистої інформації під час використання продуктів та послуг Google, включаючи інформацію, що надається при використанні кнопки Google +1. Крім того, далі описані наші додаткові практики конфіденційності, характерні для використання кнопки +1.

Інформація, яку ми збираємо, та спосіб її обміну

Кнопка Google +1 - це спосіб публічно ділитися інформацією зі світом. Кнопка Google +1 допомагає вам та іншим отримувати персоналізований вміст від Google та наших партнерів. Те, що ви поставили +1, щось записує Google, а також інформацію про сторінку, яку ви переглядали, натиснувши кнопку +1. Ваші оцінки +1 можуть з’являтися іншим як примітка з назвою вашого профілю та фотографією в службах Google (наприклад, в результатах пошуку чи у вашому профілі Google) або в інших місцях на веб-сайтах та в Інтернеті.

Ми запишемо інформацію про вашу активність +1, щоб надати вам та іншим користувачам кращий досвід роботи з сервісами Google.

Щоб скористатися кнопкою Google +1, вам потрібно мати загальнодоступний профіль Google, видимий усьому світі, який як мінімум включає ім’я, яке ви вибрали для профілю. Це ім’я використовуватиметься в службах Google, а в деяких випадках воно може замінити інше ім’я, яке ви використовували під час обміну вмістом у своєму обліковому записі Google. Ми можемо відображати вашу особу профілю Google людям, які мають вашу електронну адресу чи іншу ідентифікаційну інформацію.

Використання зібраної інформації

Окрім описаних вище способів, інформація, яку ви нам надаєте, використовується відповідно до нашої основної Політики конфіденційності Google.

Ми можемо ділитися сукупною статистикою, пов’язаною з активністю +1 користувачів, з громадськістю, нашими користувачами та партнерами, такими як видавці, рекламодавці або пов’язані сайти. Наприклад, ми можемо сказати видавцю, що "10% людей, які поставили +1 цій сторінці, знаходяться в Такомі, штат Вашингтон".

Ваш вибір

Ви можете переглянути список елементів, яким ви поставили +1, на вкладці +1 у своєму профілі. Ви можете видалити окремі елементи зі цього списку.

Ви можете відмовитись бачити рекомендації +1 на сторонніх веб-сайтах (у тому числі в оголошеннях на сторонніх сайтах) від людей, яких ви знаєте.

Ми будемо зберігати дані (такі як ваші останні +1) локально у вашому браузері. Можливо, ви зможете отримати доступ та очистити цю інформацію в налаштуваннях свого веб-переглядача.

Більше інформації

Google дотримується принципів конфіденційності Safe Harbor США. Для отримання додаткової інформації про безпечну гавань або про нашу реєстрацію див. Веб-сайт Департаменту комерції.


3
Human like behavior? Це цікава думка. Одного разу я побачив подібний код відстеження миші, який просто записував координати X / Y у глобальні змінні. Пізніше вони використовувались для запуску / зупинки / скасування користувацької прокрутки на плагіні jQuery. Була краща реалізація, ніж ця глобальна відстежуюча річ (яку я зрештою змінив).
Mrchief

7
@Mrchief, деякі клієнти покеру використовують рухи миші для виявлення автоматизованих гравців, я думав, можливо, Google може вважати це ефективною захистом від ботів, що створюють профілі та + 1ing багато сайтів, але зважує їх на свої сайти, надаючи їм несправедливу конкурентну перевагу. Хтозна, хоча.
Том Гюллен

1
Цікаво, чому Facebook не робить нічого подібного ... (чи робить це?)
Mrchief

7
Це може бути якесь тестування на інтерфейс користувача. Я знаю, що Google любить робити багато тестів, тому їхні 41 відтінки синього тестують ще раз. Можливо, вони намагаються відстежити, як користувач рухається по сторінці, щоб забезпечити кращий інтерфейс користувача.
Грег Гуйда

Який інструмент ви використовуєте?
Сід

Відповіді:


123

Здається, висіваючи генератор випадкових чисел рухом миші.

Сам обробник переміщення миші робить щось відповідно до наступного:

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) * 1000000, і cє змінною, яка починається як 1.

Все це зафіксовано в області анонімної функції, яка сама негайно оцінюється, щоб повернути функцію, призначену властивості під назвою "випадковий". Ця повернута функція виглядає приблизно так:

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

hash, BTW - це змінна, яка починається як хеш MD5 файлів cookie сторінки, розташування new Date().getTime(), та та Math.random().

(Звичайно, зауважте, що Google може змінити повернений сценарій у будь-який час і, таким чином, визнати недійсним цей аналіз)


4
Чудова відповідь спасибі, будь-яка ідея, чому це знадобиться випадковим числом? Я розумію, що рухи миші - це досить хороший спосіб генерування випадкових чисел, але чи не вдасться це зробити з мобільними пристроями (у них немає миші)
Том Галлен,

27
Не Math.random()посіяно з поточної позначки часу? Якщо так, при широко розгорнутій кнопці, як ця, ви очікуєте багато зіткнень. Може пояснити зайві зусилля.
Яхель

7
@yahelc: Це може допомогти . Коротше кажучи, у 2008 році більшість браузерів виводили час лише один раз, або при запуску процесу, або вперше викликається Math.random () (у процесі чи у вікні / вкладці). З того часу, можливо, все змінилося.
Anomie

3
Це здається дивним, якби це було цією метою, чи не використовували б вони просто window.crypto.getRandomValues: (функція () {var buf = new Uint8Array (1); window.crypto.getRandomValues ​​(buf); alert (buf [ 0])}) ()
Річ Бредшоу

3
Припустимо, щоб дати краще насіннєве генераторне насіння, насіння, наданого Google, було б достатньо, ні? Або хоча б лише один або два рухи миші. Нинішній шлях справді здається трохи підозрілим. Було б добре, щоб Google проявив деяку прозорість тут, де інші не змогли цього надати.
Wernight

47

Фактичний код, який виконується, походить від коду Shindig, знайденого тут:

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

Захищене випадкове число потрібно, щоб гарантувати, що створений тут захищений канал PostMessage не може бути порушений сценаріями на сторінці для виконання довільних дій.

Ось стаття, яка пояснює, чому використання Math.random () є поганим:

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


32

Якщо ви можете спочатку завантажити свій скрипт, ви можете підключити addEventListener і записати всіх, хто встановлює addEventListener, і побачити, хто це робить, а потім, переглянувши відповідний код, побачити, що вони роблять.

Поставте це на місце перед завантаженням коду 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));
}

Щоб побачити, що слухав window.onmousemove, вам доведеться це зробити після цього, тому що це лише призначення змінної, а не функція, яку ви можете перехопити. Тоді іноді після запуску коду ініціалізації ви робите це для того, щоб записати те, що було підключено до нього:

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

2
Гарна ідея, але це не спрацює, якщо window.onmousemoveзамість цього сценарію встановлено старий стиль (як це робить сценарій Google).
Аномія

Якщо це було так, він може зачепити це теж саме.
jfriend00

@Ben Alpert - я додав код до window.onmousemove до своєї відповіді вище.
jfriend00

Сам код функції може бути довільним довгим. Ми не хочемо скидати кілька кб в консоль, тому я просто вибрав коротший ліміт, який не переповнить вікно журналу. Якщо цього коду недостатньо, щоб можна було визначити, де він знаходиться, число можна збільшити, але це може бути нереально переглядати речі у вікні журналу, якщо не було верхньої межі довжини.
jfriend00

17

У невтисненому коді станом на 22 липня ви помітите, що onmousemove входить до класу 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))
    }
}();

Це множення суми x і y на 2 ^ 16 за допомогою бітшвидкісу, потім додавання деяких інших розмірів і множення всього цього на час в мілісекундах mod 1000000. Це, безумовно, схоже на алгоритм рандомізації.

Я не впевнений, чому для сторінки потрібне щось подібне, можливо, вона використовує файли cookie, запобігаючи автоматичному клацанню +1? Коли ви натискаєте кнопку "+1", на екрані входу, що з'являється, з'являється випадкове число, додане як хеш, URL-адреса закінчується на "& hl = en-US # RANDOMNUMBER"


4

Я обдячу вас своєю бета-версією "Аналіз на сторінці". Зробіть курсор і натисніть нагрівальну карту.


Також є кілька хороших проектів, які роблять точно так само, як і ця програма node.js , наприклад
П'єр Паоло Рамон

+1 (sic). Добре знати, де люди клацають, щоб знати, що корисно, а яке місце найкраще для реклами.
rds

Хороша ідея, але нічого спільного з темою;)
naugtur


1

Вони, ймовірно, використовують його для вимірювання того, як швидко користувачі переходять від одного елемента інтерфейсу до іншого, як часто пропускають кліки тощо.

У мене зазвичай глибоко цинічний погляд на інвазивні риси, але я не думаю, що це ризик конфіденційності. Це шокує, тому що воно настільки незвично дрібнозернисте, але не дуже показове . Чи кодує ваш рух миші банківські реквізити? Порно?

Google і тому подібні мають багато якісних даних, щоб відстежувати вас. Координати миші мають дуже обмежене застосування.

Щоб трохи піти з теми:

Наскільки більше даних ви збираєте про людей, тим більше у вас проблем. Я чую (від Шнайєра тощо), що спецслужби страждають від величезної кількості помилкових позитивних результатів, спричинених їх постійно прискорюваним здобуттям даних - співвідношення сигнал-шум є неправдивим. Я вважаю це дещо кумедно.


Із сценаріями google +1, які з’являються в міні-іграх, в яких миша використовується для управління ... Шум буде дійсно багато. XD
PicoCreator

1

Неможливо точно сказати, що Google робить з даними руху миші. Як ви самі бачите, навантаження і навантаження інформації назад на сервер не повертаються, тому нічого страшного.

Перший - це, мабуть, загальний обробник подій. Причина, чому я вважаю, що якщо ви читаєте джерело, ви можете бачити, що в рядку перед тим, як з’явиться помилка кидання ("Недійсний аргумент слухача"); і наступний або один за наступним, є помилка кидання ("Недійсний тип події"). Оскільки запускається лінія знаходиться між цими двома винятками (пов’язаними з подіями), я майже впевнений, що це якийсь обробник подій. Використовуючи налагоджувач, він насправді нічого не робить (не переходить на якусь іншу функцію), тому здається, що він існує для подальшої реалізації.

Друга функція ідентична першій. Оскільки це gTalk, я припускаю, що він оновлює ваш статус (удома, в Інтернеті тощо).

Третій, здається, є оновником вмісту або чимось подібним, оскільки ви можете бачити рядки, такі як cacheTimeout тощо, розкидані навколо нього.

Мої 2 копійки.


1

це насправді далеко не знайдено, але тут все одно ...

вона обертається навколо типу траєкторії та кривизни руху миші від початкової точки до різних атракторів, тобто 2 пункти / посилання на сторінці.

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

коротше кажучи, якщо ви покладете два конкуруючих посилання / кнопки та проаналізуєте траєкторію до одного з цих посилань, ви можете вивести шаблон або те, як ви прийняли рішення натиснути лише на 1 з цих посилань (див. вид близько 13:00)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.