Google Analytics网页分析如何运作?

问题描述:

Google Analytics采用“网页内分析”视图,可直接在您自己的网站上显示点击率和其他信息。我正在寻找类似的东西来记录所有点击。Google Analytics网页分析如何运作?

问题是我不确定Google是如何实现他们的页内分析视图的 - 他们似乎使用了一个或两个iframe,并将他们自己的HTML和JavaScript注入其他页面。

如何去做这样的事情 - iframes是最好的方式吗?如果domainX试图操纵domainY的渲染,你将如何避免Javascript的同源安全策略?

+0

如果你打算做这样的事情,然后使用自定义事件进行跟踪。我之前发布了更多信息:http://*.com/questions/5132388/how-to-track-where-on-page-was-link-clicked/5132409#5132409 – CarneyCode 2011-03-06 15:23:12

+0

这个问题的标题的答案是“通常情况下,它不会。“ – Yahel 2011-03-07 21:13:02

+0

它在我尝试过的众多网站上正常运行... – CJD 2011-03-12 16:31:57

认为这可以做得很简单。您注入了JavaScript,确保每当用户点击链接时,它都会向iframe中的特定页面请求/发布内容。像这样的东西(jquery):

$('a').live('click', function() { 
    $('#' + iframeid).attr('http://somedomain.com/my_magic_page.php?linkClicked=' + $(this).attr('id') + '&page=' + window.location.toString()); 
} 

不知道它是否会工作。

+0

我不这么认为,这将起作用。 jQuery attr函数需要一个或两个参数。如果你使用一个参数进行调用,这个参数需要是一个想要设置的属性映射,或者你想获得一个属性名称。也许我错了,但似乎这个例子是不正确的! – Briganti 2012-01-30 08:57:46

这是一个非常有趣的问题。你是对的,同样的原产地政策禁止注入JS。但谷歌分析有一个优势:它已经在您的网站(跟踪代码)。

因此,这里是如何工作的(据我可以看到):

  • 当您打开网页内分析,您首先采取https://www.google.com/analytics/reporting/iyp_launch
  • 该网页重定向到您的网站,并增加了谷歌会话的网址(如http://example.com/#gaso=THESESSION
  • 跟踪器现在检查引用是否是iyp_launch并设置了汽油。如果是,它不仅加载跟踪器,而且注入JS需要进一步的数据和呈现这样,JS就在框架(或窗口)内执行并绕过同一个p olicy。
  • 由于Google Anaytics已经跟踪您的访问(即,将您标识为与查看上一页相同的用户),因此可以将额外的JS与跟踪器一起注入,直到您的访问结束(即您关闭该页面) 。这样,叠加层可以在您点击链接后再次渲染。

所以我猜的底线是这样的:事情是这样的页可以,如果网站的所有者已经加入你控制他的网站的脚本已经信任你做分析(这是一个很好的例子,为什么要在做这样的事情之前要非常小心)。如果您没有这种网站访问权限,则可能不可能绕过同源策略 - 至少,我想不出另一种方式来执行此操作(除非通过您的服务器代理所有请求,但这会导致其他主要问题)。