Google +1がマウスの動きを記録するのはなぜですか?[閉まっている]


196

これは、私のウェブサイトにGoogle +1ボックスがあるページでのみ表示されます。

ここに画像の説明を入力してください

マウスを動かすたびにイベントが発生するようです。誰かがそれが何をしているのか知っていますか?私はGoogleで検索しました(おそらくこれについてBingを1回試してみるべきでしょう!)が、それについて書いた人はいません。訪問者の閲覧習慣に関する情報を記録していますか?人間のような行動を検出するのは、ある種のCAPTCHAですか?

URLの例、クロームでF12を押し、タイムラインに移動してレコードを押し、このページでマウスを動かします(この質問に加えて、心配しないでください)。

https://plusone.google.com/u/0/_/+1/button?hl=en-US&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 = 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/en/privacy/plusone/

Google +1ボタンのプライバシーポリシー

2011年6月28日

Googleプライバシーポリシーでは、Googleの+1ボタンを使用したときに提供される情報を含め、Googleの製品やサービスを使用する際の個人情報の取り扱いについて説明しています。さらに、+ 1ボタンの使用に固有のプライバシーに関するその他の慣行について、以下に説明します。

収集する情報とその共有方法

Google +1ボタンは、情報を世界中に公開するための方法です。Google +1ボタンは、あなたと他の人がGoogleとパートナーからパーソナライズされたコンテンツを受け取るのに役立ちます。+1したことは、+ 1ボタンをクリックしたときに表示していたページに関する情報とともに、Googleによって記録されます。あなたの+1は、Googleのサービス(検索結果やGoogleプロフィールなど)やインターネット上の他の場所で、プロフィール名と写真を含む注釈として他のユーザーに表示される場合があります。

あなたと他のユーザーにGoogleサービスのエクスペリエンスを向上させるために、+ 1アクティビティに関する情報を記録します。

Google +1ボタンを使用するには、Googleの公開プロフィールを世界中に公開する必要があります。これには、プロフィールに選択した名前が少なくとも含まれています。その名前はGoogleサービス全体で使用され、場合によっては、Googleアカウントでコンテンツを共有するときに使用した別の名前に置き換わることがあります。メールアドレスやその他の識別情報を知っているユーザーに、GoogleプロフィールのIDを表示する場合があります。

収集した情報の利用

上記の使用に加えて、あなたが私たちに提供する情報は、Googleのメインのプライバシーポリシーに従って使用されます。

私たちは、ユーザーの+1アクティビティに関連する集計統計を、一般ユーザー、ユーザー、およびパブリッシャー、広告主、接続サイトなどのパートナーと共有する場合があります。たとえば、「このページを+1したユーザーの10%がワシントン州タコマにいる」とサイト運営者に伝えます。

あなたの選択

プロフィールの[+1]タブで、+ 1したアイテムのリストを表示できます。そのリストから個々のアイテムを削除できます。

知り合いからのサードパーティのウェブサイト(サードパーティのサイトの広告を含む)での+1のおすすめの表示をオプトアウトできます。

データ(最近の+1など)をブラウザのローカルに保存します。ブラウザの設定でこの情報にアクセスしてクリアできる場合があります。

詳しくは

Googleは米国のセーフハーバープライバシー原則を遵守しています。セーフハーバーフレームワークまたは我々の登録の詳細については、商務省のWebサイトを参照してください。


3
Human like behavior?それは興味深い考えです。私は、グローバル変数にX / Y座標を記録するだけの同様のマウストラッキングコードを一度見ました。それらは後で、jQueryプラグインでカスタムスクロールを開始/停止/キャンセルするために使用されました。このグローバルな追跡(最終的に変更した)よりも優れた実装がありました。
Mrchief

7
@Mrchief、一部のポーカークライアントは自動プレーヤーを検出するためにマウスの動きを使用しています。ボットがプロファイルを作成し、多数のサイトを+1することに対して、Googleが効果的な防御であると考えているかもしれませんが、サイトに重みを付けて不当な競争力を与えています。誰もが知っている。
トムガレン

1
ワンダーなぜFacebookは...そのようなことをやって(またはそれをしない?)されていません
Mrchief

7
ある種のUIテストのためかもしれません。私は、Googleがそれ故に彼らの、/ bのテストの多くを行うのが好き知っている青色のテストの41の色合いバックしながら、A。おそらく、より良いUIを提供するために、ユーザーがページを移動する方法を追跡しようとしているのでしょう。
グレッググイダ'19

使用しているツールは何ですか?
シド

回答:


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) * 1000000c、1から始まる変数です。

これはすべて、無名関数のスコープにラップされています。無名関数自体はすぐに評価され、「ランダム」という名前のプロパティに割り当てられた関数を返します。返された関数は次のようになります。

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

hash、ところで、場所、ページのクッキーのMD5ハッシュとして開始変数であり、new Date().getTime()およびMath.random()

(もちろん、Googleは返されたスクリプトをいつでも変更する可能性があるため、この分析を無効にすることに注意してください)


