<iframe>内的欺骗导航器
我正在编写隐私浏览器扩展。 我需要做的一件事就是欺骗window.navigator对象,它是我成功为主窗口对象成功完成的属性。 我还需要欺骗页面上每个iframe.contentWindow的window.navigator对象。 我想我可以使用self.frames,然后通过欺骗每个循环,但是我的代码运行后创建的框架又如何,但是当我的代码运行时不存在,例如var myFrame = document.createElement(“iframe”); ???
我希望所有导航器对象实例都是主窗口中的导航器对象实例以及每个iframe中创建的导航器对象实例进行欺骗。 为了让您知道我正在尝试做什么,这无法欺骗每个iframe中的导航器。
Object.defineProperty(HTMLIFrameElement.prototype.contentWindow, "navigator", {
configurable: true,
enumerable: true,
value: "some fake navigator object"
});
也许是因为它实际上window.HTMLIFrameElement.prototype和那我要去哪里错了?
有任何想法吗? 如果你不明白这个问题,请询问更多细节。
iframe中的全局对象( window
)不是从HTMLIFrameElement
的原型派生的。 原型的contentWindow
属性仅仅是一个访问器,它为您提供了一个跨领域代理到其他全局。
要替换实际的navigator
属性,您需要使用{all_frames: true, run_at: document-start}
在每个iframe中运行脚本。