otgamera
@otgamera
Что то знаю, что то нет!

Блокировка загрузки скрипта на сайте (как)?

Допустим есть сайт "N" на сайте подключен скрипт "B"(с другого сервера) в этом скрипте есть код который парсит определенные данные. Но в этом же скрипте "B" (тот который с другого сервера) подключен скрипт рекламы
p.tlrtb.com/ad/base.js? (вот он, назовем его скрипт "V") и он тоже не с моего сайта или сервера
Внимание вопрос: Как блокировать загрузку скрипта "V" если он встроен в скрипт "B". А скрипт "B" встроен в сайт "N".
Переносить скрипт "B" к себе на сайт "N" не вариант вообще.
Внимание вопрос: Как блокировать на сайте "N" скрипт "V"
ну прям блокировать вообще загрузку скрипта "V"

Немного ясности: есть скрипт LME информера, взятый с инета. В этом скрипте по несчастию есть реклама. Вопрос как блокировать её на сайте) Сайт на wp
  • Вопрос задан
  • 1068 просмотров
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
/**
 * функция добавляет код скрипта на страницу предварительно удаляя из него указанные куски текста, 
 * @param {string} 		url  полные URL добавляемого скрипта
 * @param {string} 		replaces массив со строками, которые будут удалены (заменены на пустоту)
 */
function addScript( url , replaces=[]) {
  // получаем текст добавляемого на страницу скрипта
  fetch(url)
  .then(response=>{
    return response.text();
  })
  .then(text=>{
    // готовим регулярку для замены всех вхождени из массива replaces
    const restr = "("+replaces.join("|")+")";
    const regex = new RegExp(restr, "g");
    //  заменяем в тексте скрипта все вхождения из массива replaces
    const code = text.replace(regex,"");

    // получаем указатель на head страницы
    let head = document.getElementsByTagName( 'head' )[ 0 ];
    // создаем новый элемент script
    let script = document.createElement( 'script' );
    script.charset="utf-8";
    script.type = 'text/javascript';
    //script.src = url;
    script.innerHTML = code;
    // добавляем измененный скрипт на страницу
    head.appendChild( script );
  });
}



// Используем заготовку
// например у нас есть сторонний скрипт, который нам надо добавить на страницу => https://external.domain/js/needed.js
// но он запускаясь подгружает не нужные нам скрипты https://external.domain/js/unnecessary.js и https://external.domain/js/advertising.js
// тогда делаем так
addScript( 
  "https://external.domain/js/needed.js",
  [
    "unnecessary.js",
    "advertising.js"
  ]
);

// ну и на последок. Вы должны понимать что данное решение не панацея и его легко обойти
// например "вредные" скрипты могут иметь случайносгенерированное имя
// так же хочу предупредить, что данное решение будет сыпать ошибки в консоль, так как после удаления
// из кода загружаемого скрипта строк с именами файлов вредных скриптов, код который их загружает 
// не сможет этого сделать.
// так же данный свособ может привести к частичной или полной неработоспособности полезного скрипта
// например если полезный скрипт использует функции из подгружаемых вредных скриптов
// или если в полезном скрипте есть переменные или функции с именами, аналогичными удаляемым скриптам
// и т.д. и т.п.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Если для использования стороннего скрипта B вы согласились на рекламу V, то вы сейчас, получается, хотите обойти соглашение и нарушить условия сделки. Самый правильный путь - договориться иначе (перезаключить другую сделку). Если не удаётся, то уйти к конкурентам и договориться с ними на более выгодных условиях. Если и это не удаётся, то найти альтернативное решение. Ну и железобетонный последний вариант - реализовать подобный функционал самому, что бы это ни было (алгоритм, база, аудитория, информация) - всё можно сделать, собрать, накопить, привлечь, за свои деньги конечно же.

Заниматься хакерством - не самый правильный путь. Но здесь уже нет рецептов. Вы сами решаете, как именно обмануть партнёра. Решение будет зависеть от деталей, и от того, как именно устроены N, B ,V. Дырки в них могут оказаться такими, что их можно использовать. А если партнёр заранее побеспокоился о своей безопасности, то обход скрипта V так, чтобы использовать B, может обойтись вам дорого (вы потратите много сил и времени, ну или денег, конечно же).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы