Существует множество методов чтения 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, но стоит попробовать. Кроме того, не гарантируется, что все прототипы будут перезаписаны, как это.