我们如何覆盖navigator.getBattery()? [英] How can we overwrite navigator.getBattery()?

查看:97
本文介绍了我们如何覆盖navigator.getBattery()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在编写一个chrome扩展程序,当运行指纹的站点通过运行客户端代码的站点检查电池电量时,它将返回一个随机的电池电量.一个网站可以使用的示例代码如下所示.

We are writing a chrome extension that returns a random battery level when the battery level is checked by a site running client-side code for fingerprinting reasons. Sample code that can be used by a site can be seen below.

navigator.getBattery().then(function(battery) {
    console.log(battery.level);
});

我们找不到有关如何覆盖 navigator.getBattery()方法以实现目标的文档.可以在下面看到不完整的content-script.js.

We are unable to find documentation regarding how the navigator.getBattery() method can be overwritten to accomplish the goal. The incomplete content-script.js can be seen below.

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();

我们感谢社区成员的合作.

We appreciate the cooperation of the community members.

推荐答案

使用内容脚本,该脚本通过以下代码在document_start处注入脚本-

Use a content script that injects a script at document_start with the following code -

Object.defineProperty(navigator, "getBattery", {
    value: () => {/*your custom logic goes here*/}
});

将以下内容添加到清单json中.

Add the following to manifest json.

"content_scripts": [{
    "run_at": "document_start",
    "js": ["contentscript.js"]
}]

这篇关于我们如何覆盖navigator.getBattery()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