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

Можно ли предотвратить выполнение определенной функции в конкретном сценарии внутри браузера, возможно, путем перенаправления вызовов этой функции в статическую / модифицированную версию файла сценария с предопределенным правилом? (Подобно тому, как мы используем расширение 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() в том же файле скрипта. Он проверяет, действительно ли загружена реклама на странице, и выполняет другие процедуры обнаружения рекламного блокировщика. Если эта функция возвращает true, antiAdBlockerMethod() затем выгрузит и заменит все визуализированные элементы в DOM большим текстом предупреждения.

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

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

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

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

РЕДАКТИРОВАТЬ: я понимаю, что я могу отключить мой adblocker в любое время, и это было бы тривиальным решением для этого вопроса. Я также понимаю, почему реклама существует в Интернете в первую очередь, и ценю ценное содержание, которое стало возможным благодаря рекламе. На самом деле у меня никогда не было мотивов применить это к каким-либо веб-сайтам, которые я посещаю, и я не знаю ни одного веб-сайта, использующего процедуры проверки adblocker точно так же, как website.com в моем примере. Я задал этот вопрос, потому что мне было просто любопытно, можно ли обойти этот вид проверки.

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

1 ответ

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

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

Другие вопросы по тегам