我想从网页中的javascript中了解安装在Chrome浏览器中的任何chrome扩展是否在读取DOM。我希望能够做到这一点,即使该扩展没有在 DOM 中插入任何 HTML 或脚本。有什么方法可以做到这一点吗?基本上,我想防止网站内容被刮取。
我看到这个选项
http:/blog.kotowicz.net201202intro-to-chrome-addons-hacking.html。
但这需要我知道扩展的id。我希望能够在所有安装的扩展中更自然地做到这一点。
是否有一些事件我可以得到基于当一个DOM元素准备好或一些DOM函数被调用?
先谢谢你的帮助。
读取DOM的方法有很多,所以要抓住所有的方法会很困难。然而,你可以做的一种方法是包装单个DOM查询方法。比如说,你可以用这样的方法来查询DOM。
const origFn = HTMLDocument.prototype.querySelector;
HTMLDocument.prototype.querySelector = function(...args) {
const error = new Error();
console.log(`querySelector was called. Args:`, args, ', Stack trace', error.stack);
return orig.apply(this, args);
}
这将做一个 console.log
每当 document.querySelector
被调用。我不能100%确定栈跟踪是否会引用Chrome扩展JavaScript,但值得一试。另外,也不能保证所有的原型都能像这样被覆盖。