Есть один сайт (точнее даже далеко не один), с которым нужно работать, но который решил проводить агрессивную политику по показу рекламы. В теле страницы вставлен скрипт (тег script с указанным в src путем на внутреннюю js-страничку), который при загрузке страницы с помощью document.write открывает в нем страницу ad.yandex.ru с указанием текущей локации для редиректа. Если бы я был рядовым жителем РФ или БР, то и проблем не было. Но я живу в Украине, где все IP яндекса заблокированы всеми провайдерами.
Отключение выполнения всех скриптов приводит к неработоспособности сайта (авторизация и все такое). Если в исходнике увидеть адрес конкретного "рекламного скрипта" и заблокировать его чем-то типа adBlock, то можно некоторое время пользоваться сайтом. Но при создании новой сессии (а так же через некоторое время хождения по страницам) адрес "рекламного скрипта" изменяется и сайт снова бросает на заглушку невозможности открытия Яндекса в Украине.
Прошу помощи в написании скрипта для Tampermonkey/Greasemonkey. Суть идеи в том, что бы из структуры DOM вырезать запуск "рекламного скрипта" - в хедере он будет вторым.
Почему-то не помогло. С помощью алерта определяю, что мой юзерскрипт вообще отработал, но после закрытия алертового окошка идет перезагрузка страницы :(
(function() {
'use strict';
window.document.write = function() {return false;};
alert('test');
for (obj in window.document.scripts) {
obj.remove();
};
})();
Если алерт поместить после цикла удаления скриптов, то он не сработает. Т.е. этот код удаляет все скрипты включая самого себя. Блин, какие-то они там больно умные :(
Можете тоже попробовать: https://www.liveinternet.ru - тут вообще караул с рекламой. Если этот сайт будет адекватно работать, то далее просто включу этот скрипт и для остальных.
Правильно ли я понял: скрипт, который я видел в консоли и успешно (но разово) лочил адблоком - это был скрипт не с главной страницы (поэтому у меня ничего не получилось), а именно с фрейма adfoxHtml5_iframe, который в вашем коде удаляется?
Дмитрий Кинаш, думаю, да. Я решил более радикально поступить - удалить все ноды, в которых выводится работа скриптов. Следовательно, скрипты даже работая, будут лишь выбрасывать исключения.
В результате у меня выскакивает алерт, потом страничка перегружается (сейчас через проксю), потом с возврата с яндекса снова открывается страничка и выскакивает мой алерт, а после еще один раз.
Anton fon Faust, спасибо за ваш ответ. Про комментарии я в курсе, но посчитал, что копировать сюда название моего скрипта, его версию и область действия не имеет смысла. У вас не совсем решение моей проблемы, но лайк за хорошее предложение я вам поставил - он в статистику тостера засчитывается.