2017-03-17 88 views
2

我需要跟踪某人何时从我的服务器上下载文件,所以我创建了一个端点作为参数的文件名。如何从GET请求中收集Google Analytics的客户端ID服务器端?

该端点只发送GA事件并将文件返回给用户。

但是,由于我是服务器端,我无法轻松获取客户端ID以将其发送回Google Analytics。经过一番研究,此CID可在_ga cookie中获得,但Google建议不要指望它,因为cookie可能在将来发生变化:

https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#getting_the_client_id_from_the_cookie)。

那么,我怎样才能收集客户端ID服务器端发送回我的事件呢?

回答

1

_ga cookie由analytics.js库生成并使用,它是Google Analytics标识站点上用户的方式。这个值被生成存储在cookie中,据我所知,你不能从API调用生成它,例如。 即使您已经完成了您的研究,我也可以为您提供有关_ga值的一些信息。 正如你所看到的cookie的值是一样的东西GA1.2.XXXXXXXXX.XXXXXXXXXX

你必须提取得到的CID值,你将与你的服务器端发送请求的部分是最后两个部分用点(。)分隔的值意思是:

GA1.2。 XXXXXXXXX.XXXXXXXXXX < - 粗体部分包括中间

点也如你提到,谷歌的报告,你不应该对cookie的“名”计数。这意味着像getCookie('_ ga')这样的函数将不能保证能够工作。但是,如果您继续阅读分析跟踪器对象,则会提供一个函数回调函数,它将为您提供保证的值。

ga(function(tracker) { 
    var clientId = tracker.get('clientId'); 
}); 

的方式,我会去是用这个回调,得到CID,把它在我的请求的有效负载加密(例如,作为一个额外的参数),它在服务器上进行解码,然后发送测量协议请求。

+2

谢谢你的非常完整的答案。我曾想过把cid作为GET参数发送,但是想到了这个:如果用户与其他人分享链接会怎么样?我的统计资料将被损坏,因为我将为同一用户注册2次点击... –

+1

嗯这种情况实际上是描述[链接](https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain #detecting_url_sharing)在这里。首先,您可以使用特定的元数据(如User-Agent等)来识别用户。其次,您可以将自己的应用程序的“会话”ID作为自定义客户端ID发送给GA。通过这种方式,如果其他用户使用链接,只要应用程序加载,您就会知道。最后,您可以在ga库的链接页面上加载并开始下载。 – Igneel64

相关问题