【发布时间】:2019-02-26 13:39:41
【问题描述】:
我们正在编写一个 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();
我们感谢社区成员的合作。
【问题讨论】:
-
这是一个只读属性,我不认为你可以覆盖/欺骗那些
-
@LucaKiebel 我刚刚在我的 Chrome 控制台中重写了它。
-
还要确保在
document_start运行您的内容脚本。
标签: javascript google-chrome-extension navigator batterylevel