如何在_ga和_gid中生成第三个字段?

时间:2017-11-06 09:26:56

标签: cookies google-analytics analytics web-analytics analytics.js

我对_gid和_ga进行过多调查。据我所知,它们的定义是:

_ga:用于识别唯一身份用户,并在2年后过期。

_gid:用于识别唯一身份用户,并在24小时后过期。

示例:

_ga:GA1.3.292651669.1502954402 _gid:GA1.3.974792242.1509957189

what are the values in _ga cookie?开始,我知道_ga中每个字段的含义。对于_gid来说也是一样的。

但我不知道如何生成第三个字段,随机生成的用户ID(对于_ga:292651669和_gid:974792242)。

我试图删除_ga和amp; _gid和我得到了新的情侣_ga:GA1.3.2097663971.1509959880和_gid:GA1.3.1180999143.1509959880。两者的第三个字段都改变了。那么他们如何生成以及Google如何通过他们识别用户。假设我今天用几个_gid和_ga打开浏览器,明天,我清除所有cookie,ga将创建新的couplw(_gid,_ga)。这意味着我今天在不同的明天是我。

请帮帮我。

谢谢&最诚挚的问候,

詹姆斯

1 个答案:

答案 0 :(得分:4)

以下是analytics.js发布2017-09-21中生成随机ID的代码。 它是基于userAgent对象的当前时间cookiereferrerhistory.lengthwindow的随机值。

var O = window;

// var M = document;
// Stack Overflow doesn't allow cookie access in sandbox, so lets fake it:
var M = [];
M.cookie = "cookieName=someValue";

var hd = function() {
    return Math.round(2147483647 * Math.random())
}

function La(a) {
    var b = 1, c;
    if (a)
        for (b = 0,
        c = a.length - 1; 0 <= c; c--) {
            var d = a.charCodeAt(c);
            b = (b << 6 & 268435455) + d + (d << 14);
            d = b & 266338304;
            b = 0 != d ? b ^ d >> 21 : b
        }
    return b
}

var ra = function() {
    for (var a = O.navigator.userAgent + (M.cookie ? M.cookie : "") + (M.referrer ? M.referrer : ""), b = a.length, c = O.history.length; 0 < c; )
        a += c-- ^ b++;
    return [hd() ^ La(a) & 2147483647, Math.round((new Date).getTime() / 1E3)].join(".")
}


document.getElementById('output').innerText = ra();
<h3>Output:</h3>
<pre id="output"></pre>