Как создать третье поле в _ga и _gid?

Я слишком много расследую на _gid и _ga. И, как я знаю, определение их:

_ga: используется для идентификации уникальных пользователей, срок действия которого истекает через 2 года.

_gid: используется для идентификации уникальных пользователей и истекает через 24 часа.

Пример:

_ga: GA1.3.292651669.1502954402 _gid: GA1.3.974792242.1509957189

Из каких значений в _ga cookie? Я знаю значение каждого поля в _ga. И то же самое для _gid.

Но я не знаю, как создать третье поле, случайно сгенерированный идентификатор пользователя (для _ga:292651669 и для _gid: 974792242).

Я попытался удалить и _ga & _gid, и я получил новую пару _ga: GA1.3.2097663971.1509959880 и _gid: GA1.3.1180999143.1509959880. Третьи поля обоих изменены. Так как они могут генерировать и как Google идентифицирует пользователя по ним. Предположим, я открываю браузер сегодня с парой _gid и _ga, а завтра я очистил все куки, ga создаст новую пару (_gid,_ga).; Это значит, что я сегодня, что я другой завтра.

Пожалуйста, помогите мне.

Спасибо и наилучшими пожеланиями,

Джейм

1 ответ

Вот код из файла analytics.js 2017-09-21, который генерирует случайный идентификатор. Это случайное значение, основанное на текущем времени, userAgent, cookie, referrer а также history.length от window объект.

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>

Другие вопросы по тегам