为什么Google+1会记录我的鼠标移动?

这只是在我的网站上有Google+1框的页面上:

enter image description here

它似乎在每一次鼠标移动时都会触发一个事件。有人知道它在做什么吗?我在谷歌上搜索了一下(也许我应该试着在必应上搜索一次),但似乎没有人写过关于它的文章。它是否记录有关我的访客浏览习惯的信息?这是某种验证码来检测人类的行为吗?

示例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&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+1按钮时提供。此外,以下内容 描述我们针对您使用的其他隐私做法。 +1按钮.

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

Google+1按钮是您公开分享信息的一种方式 和世界在一起。Google+1按钮可帮助您和其他人接收 来自谷歌和我们合作伙伴的个性化内容。事实是你 当你点击“+1 ”按钮时,谷歌会记录一些信息,以及你正在浏览的页面的信息。 您的“+1 ”可能会作为您的个人资料名称的注释显示给其他人 和照片(如在搜索结果中或在您的 谷歌简介)或网站上的其他地方和互联网上的广告。

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

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

收集信息的使用

除上述用途外,您提供的信息 对我们的使用受我们的主要谷歌隐私政策的约束。

我们可能会与共享与用户的+1活动相关的汇总统计数据 公众,我们的用户,以及合作伙伴,如出版商,广告商, 或连接的站点。例如,我们可能会告诉出版商, 这个页面的用户来自华盛顿州塔科马市。

你的选择

您可以在上的“+1 ”选项卡上查看您已+1的项目列表 侧写。您可以从该列表中删除单个项目。

您可以选择不在第三方网站上查看+1推荐 (包括第三方网站上的广告)来自你认识的人。

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

更多信息

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

24493 次浏览

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

我通常对侵入性功能抱有一种非常愤世嫉俗的看法,但我不认为这是一种隐私风险。这是令人震惊的,因为它是如此不同寻常的细粒度,但它不是非常揭示。您的鼠标移动是否对银行详细信息进行编码?色情片?

谷歌等公司有大量高质量的数据来追踪你。鼠标坐标的应用非常有限。

说点题外话:

在某种程度上,你收集的关于人们的数据越多,你的问题就越多。我(从Schneier等人那里)听说,情报机构正在遭受由其不断加速的数据采集所引发的大量误报--信噪比极低。我觉得这有点好笑。

如果您可以首先加载脚本,则可以挂接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));
}

不可能确切地说,谷歌用这些鼠标移动数据做了什么。正如您自己所看到的,它不会将大量的信息返回到服务器,因此,没有什么可担心的。

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

第二个函数与第一个函数相同。因为它是Gtalk的,我想它会更新你的状态(离开,在线等)。

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

我的两分钱。

它似乎正在用你的鼠标移动播种一个随机数生成器。

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

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的MD5散列、位置、new Date().getTime()Math.random()开始。

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

我敢打赌,这是“页面内分析”测试版。制作光标并单击热图。

在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点击?当您单击“+1 ”时,弹出的登录屏幕似乎附加了一个随机数作为哈希,URL以“&;HL=en-US#randomnumber ”结尾

我认为,Guo和Agichtein在Chi 2010http://www.mathcs.emory.edu/~qguo3/wip287-guo11.pdf上发表的论文可以为谷歌为什么这样做提供进一步的思路。

显然,鼠标运动是眼球运动的粗略代理,并允许人们近似眼球跟踪结果。

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

这真的很牵强,但无论如何……

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

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

简而言之,如果您放置两个竞争链接/按钮,并分析指向其中一个链接的轨迹,您可以推断出图案怎样您到达决定,只点击这些链接中的一个(见13:00左右的视频)