Предотвращение выполнения определенной функции в определенном сценарии внутри браузера

1

Возможно ли предотвратить выполнение определенной функции в конкретном сценарии внутри браузера, возможно, путем перенаправления вызовов этой функции на статическую/измененную версию файла сценария с предопределенным правилом? (Подобно тому, как мы используем расширение adblocker или usercript для настройки DOM, но на этот раз для управления самими скриптами).

Рассмотрим этот сценарий, website.com использует рендеринг на стороне клиента. Когда https://website.com/article.html будет посещен, вложенный большой файл JS https://website.com/entire-app.js отобразит всю веб-страницу, как содержимое, так и рекламу.

В конце, функция, названная isAdblockerFound() в https://website.com/entire-app.js будет вызываться antiAdBlockerMethod() в том же файле сценария. Он проверяет, действительно ли объявления на странице загружены и выполняет другие процедуры обнаружения adblocker. Если эта функция вернёт true, antiAdBlockerMethod() будет antiAdBlockerMethod() и заменять все визуализированные элементы в DOM некоторым большим предупреждающим текстом.

В этой ситуации скрипт https://website.com/entire-app.js обрабатывает всю клиентскую страницу, как рекламу, так и содержимое, поэтому простое ее блокирование от загрузки сделает веб-сайт недоступным.

Чтобы только обходить/обманывать isAdblockerFound(), идея, которую я придумал, - это как-то заменить isAdblockerFound() функцией, которая всегда возвращает false до ее isAdblockerFound(). То есть, чтобы сообщить браузеру перенаправить вызовы isAdblockerFound() на настроенный isAdblockerFound() в статическую/измененную версию файла сценария, размещенную локально или временно isAdblockerFound() в браузере.

Я понимаю, что если нам не нужно предопределенное правило, мы можем использовать devtools, чтобы заморозить скрипт с точкой останова и легко выполнить что-либо между строками. Но как мы можем сделать это автоматически с предопределенным правилом? Какие расширения/инструменты необходимы?

Google не дал мне ничего полезного (все результаты касаются маршрутизации в express и т.д.).

EDIT: Я понимаю, что я могу отключить свой рекламный блок в любое время, и это будет тривиальное решение для этого вопроса. Я также понимаю, почему реклама существует в Интернете в первую очередь, и ценят ценное содержание, которое стало возможным благодаря объявлениям. На самом деле у меня никогда не было мотива, чтобы применить это на любых веб-сайтах, которые я посещаю, и я не знаю о каких-либо веб-сайтах, на которых используются процедуры проверки блога, точно так же, как и на website.com в моем примере. Я задал этот вопрос, потому что мне было просто любопытно, можно ли обойти эту проверку.

Я полагаю, что в другом контексте один веб-сайт может быть вредоносным, и инженер безопасности должен будет провести анализ. Он может найти обманчивую процедуру проверки среды, полезную в этом сценарии.

  • 0
    «Можно ли предотвратить выполнение определенной функции в конкретном сценарии с помощью расширений блокировки рекламы?» Нет, это не так, как работает блокировщик рекламы. «Идея, которую я могу придумать, чтобы предотвратить очистку страницы при обнаружении блокировщика рекламы ...» Как насчет отключения блокировщика рекламы для этой страницы? Очевидно, что вы, кажется, цените контент, который они производят, и они, кажется, ценят доход за свою работу. Иногда это так просто
  • 0
    @ Томас Конечно, я могу отключить блокировку рекламы в любое время, и я понимаю экономику. На самом деле у меня никогда не было мотива применять это к каким-либо веб-сайтам, которые я посещаю. Я спросил, потому что я заглянул в сценарии одного из веб-сайтов, которые использовали механизм, аналогичный тому, что я описал в моем примере. Мне было просто любопытно, можно ли это обойти. В другом контексте веб-сайт может быть вредоносным, и инженер по безопасности проводит анализ. В этом сценарии он может оказаться полезным обмануть функцию проверки окружения.
Показать ещё 7 комментариев
Теги:
dom
firefox
google-chrome-extension
adblock

1 ответ

1

Firefox предоставляет webextension API webRequest.filterResponseData() для проверки и перезаписи содержимого любого сетевого запроса, включая загрузку javascript. Это позволит вам проанализировать javascript и заменить этот метод.

Это только оставляет задачу создания надежного, потокового javascript-механизма согласования и перезаписи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню