Возможно ли предотвратить выполнение определенной функции в конкретном сценарии внутри браузера, возможно, путем перенаправления вызовов этой функции на статическую/измененную версию файла сценария с предопределенным правилом? (Подобно тому, как мы используем расширение 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
в моем примере. Я задал этот вопрос, потому что мне было просто любопытно, можно ли обойти эту проверку.
Я полагаю, что в другом контексте один веб-сайт может быть вредоносным, и инженер безопасности должен будет провести анализ. Он может найти обманчивую процедуру проверки среды, полезную в этом сценарии.
Firefox предоставляет webextension API webRequest.filterResponseData() для проверки и перезаписи содержимого любого сетевого запроса, включая загрузку javascript. Это позволит вам проанализировать javascript и заменить этот метод.
Это только оставляет задачу создания надежного, потокового javascript-механизма согласования и перезаписи.