Похоже, что это аналитика аналитики. В то время как analytics.js запускается, устанавливаются отдельные биты массива длиной 48 бит (управляемые через function $c
и его прототип).
var vd=new $c;
function J(a){
vd.set(a)
}
Например бит 48 установлен, если используется характеристика линкер, бит 42 установлен, если window.navigator.sendBeacon
используется для отправки отслеживания маяк, бит 40 в случае передачи через XMLHttpRequest
, бит 31, если /
должен быть добавлено к извлеченному пути.
var e=d.pathname||"";
"/" != e.charAt(0) && (J(31), e = "/" + e);
8 групп по 6 бит используются для создания строки из 64 символов [A-Z-_] postpended тильды ~ и переданных в соответствии с параметром _u
.
$c.prototype.encode = function(){
//Group 6 bits to use a 64 Char Alphabet
for(var tempArr=[], i=0; i < this.bitsArray.length; i++) {
this.bitsArray[i] && (tempArr[Math.floor(i/6)] = tempArr[n.floor(b/6)]^1 << i%6);
}
//Translate from 6 Bit groups to Alphabet
for(i=0;i<tempArr.length; i++){
tempArr[i]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".charAt(tempArr[i]||0);
}
return tempArr.join("")+"~";
};
Если я разобрана параметр _u
правильно декодировать эту строку обратно в отдельных битов позволит Google, чтобы определить, если соответствующие функции были использованы или точки в коде были достигнуты в то время как работает analytics.js
еще один пример: если вы измените имя объекта Window из 'ga' на что-то еще, то будет установлен бит 49: 'ga'! = Gb && J (49); var a = window [gb]; –