Мне кажется разумным предположить, что скрипты отслеживания будут пытаться получить доступ к window.location.href
или подобному, чтобы получить текущий URL, который они будут хранить.
Таким образом, возможное решение - создать динамический c область действия, которая имеет другое значение для window.location.href
(со всей отфильтрованной конфиденциальной информацией)
Вот как это может работать:
// get the tracker script as a string, so you can eval it in a dynamic scope
let trackerScript = 'console.log("Tracked url:", window.location.href)';
// now lets lock it up
function trackerJail(){
let window = {
location: {
// put your filtered url here
href: "not so fast mr.bond"
}
}
eval(String(trackerScript))
}
trackerJail()
Если фрагмент отслеживания обернут в функцию, возможно, можно создать динамическую область видимости c для него без запуска eval
, переопределив вместо этого его прототип. Но я не уверен, что вы можете рассчитывать на то, что скрипты трекера обернуты в аккуратную функцию, которую вы можете изменить.
Кроме того, есть еще пара способов, с помощью которых скрипт может попытаться получить доступ к URL, поэтому обязательно все выходы