我正在开发Chrome扩展程序,我想绕过iFrame检测(即buster)脚本。
我能够绕过这种检测:
if (top !== self) {
//break out
}
将此代码注入顶部:
window.self = window.top;
但如果我有这样的事情怎么办?
if (window != top) {
//break out
}
如何重新定义window
?
答案 0 :(得分:2)
您无法重新定义全局对象的window
和top
属性
window
本质上是对全局窗口对象window
属性的引用(window.window
)。此属性定义为不可配置且不可重写。您可以通过在控制台中执行Object.getOwnPropertyDescriptor(window, "window")
来验证这一点。 configurable: false
和writable: false
属性意味着任何修改它的尝试都将失败(使用false
返回值或严格模式下的错误)。 specification of the Window object需要window
属性的此行为。
窗口的top
属性不可配置且不可重写,因此您无法覆盖该窗口。 (另一方面,parent
和self
可以被覆盖。)
你似乎试图找到一种普遍可用的愚弄大片的方法。这对我来说似乎是一项不可能的任务。您可以以某种方式拦截<script>
元素并在代码执行之前从代码中删除iframe检测,但即使您成功执行了某些示例,也总会有其他的扩展程序无法执行照顾。