Задать вопрос
otgamera
@otgamera
Что то знаю, что то нет!

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

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

Немного ясности: есть скрипт LME информера, взятый с инета. В этом скрипте по несчастию есть реклама. Вопрос как блокировать её на сайте) Сайт на wp
  • Вопрос задан
  • 1110 просмотров
Подписаться 1 Простой 1 комментарий
Решение пользователя Роман К ответам на вопрос (2)
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"
  ]
);

// ну и на последок. Вы должны понимать что данное решение не панацея и его легко обойти
// например "вредные" скрипты могут иметь случайносгенерированное имя
// так же хочу предупредить, что данное решение будет сыпать ошибки в консоль, так как после удаления
// из кода загружаемого скрипта строк с именами файлов вредных скриптов, код который их загружает 
// не сможет этого сделать.
// так же данный свособ может привести к частичной или полной неработоспособности полезного скрипта
// например если полезный скрипт использует функции из подгружаемых вредных скриптов
// или если в полезном скрипте есть переменные или функции с именами, аналогичными удаляемым скриптам
// и т.д. и т.п.
Ответ написан
Комментировать