Может ли веб-сайт определить, читает ли какое-либо расширение chrome DOM - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу узнать из javascript на веб-странице, если какое-либо расширение chrome, установленное в Chrome, читает DOM. Я хочу иметь возможность сделать это, даже если расширение не вставляет HTML или сценарий в DOM. Есть ли способ, которым я могу это сделать? По сути, я хочу предотвратить соскребание содержимого сайта.

Я вижу эту опцию

http://blog.kotowicz.net/2012/02/intro-to-chrome-addons-hacking.html

, но для этого необходимо знать идентификаторы расширения. Я хочу быть в состоянии сделать это более естественно для всех установленных расширений.

Есть ли какое-нибудь событие, на которое я могу рассчитывать, когда готов элемент DOM или вызывается какая-то функция DOM?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 23 апреля 2020

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

...