Репутація українського ІТ. Пройти опитування Асоціації IT Ukraine
×Закрыть

Как отключить код, спрятанный в Shadow DOM?

Новые технологии «подарили» средство инкапсулирования кода в веб страницы — Shadow DOM. Некоторые хитрые разработчики придумали вставлять туда всякий хитрый код.

Самый безобидный — это реклама, которая не может быть заблокирована всякими расширениями-блокираторами из-за того, что пока нет селекторов для этого элемента. А названия div классов генерируются каждый раз новые.

Кто-нибудь знает решение этой проблемы? Возможно, уже есть готовое расширение, которое позволит если не удалить всё, что добавляется в #shadow-root , то хотя бы подменить на что-то безопасное.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

что еще за Shadow DOM? звучит как хреновая новость.

настолько shadow, что fiddler’ом не вылавливается?

Ну попробовать поиграться на предмет, что будет если:
— перезаписать в прототипе HTMLElement attachShadow до старта построения DOM, через document.write например, или каким нить плагином. Можно повесить заглушку или можно насильно задавать инкапсуляцию открытой, чтобы иметь потом возможность анализировать что там внутри с elem.shadowRoot.innerHTML или делать выборку селекторов.
— клонировать элементы, выкинув shadow dom

А как это на лету со стороны клиента можно делать? Есть готовые решения возможно?

Насчет готовых решений не знаю, но достаточно найти плагин, который позволяет юзеру при загрузке страницы, запускать код, вроде этого

      (function(attachShadow) {
          HTMLElement.prototype.attachShadow = function () {
              attachShadow.call(this, {mode: 'open'});
              this.shadowRoot.innerHTML = `<span style="font-size: 14px; color: white; background-color: red; padding: 5px">Shadow DOM Blocked</span>`;
          }
      })(HTMLElement.prototype.attachShadow)
По идее должно работать для пользовательских элементов, надеюсь, не трогая при этом нативные элементы типа контроллов или видео.
Ну или самому набросать манифест под экстеншн с «run_at»: «document_start»...

P.S. одмины, джва года жду нормальное форматирование тега code... ;)

P.S. одмины, джва года жду нормальное форматирование тега code... ;)

Pre...pre...prey.

Что-то мне подсказывает, некоторые разработчики браузеров являются рекламными площадками № 1 в мире. И закончится это предсказуемо: реклама умеет достать достаточно сильно, чтобы против неё воевали всем миром. Вплоть до того что выкинут Хром за 101й километр, как когда-то выкинули его конкурентов, если он не даст блочить рекламу порносайтов.

Понимаешь ли, у людей бывают дети. И большинство не готовы ставить малышам мультики про оранжевого дядю оранжевую тётю в оранжевую жо

Дивлюсь куди відправляється запит на отримання реклами і блокую конкретний сайт, якщо реклама блимає чи закриває контент

Або є варіант це оплатити підписку і дивитись Netflix чи Takflix

Є сайтів 15 якими активно користуюсь, а там де буваю рідко то можу вручну відключити через /etc/hosts, якщо реклама заважає

Ось таке ще часто згадують коли розповідають про ефективне блокування реклами
pi-hole.net

Проблема не только в рекламе. В теневой DOM теоретически можно спрятать всё что угодно, вплоть до майнеров.

Подписаться на комментарии