从 window.navigator 移除 oscpu 属性
Remove oscpu property from from window.navigator
如果您使用的是 FireFox,navigator
有一个 属性 oscpu
。
可以通过在 about:config
中附加 general.oscpu.override
值轻松更改 属性。
但是,此选项仅在 FireFox 中存在,在任何其他浏览器中都不存在。这样可以 100% 确定浏览器的类型。
常规手段无法去除。无论发生什么 ( oscpu in navigator
) 都会 return false
.
这一切都不起作用:
delete navigator.oscpu;
'oscpu' in navigator; // true
navigator.oscpu = null;
'serviceWorker' in navigator; // true
navigator.oscpu === null; // false
Object.defineProperty(navigator, "oscpu", {
configurable: true,
value: undefined
});
'oscpu' in navigator; // true
navigator.oscpu === undefined; // true
有没有办法从导航器中删除这个 属性?实际上还有任何其他参数。我正在编写 Firefox 附加 SDK 扩展。
做你想完成的事情有潜在的副作用。了解您的目标是什么有助于确定实现您想要的目标的好方法。
但是,对于您特别要求的,在当前范围内删除 navigator.oscpu
,以下工作:
//This specific code relies on navigator referring to the object which you want to
// modify. In an Add-on SDK extension, if navigator is _actually_ the object you need
// to modify to accomplish what you desire will depend on the scope you are in and
// what object you have set the variable navigator to refer to.
delete navigator.__proto__.oscpu;
console.log(navigator.oscpu); // undefined
'oscpu' in navigator // false
请注意,您需要在每个 context/scope 中执行此操作以使其生效。一般来说,这意味着您需要将内容脚本注入到您希望的每个页面和框架中。这也意味着您应该注意只在 context/scope 中执行此操作,您希望它被您试图欺骗的任何 JavaScript 看到(即在页面脚本的范围内,不在代码 运行 Chrome 特权范围内。)。
如果您使用的是 FireFox,navigator
有一个 属性 oscpu
。
可以通过在 about:config
中附加 general.oscpu.override
值轻松更改 属性。
但是,此选项仅在 FireFox 中存在,在任何其他浏览器中都不存在。这样可以 100% 确定浏览器的类型。
常规手段无法去除。无论发生什么 ( oscpu in navigator
) 都会 return false
.
这一切都不起作用:
delete navigator.oscpu;
'oscpu' in navigator; // true
navigator.oscpu = null;
'serviceWorker' in navigator; // true
navigator.oscpu === null; // false
Object.defineProperty(navigator, "oscpu", {
configurable: true,
value: undefined
});
'oscpu' in navigator; // true
navigator.oscpu === undefined; // true
有没有办法从导航器中删除这个 属性?实际上还有任何其他参数。我正在编写 Firefox 附加 SDK 扩展。
做你想完成的事情有潜在的副作用。了解您的目标是什么有助于确定实现您想要的目标的好方法。
但是,对于您特别要求的,在当前范围内删除 navigator.oscpu
,以下工作:
//This specific code relies on navigator referring to the object which you want to
// modify. In an Add-on SDK extension, if navigator is _actually_ the object you need
// to modify to accomplish what you desire will depend on the scope you are in and
// what object you have set the variable navigator to refer to.
delete navigator.__proto__.oscpu;
console.log(navigator.oscpu); // undefined
'oscpu' in navigator // false
请注意,您需要在每个 context/scope 中执行此操作以使其生效。一般来说,这意味着您需要将内容脚本注入到您希望的每个页面和框架中。这也意味着您应该注意只在 context/scope 中执行此操作,您希望它被您试图欺骗的任何 JavaScript 看到(即在页面脚本的范围内,不在代码 运行 Chrome 特权范围内。)。