bitl

Рейтинг
102
Регистрация
10.04.2011
БОЧ рВФ 260602:
Тоже с недавних пор заметил по поведению Каспера, что он блокирует это дерьмо загружаемое с analytic.press
Провайдер Ростелеком.
Но суть в чем: у меня есть сайты, которые зарабатывают на размещенной на них рекламе РСЯ и Адсенс
Получается что Ростелеком "крадет мои клики"... и это уменьшает мой заработок..
Мне это не нравится.
Что делать в этом случае?

Если нет возможности юзать SSL (https), используйте мой скрипт (на предыдущей странице), гасит ростелекомовские баннеры на стороне юзера на 100%.

Хаагенти:
bitl, поясните можно ли изменить строку

для MutationObserver или это API используется в вашем скрипте только для t.mail.ru?

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

---------- Добавлено 16.04.2020 в 20:13 ----------

Квак:
>
bitl, лучше все-таки перехватывать загрузку скрипта с analytic.press, из его get параметров брать адрес оригинального скрипта и загружать оригинальный скрипт. Тогда функционал непонятного содержимого с analytic.press выполнятся не будет.

Не совсем понял. Тот скрипт, что в DOM появляется (загружаемый с Analytic.press, который вызывает показ баннера, и который я собственно удаляю своим скриптом) он вставляется "аяксово", после прогрузки сайта другим скриптом, у которого src будет вовсе не Analytic.press.

В общем, работает это так: при запросе по HTTP любого .js файла провайдер выдает в ответ 307 редирект на свой скрипт, в который урл оригинального скрипта передается параметром, и внутри их скрипта содержится склейка твоего скрипта с их говном (не напрямую, а тоже урлами, то есть сами они не загружают твой скрипт).


А вообще идея для расширения в браузер:
Если на странице есть вызов скриптов по http и у этих скриптов нет get параметров в вызове, то дописать случайный get параметр к вызову, например: ?nospam=yes.
P.S. Почему нужно дописывать get параметр, отому что скрипты с get параметрами не подменяются ростелекомом.

И заставить всех пользователей поставить это расширение? Не реально.

К слову, дописывать налету get-параметры я пытался, с MutationObserver такой фокус не срабатывает. Видимо браузер сначала все-таки дергает скрипт с оригинальным URL-ом, а потом уже меняй, не меняй, пофиг, РТ всеравно уже заредиректил.

SocFishing:
bitl, как это может работать, нормально загружает и только удаляет тег. И уже тут писали, что скрипт инжектится в клиентский js файл на хосте жертвы или в сdn без https, инжектить они могут что угодно. Стало быть подобное вырезание не имеет пользы. Как по мне все припарки бесполезны, что и Content-Security-Policy.

Я прекрасно знаю как работает внедрение рекламы Ростелекома. Вы не знаете.

Я удаляю из DOM скрипт, который вставляется первоначальным скриптом загрузчиком, и именно тот скрипт, который я удаляю, отвечает за добавление в DOM баннера. Первоначальный скрипт-загрузчик я не удаляю, потому что он встроен (при помощи редиректа) в один из скриптов подгружаемых сайтом. Но это и не требуется, так как показ баннера вызывает второй скрипт, добавляемый "аяксово" в DOM. Его я и удаляю, прежде чем он срабатывает. Вы в своих экспериментах это не учитываете, но доказываете, что мой скрипт не работает.

Конкретно в случае со скриптами внедряемыми ростелекомом все работает как надо. На них и надо тестировать.

Если вам это не нужно, то пожалуйста, не используйте. Не надо замусоривать топик.

PS: почитайте про MutationObserver, тогда может дойдет, почему именно это API используется в моем скрипте.

SocFishing:
bitl, это не решение проблемы. И следует добавить под все операторы домены. Так как на всех топовых есть эта подмена, только на каждом свой домен.

Для ростелекома на данный момент решение. И этот топик именно про 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, вы скорее всего не понимаете о чем речь в данном посте.

SeVlad:

Что там доказывать, если вход отличается от выхода. Проблема только в компетентности судей и юристов. Хотя первая проблема - в лени вебмастеров.
.

Вы в Российских судах когда-нибудь бывали? Я вас умоляю... Нихрена вы там у Ростелекома не высудите глобального. Еще и издержки потом им судебные выплатите.

Естественно вебмастерам куда уж проще на https перейти, если еще этого не сделали, чем в "басманном" суде бодаться с гос.провайдером и сынками генералов ФСБ, которые там верховодят.

SocFishing:
в лучшем случае для вас уберут показ, но для всех людей он сохранится.

100% не уберут, уверен, что у них нет даже такой фичи - убрать или включить конкретному пользователю. Делать им нефиг так заморачиваться.

LEOnidUKG:
Следствие убирает обычный адблок.

Я же сказал - это для веб-мастеров, которые не хотят чтобы посетители на их сайтах видели лишнюю рекламу от провайдера. Такой "самоадблок" для баннеров ростелекома.

Если кому из веб-мастеров надо. Для тех кто у кого нет 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>
fliger:

Кстати, мой код режет партнерские скрипты, загружаемые из моих же локальных файлов, если их атрибут src не указать в правиле. По идее, подобная фигня http://p.mobilebanner.ru, внедренная провайдером в локальный файл, должна вырезаться. Т.е. код ищет в DOM все теги script, проверяет их атрибут src - если он не соответствует нужному, скрипт удаляется.
Проверьте кто-нибудь.

Вырезать 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-ку, внутри код обфусцированный.

Всего: 216