Мы пишем расширение Chrome, которое возвращает случайный уровень заряда батареи, когда уровень заряда батареи проверяется сайтом, на котором выполняется код на стороне клиента по причинам снятия отпечатков пальцев.Пример кода, который может использоваться сайтом, приведен ниже.
navigator.getBattery().then(function(battery) {
console.log(battery.level);
});
Мы не можем найти документацию о том, как метод navigator.getBattery()
может быть перезаписан для достижения цели.Неполный файл content-script.js можно увидеть ниже.
var navigatorBatteryPrivacy = '(' + function() {
'use strict';
var navigator = window.navigator;
var modifiedNavigator;
if (Navigator.prototype) {
modifiedNavigator = Navigator.prototype;
} else {
modifiedNavigator = Object.create(navigator);
Object.defineProperty(window, 'navigator', {
value: modifiedNavigator,
configurable: false,
enumerable: false,
writable: false
});
}
modifiedNavigator.getBattery = function modifiedGetBattery() {
return Promise.resolve(new BatteryManager());
};
} + ')();';
var s = document.createElement('script');
s.textContent = navigatorBatteryPrivacy;
document.documentElement.appendChild(s);
s.remove();
Мы ценим сотрудничество членов сообщества.