从 devtools 控制台的匿名 Javascript 函数中读取变量
Read variable from anonymous Javascript function from devtools console
我正在尝试从一个缩小的站点脚本中读取一个变量,该脚本由一个用于逆向工程目的的巨大匿名函数组成。据我了解,通常不可能访问困在这个闭包中的变量。
(function() {
var af = function (a) { ... }
var ge = function() {
var obj = {};
obj.foo = 'bar';
af(obj);
}
})();
但是,我可以通过在该范围内的一行上放置一个断点来实现。
有没有办法在不修改脚本的情况下从 Javascript 在开发人员控制台或其他方式重现此内容?
我曾尝试将 Function.prototype.apply
但 运行 挂钩到无限递归路径中。
该脚本重新定义了像 console
这样的全局变量,这让这很烦人。
找到了实现此目的的方法,感谢 wOxxOm。
Object.defineProperty(Object.prototype, "foo", {
set: function(val) {
console.log("Intercepted:", val);
this._foo = val;
},
get: function() {
return this._foo;
}
});
我正在尝试从一个缩小的站点脚本中读取一个变量,该脚本由一个用于逆向工程目的的巨大匿名函数组成。据我了解,通常不可能访问困在这个闭包中的变量。
(function() {
var af = function (a) { ... }
var ge = function() {
var obj = {};
obj.foo = 'bar';
af(obj);
}
})();
但是,我可以通过在该范围内的一行上放置一个断点来实现。 有没有办法在不修改脚本的情况下从 Javascript 在开发人员控制台或其他方式重现此内容?
我曾尝试将 Function.prototype.apply
但 运行 挂钩到无限递归路径中。
该脚本重新定义了像 console
这样的全局变量,这让这很烦人。
找到了实现此目的的方法,感谢 wOxxOm。
Object.defineProperty(Object.prototype, "foo", {
set: function(val) {
console.log("Intercepted:", val);
this._foo = val;
},
get: function() {
return this._foo;
}
});