Если нет возможности юзать SSL (https), используйте мой скрипт (на предыдущей странице), гасит ростелекомовские баннеры на стороне юзера на 100%.
Ну, теоритически можно. Вопрос в том - как именно другие провайдеры вставляют свою рекламу. Это надо изучать. Так что не факт, что мой скрипт сработает для любого другого случая.---------- Добавлено 16.04.2020 в 20:13 ----------
Не совсем понял. Тот скрипт, что в DOM появляется (загружаемый с Analytic.press, который вызывает показ баннера, и который я собственно удаляю своим скриптом) он вставляется "аяксово", после прогрузки сайта другим скриптом, у которого src будет вовсе не Analytic.press.
В общем, работает это так: при запросе по HTTP любого .js файла провайдер выдает в ответ 307 редирект на свой скрипт, в который урл оригинального скрипта передается параметром, и внутри их скрипта содержится склейка твоего скрипта с их говном (не напрямую, а тоже урлами, то есть сами они не загружают твой скрипт).
И заставить всех пользователей поставить это расширение? Не реально.
К слову, дописывать налету get-параметры я пытался, с MutationObserver такой фокус не срабатывает. Видимо браузер сначала все-таки дергает скрипт с оригинальным URL-ом, а потом уже меняй, не меняй, пофиг, РТ всеравно уже заредиректил.
Я прекрасно знаю как работает внедрение рекламы Ростелекома. Вы не знаете.
Я удаляю из DOM скрипт, который вставляется первоначальным скриптом загрузчиком, и именно тот скрипт, который я удаляю, отвечает за добавление в DOM баннера. Первоначальный скрипт-загрузчик я не удаляю, потому что он встроен (при помощи редиректа) в один из скриптов подгружаемых сайтом. Но это и не требуется, так как показ баннера вызывает второй скрипт, добавляемый "аяксово" в DOM. Его я и удаляю, прежде чем он срабатывает. Вы в своих экспериментах это не учитываете, но доказываете, что мой скрипт не работает.
Конкретно в случае со скриптами внедряемыми ростелекомом все работает как надо. На них и надо тестировать.
Если вам это не нужно, то пожалуйста, не используйте. Не надо замусоривать топик.
PS: почитайте про MutationObserver, тогда может дойдет, почему именно это API используется в моем скрипте.
Для ростелекома на данный момент решение. И этот топик именно про mail.ru-ные баннеры внедряемые ростелекомом.
Ну у меня же работает. На разных устройствах проверял. Какой браузер? Дайте ссылку на сайт где вы это проверяете.
Веб-мастерам в помощь. Если кто не имеет возможности полностью перейти на https. Скрипт предотвращающий загрузку баннера (версия 2.0), вставлять желательно прямо после тэга <head>:
<SCRIPT>const observer = new MutationObserver(function(mutationsList, observer){ for(let mutation of mutationsList) { for(let node of mutation.addedNodes) { if(node.nodeName == "SCRIPT") { if(node.src.search("analytic.press") !== -1) { node.parentNode.removeChild(node); } } } }});observer.observe(document, {childList : true, subtree : true});</SCRIPT>
Скрипт удаляет из DOM "вредоносный" ростелекомовский скрипт загружающийся с домена analytic.press еще до того, как он успевает выполниться. В результате никакого баннера не появляется.
PS: Пожалуйста, не пишите про uBlock, вы скорее всего не понимаете о чем речь в данном посте.
Вы в Российских судах когда-нибудь бывали? Я вас умоляю... Нихрена вы там у Ростелекома не высудите глобального. Еще и издержки потом им судебные выплатите.
Естественно вебмастерам куда уж проще на https перейти, если еще этого не сделали, чем в "басманном" суде бодаться с гос.провайдером и сынками генералов ФСБ, которые там верховодят.
100% не уберут, уверен, что у них нет даже такой фичи - убрать или включить конкретному пользователю. Делать им нефиг так заморачиваться.
Я же сказал - это для веб-мастеров, которые не хотят чтобы посетители на их сайтах видели лишнюю рекламу от провайдера. Такой "самоадблок" для баннеров ростелекома.
Если кому из веб-мастеров надо. Для тех кто у кого нет SSL, и пока нет возможности на него перейти. Скрипт удаляет баннеры "Ростелекома" после открытия страницы. К сожалению до удаления первичного загрузчика всей срани у меня пока руки не дошли, поэтому здесь удаляется не причина, а следствие.
Никаких гарантий. Используйте на свой страх и риск :) Но у меня в данный момент работает.
Скрипт рекомендую вставлять куда-нибудь в конец страницы, в подошву, перед </BODY>.
<script type="text/javascript"> var rostel_scan=0;RosTimeID = setInterval(find_rostel, 3000);setTimeout(RemoveAD, 3000);function find_rostel(){ rostel_scan++; if (rostel_scan>5) clearInterval(RosTimeID); let elements = document.querySelectorAll("[id^='mailru']"); for(let n = 0; n < elements.length; ++n) { elements[n].parentNode.removeChild(elements[n]); } document.documentElement.style.transform = "translateY(0px)"; }function RemoveScripBytURL(url) {var ScriptURL='';var scripts = document.getElementsByTagName( "script" );for(let n = 0; n < scripts.length; ++n) { ScriptURL = scripts[n].src; if(ScriptURL.indexOf(url) !== -1) { document.scripts[n].remove(); return "CLEAR!"; } }return '0';}function RemoveAD(){ console.log(RemoveScripBytURL('mail.ru')); console.log(RemoveScripBytURL('analytic.press'));}</script>
Вырезать JS из DOM уже не имеет смысла, когда он прогрузился, он ведь уже к тому времени добавил в DOM код баннера. Так что js ты вырежешь, а баннер останется. Можно вырезать тот элемент, в котором их баннер, но id и class там динамический. Впрочем изъебнуться можно, но завтра они поменяют принцип. Надежнее все же на SSL перейти.
ЗЫ:
Сейчас у меня Ростелеком добавляет в конец html-a (не в самый конец, почему-то, а между других строчек) вот такую строку:
<script src="https://ad.mail.ru/static/ads-async.js" type="text/javascript" async=""></script>
Ну а в DOM там вообще ад, их майл.рушный скрипт как троян написан, часть кода грузится через gif-ку, внутри код обфусцированный.