首页 文章

为什么Google 1会记录我的鼠标动作? [关闭]

提问于
浏览
197

这仅适用于我网站上包含Google 1广告的网页:

enter image description here

它似乎是在每次移动鼠标时触发事件 . 有谁知道它在做什么?我在Google上搜索过(也许我应该在这个上尝试过Bing一次!)但似乎没有人写过这篇文章 . 它是否记录了我的访客浏览习惯的信息?是否有某种类型的CAPTCHA来检测像人类一样的人类?

示例URL,在chrome中按F12,转到时间轴并按下记录,然后在此页面上移动鼠标(加上这个问题,请不要担心):

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&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

对于它的 Value (我可以看到这将是一个流行的问题),我不认为它背后有任何险恶的东西,它甚至可能是一个无用的神器/错误,但如果它正在进行某种跟踪,好吧,这似乎有点欺骗我 .

Google +1 privacy policy

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

Google 1按钮隐私政策2011年6月28日Google隐私权政策介绍了在您使用Google的产品和服务时我们如何处理个人信息,包括您在使用Google 1按钮时提供的信息 . 此外,以下介绍了我们针对您使用1按钮的其他隐私惯例 . 我们收集的信息及其共享方式Google 1按钮是您与全世界公开分享信息的一种方式 . Google 1按钮可帮助您和其他人从Google和我们的合作伙伴处获得个性化内容 . Google会记录您为某事做的事实,以及您在点击1按钮时查看的页面信息 . 您的1可能会在其他人看来是在Google服务中使用您的 Profiles 名称和照片(例如搜索结果或Google Profiles )或互联网上的网站和广告上的其他地方 . 我们会记录您的1项活动的相关信息,以便为您和其他用户提供更好的Google服务体验 . 要使用Google 1按钮,您需要向全世界展示公开的Google Profiles ,其中至少包含您为 Profiles 选择的名称 . 该名称将在Google服务中使用,在某些情况下,它可能会替换您在Google帐户下共享内容时使用的其他名称 . 我们可能会向拥有您的电子邮件地址或其他识别信息的人显示您的Google Profiles 身份 . 使用收集的信息除上述用途外,您提供给我们的信息将根据我们的主要Google隐私政策使用 . 我们可能会与公众,我们的用户和合作伙伴(如发布商,广告客户或关联网站)共享与用户1活动相关的汇总统计信息 . 例如,我们可能会告诉发布商“此页面中有1%的人在华盛顿州塔科马市 . ”您的选择您可以在 Profiles 的“1”标签上查看您拥有的项目列表 . 您可以从该列表中删除单个项目 . 您可以选择不在您认识的人的第三方网站(包括第三方网站上的广告)上看到1条推荐 . 我们将在您的浏览器中本地存储数据(例如您最近的1) . 您可以在浏览器设置中访问和清除此信息 . 更多信息Google遵守美国安全港隐私权原则 . 有关安全港框架或我们的注册的更多信息,请访问美国商务部的网站 .

9 回答

  • 48

    它似乎是用鼠标移动播种随机数生成器 .

    鼠标移动处理程序本身可以执行以下操作:

    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开头的变量 .

    所有这些都包含在匿名函数的范围内,该函数本身会立即被评估以返回分配给名为“random”的属性的函数 . 返回的函数看起来像这样:

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

    hash ,BTW,是一个变量,以页面的cookie,位置, new Date().getTime()Math.random() 的MD5哈希值开头 .

    (注意,当然,Google可能会随时更改返回的脚本,从而使此分析无效)

  • 123

    正在执行的实际代码来自此处的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/

  • 1

    如果你可以先加载你的脚本,你可以挂钩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));
    }
    
  • 4

    uncluttered code截至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))
        }
    }();
    

    它是使用bitshift将x和y之和乘以2 ^ 16,然后添加一些其他维度并将所有这些乘以时间乘以毫秒mod 1000000.这绝对看起来像一个随机算法 .

    我不确定为什么页面会需要这样的东西,也许它使用的是cookie,阻止了自动点击?当您单击“1”时,弹出的登录屏幕似乎附加了随机数作为哈希,网址以“&hl = en-US#RANDOMNUMBER”结尾

  • 17

    我打赌你的“页内分析”测试版 . 制作光标并单击热图 .

  • 32

    我认为来自CHI 2010 http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf的郭和Agichtein的论文可以提供关于谷歌为何这样做的进一步想法 .

    显然,鼠标移动是眼睛运动的粗略代表,并允许人们近似眼动追踪结果 .

  • 1

    他们可能会用它来衡量用户从一个UI项目移动到另一个UI项目的速度,点击失败的频率等等 .

    我通常对侵入性特征持有一种深刻的愤世嫉俗的看法,但我并不感到震惊,因为它并不是很有启发性 . 您的鼠标移动是否对银行详细信息进A片?

    谷歌等拥有大量高质量的数据来跟踪您 . 鼠标坐标的应用非常有限 .

    偏离主题:

    在某种程度上,您收集的有关人员的数据越多,您遇到的问题就越多 . 我听到(来自Schneier等)情报机构正在遭受由于他们不断加速的数据采集引发的大量误报 - 信噪比非常糟糕 . 我发现这有点有趣 .

  • 2

    谷歌用这个鼠标移动数据做了什么,这是不可能确定的 . 正如您所看到的那样,它不会将负载和大量信息返回给服务器,因此,无需担心 .

    第一个可能是通用事件处理程序 . 我之所以认为这是因为如果你阅读了源代码,你可以看到在抛出错误之前就行了(“无效的监听器参数”);然后下一个或一个抛出错误(“无效的事件类型”) . 由于被触发的行位于这两个(事件相关的)异常之间,我很确定它是某种事件处理程序 . 使用调试器,它实际上没有做任何事情(不跳转到其他一些函数)所以它似乎是为了将来的实现 .

    第二个功能与第一个功能相同 . 因为它是gTalk,我想它会更新你的状态(离开,在线等) .

    第三个似乎是内容更新程序或类似的东西,因为你可以看到分散在它周围的字符串像cacheTimeout等 .

    我的2美分 .

  • 1

    这真的是遥不可及,但无论如何......

    它围绕着从开始点到不同吸引器的轨迹类型和鼠标移动的曲率,即页面上的2个项目/链接 .

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

    简而言之,如果您放置两个竞争链接/按钮并分析其中一个链接的轨迹,您可以推断 patternhow 您到达 decision 仅点击其中一个链接(请参阅13:00左右的视频)

相关问题