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


196

仅在我的网站上带有Google +1框的页面上:

在此处输入图片说明

似乎每次鼠标移动都会触发一个事件。有人知道它在做什么吗?我在Google上进行了搜索(也许我应该对此进行一次Bing!),但似乎没有人写过它。是否记录有关访客浏览习惯的信息?是否可以通过某种验证码来检测类似人的行为?

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

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

Google +1按钮隐私权政策

2011年6月28日

Google隐私权政策描述了您使用Google产品和服务时我们如何处理个人信息,包括使用Google +1按钮时提供的信息。此外,以下内容介绍了针对您对+1按钮的使用所特有的其他隐私保护惯例。

我们收集的信息以及共享方式

Google +1按钮是您与世界公开分享信息的一种方式。Google +1按钮可帮助您和其他人接收来自Google和我们的合作伙伴的个性化内容。Google会记录您对某件事+1的事实,以及您单击+1按钮时正在查看的页面的有关信息。您的+1可能会在您在Google服务(例如在搜索结果中或您的Google个人资料中)或互联网上的网站和广告上的其他地方,作为带有您的个人资料名称和照片的注释显示为其他人。

我们将记录有关您的+1活动的信息,以便为您和其他用户提供更好的Google服务体验。

为了使用Google +1按钮,您需要使世界可见的公开Goog​​le个人资料,其中至少包括您为个人资料选择的名称。该名称将在所有Google服务中使用,在某些情况下,它可能会替换您在Google帐户下共享内容时使用的其他名称。我们可能会向拥有您的电子邮件地址或其他身份信息的人显示您的Google个人资料身份。

使用收集到的信息

除了上述用途外,您提供给我们的信息还必须遵守我们的主要Google隐私权政策。

我们可能会与公众,我们的用户和合作伙伴(例如发布商,广告商或关联网站)共享与用户+1活动相关的汇总统计信息。例如,我们可能告诉发布者“对该页面+1的人中有10%在华盛顿州塔科马。”

您的选择

您可以在个人资料的+1标签上查看已+1的项目列表。您可以从该列表中删除单个项目。

您可以选择不认识的人在第三方网站(包括第三方网站上的广告)上看到+1建议。

我们将在您的浏览器中本地存储数据(例如您最近的+1)。您可能可以在浏览器设置中访问和清除此信息。

更多信息

Google遵守美国安全港隐私权原则。有关安全港框架或我们的注册的更多信息,请访问美国商务部网站。


3
Human like behavior?那是有趣的想法。我曾经看到过类似的鼠标跟踪代码,该代码只是在全局变量中记录X / Y坐标。它们后来被用来在jQuery插件上启动/停止/取消自定义滚动。有一个比这种全局跟踪更好的实现(我最终改变了)。
Mrchief 2011年

7
@Mrchief,一些扑克客户使用鼠标移动来检测自动玩家,我想Google可能认为这是对机器人建立个人资料和+1大量站点进行有效防御,但将其权衡到他们的站点上会给他们带来不公平的竞争优势。谁知道。
汤姆·古伦

1
想知道Facebook为什么不做这样的事情……(还是这样做?)
Mrchief 2011年

7
它可能用于某种UI测试。我知道google喜欢进行很多A / B测试,因此前一段时间他们的41种蓝色阴影进行了测试。也许他们正在尝试跟踪用户如何浏览页面,以提供更好的UI。
格雷格·吉达

您正在使用什么工具?
Sid

Answers:


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

所有这些都包装在匿名函数的范围内,该匿名函数本身会立即进行评估以返回分配给名为“ 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()和的MD5哈希值Math.random()

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


4
很好的答案,谢谢,知道为什么它需要一个随机数吗?我知道鼠标移动是生成随机数的一种很好的方法,但是使用移动设备(它们没有鼠标)会不会失败
Tom Gullen

27
不是Math.random()从当前时间戳中播种的吗?如果是这样的话,使用这样广泛部署的按钮,您可能会遇到很多冲突。可能会解释额外的努力。
Yahel,2011年

7
@yahelc:这可能会有所帮助。简而言之,在2008年,大多数浏览器仅在进程启动时或第一次调用Math.random()时(在进程中或在窗口/选项卡中)播种一次。从那时起,事情可能会发生变化。
Anomie

3
不过,这似乎很奇怪–如果这是目的,那么他们会不会只使用window.crypto.getRandomValues:(function(){var buf = new Uint8Array(1); window.crypto.getRandomValues(buf); alert(buf [ 0])})()
Rich Bradshaw

3
假设是要提供更好的随机生成器种子,那么Google提供的种子就足够了,不是吗?或至少只有一两个鼠标移动。当前的方法确实确实有点可疑。希望Google在其他人没有提供透明度的情况下在此处显示透明度。
2011年


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

如果真是这样,on也可以同样的方式进行钩住。
jfriend00 2011年

@Ben Alpert-我在上面的答案中添加了一些window.onmousemove的代码。
jfriend00 2011年

功能代码本身可以任意长。我们不想将多个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”时,弹出的登录屏幕似乎带有一个随机数作为哈希值,网址以“&hl = en-US#RANDOMNUMBER”结尾




1

他们可能会用它来衡量用户从一个UI项移动到另一个UI项的速度,单击未命中的频率等。

我通常对入侵性功能持怀疑态度,但我不认为这是隐私风险。令人震惊的是,它是如此的细粒度,但却不是很生动。您的鼠标移动是否编码银行详细信息?A片?

Google等拥有大量可跟踪您的高质量数据。鼠标坐标的应用非常有限。

有点题外话:

在某种程度上,您收集的有关人员的数据越多,您遇到的问题就越多。我从Schneier等人那里听说,情报机构正因其不断加速的数据采集而引发大量误报-信噪比太差了。我觉得这有点有趣。


在迷你游戏中出现的Google +1脚本中,它使用鼠标作为控件...确实会有很多杂音。XD
PicoCreator 2011年

1

不可能确定Google如何处理此鼠标移动数据。如您所见,这并不是将负载和信息负载返回到服务器,因此,无需担心。

第一个可能是通用事件处理程序。我认为那是因为,如果您阅读源代码,则可以在抛出Error(“ Invalid listener arguments”);的那一行上看到它;下一个或下一个之后引发Error(“ Invalid event type”)。由于触发行位于这两个(与事件相关的)异常之间,因此,我很确定这是某种事件处理程序。使用调试器,它实际上并没有执行任何操作(不会跳转到其他功能),因此似乎可以在将来实现。

第二个功能与第一个功能相同。由于它是gTalk,因此我想它会更新您的状态(离开,在线等)。

第三个似乎是内容更新程序或类似的东西,因为您可以看到像cacheTimeout之类的字符串散布在其周围。

我的2美分。


1

这确实是遥不可及的,但是无论如何它还是...

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

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

简而言之,如果您放置两个相互竞争的链接/按钮并分析其中一个链接的轨迹,则可以推断出一种模式决定如何仅单击其中一个链接的决定(请参阅13:00左右的vid)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.