4
すばらしい回答ありがとうございます。なぜ乱数が必要になるのでしょうか。マウスの動きは乱数を生成するためのかなり良い方法であると理解していますが、これはモバイルデバイス(マウスがない場合)では失敗しないでしょう
Tom Gullen

27
Math.random()現在のタイムスタンプからシードされていませんか?その場合、このように広く展開されたボタンを使用すると、多くの衝突が予想されます。余分な努力を説明するかもしれません。
Yahel

7
@yahelc:これは役立つかもしれません。つまり、2008年のほとんどのブラウザは、プロセスの開始時または最初にMath.random()が呼び出されたとき(プロセス内またはウィンドウ/タブ内)に一度だけシードされました。もちろん、それ以来、状況は変わったかもしれません。
アノミー

3
これは奇妙に思えますが、これが目的であれば、window.crypto.getRandomValuesを使用するだけではありません。 0])})()
リッチブラッドショー

3
より優れたランダムジェネレーターシードを提供することだとすると、Googleが提供するシードで十分でしょう。または、少なくとも1つまたは2つのマウスの動き。現在の方法は確かに少し疑わしいようです。他の人がそれを与えるのに失敗した場合、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/en/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のスクリプトのように)代わりに古いスタイルを設定する場合は機能しません。
Anomie、2011

その場合、onも同じようにフックできます。
jfriend00

@ベン・アルパート-上記の回答にwindow.onmousemoveのコードを追加しました。
jfriend00

機能コード自体は、任意に長くなる可能性があります。コンソールに複数のKBをダンプしたくないので、ログウィンドウを圧迫しない短い制限をいくつか選択しました。それがどこにあるかを特定するのに十分なコードではない場合、数を増やすことができますが、長さに上限がない場合、ログウィンドウに表示することは実際的ではない場合があります。
jfriend00

17

7月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を乗算し、他の次元を追加して、ミリ秒単位の時間1000000で乗算します。これは、明らかにランダム化アルゴリズムのように見えます。

ページにこのようなものが必要になる理由がわかりません。おそらくCookieを使用しており、自動+1クリックを防止していますか?「+1」をクリックすると、ポップアップするログイン画面にハッシュとして乱数が追加されているように見え、URLは「&hl = en-US#RANDOMNUMBER」で終わります


4

その「ページはめ込み分析」ベータ版です。カーソルを作り、ヒートマップをクリックします。


正確に同じことをいくつかの良いプロジェクトもあります。このNode.jsのアプリ例えば、
桟橋パオロ・ラモン

+1(シック)。人々がどこをクリックして、何が便利でどこが広告に最適かを知るのは良いことです。
RDS

いい考えですが、件名とは関係ありません;)
naugtur '25 / 07/25


1

彼らはおそらくそれを使用して、ユーザーがあるUIアイテムから別のUIアイテムに移動する速さ、クリック失敗の頻度などを測定します。

私は通常、侵略的な機能について深く皮肉な見方をしていますが、これはプライバシーのリスクではないと思います。それは非常に異常に細かいので、それは衝撃的ですが、それはあまり明らかにされていません。マウスの動きは銀行の詳細をエンコードしていますか?ポルノ?

Googleなどには、追跡に使用できる高品質のデータがたくさんあります。マウス座標の用途は非常に限られています。

少し話題から外れるには:

ある程度、人々について収集するデータが多いほど、問題も多くなります。(シュナイアーなどから)情報機関は、絶え間なく加速するデータ収集によって引き起こされる膨大な数の誤検知に苦しんでいると聞きます。信号対雑音比はひどいものです。これはやや面白いと思います。


Google +1スクリプトを使用すると、マウスをコントロールに使用するミニゲームに表示されます...本当にノイズがたくさんあります。XD
PicoCreator 2011

1

Googleがこのマウスの動きのデータを使って何をしているのか、はっきりとは言えません。ご覧のとおり、サーバーには大量の情報が返されないので、心配する必要はありません。

1つ目は、おそらく一般的なイベントハンドラです。ソースを読んだ場合、Error( "Invalid listener argument");がスローされる前の行でそれを確認できると私が思う理由 次または次の後には、Error( "Invalid event type")がスローされます。発生した行はこれら2つの(イベント関連の)例外の間にあるので、それが何らかのイベントハンドラーであると確信しています。デバッガーを使用すると、それは実際には何もしません(他の関数にジャンプしません)ので、将来の実装のためにあるようです。

2番目の関数は最初の関数と同じです。これはgTalkなので、あなたのステータス(不在、オンラインなど)を更新すると思います。

3番目はcacheupdateなどの文字列が散らばっているのを見ることができるので、コンテンツアップデーターまたは類似のもののようです。

私の2セント。


1

これは本当に遠くからですが、とにかくここに行きます...

開始点から別のアトラクタに向かうマウスの動きの軌跡と曲率のタイプを中心に回転します。つまり、ページ上の2つのアイテム/リンクです。

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

つまり、2つの競合するリンク/ボタンを配置して、それらのリンクの1つに向かう軌跡を分析すると、パターンまたはそれらのリンクの1つのみをクリックするという決定に到達した方法を推定できます(13:00前後のvidを参照)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.