Блокировка рекламы в браузере (User CSS)

Поделюсь опытом, как я блокирую рекламу в браузере Chrome (к счастью, мне хватает одного браузера), пользуясь базовыми знаниями HTML/CSS. Этим способом делается также и мелкая настройка интерфейса веб-страниц (поля, размер шрифта и т.д.) под свои хотелки.

Когда-то (лет 20 назад) в браузерах (по крайней мере в Firefox) была возможность писать User CSS в специальном файле; сейчас я использую для этого расширение (extention). Это, кстати, единственное расширение, которым я обременил свой браузер.

Итак, уберём навязчивые баннеры с часто посещаемых сайтов

Шаг 1. Установим расширение User CSS либо аналогичное, какое нравится.

Шаг 2. Находясь на конкретном сайте с раздражающей нас рекламой, жмём на сине-зелёный значок расширения в правом верхнем углу браузера:

Курсор приглашает прописать CSS

Курсор приглашает прописать CSS

Открывается редактор CSS-кода (для данного домена). Обычно одного CSS-правила

display: none !important;

хватает, чтобы не отображать не понравившийся нам элемент (блок) HTML. Можно также ограничить ширину, высоту, прозрачность блока, задвинуть его за экран и многое другое (вся мощь CSS нам в помощь). Можно увеличить шрифт в той же Википедии… Но вернёмся к рекламе.

Чтобы достать имена (id, class) элементов HTML, к которым мы хотим применить правила CSS, клацаем правой кнопкой мыши по элементу (баннеру) и выбираем последний пункт меню «Просмотреть код»:

Даже если попасть чуть выше, чем реклама, - тоже сработает :)

Даже если попасть чуть выше, чем реклама, — тоже сработает :)

Внизу откроется инспектор объектов (вкладка Elements). Наводя мышь на разные строки кода, мы без труда поймём, к какой именно прямоугольной области экрана эта конкретная строка кода относится. Вот, например, нажав правой кнопкой мыши по выбранной строке, я копирую сразу селектор выбранного элемента:

Гадкая реклама закрашена чёрным цветом :)

Гадкая реклама закрашена чёрным цветом :)

Это оказался селектор #sidebar-direct

Теперь, если пропишем

#sidebar-direct {
  display: none !important;
}

то пропадёт вся правая колонка страницы. Поля ввода и перевода текста сдвинутся вправо:

df01653efb9662c37546d1131e2bd90c.png

Мне такой сдвиг (за счёт вырезанной колонки) не понравился, поэтому продолжаю нашаривать мышкой строки ниже, чтобы перейти к вложенным блокам. Выбираю код на две строки ниже — копирую его селектор: #sidebar-direct > div > div

Вставляю этот селектор перед {

2e667dace77bb9927c53f17207cb8dd1.png

Ура, теперь сдвига нет. И если повторно нажать на сине-зелёный значок расширения, убрав редактор кода, мы убедимся, что гадкой рекламы тоже нет :)

Вот так, методом проб и ошибок, за несколько дней эпизодической (затрачивая по 5 минут на сайт) несложной работы, которая заключается в исследовании HTML-кода, я настроил обрезку рекламы (а также некоторых других элементов интерфейса) на регулярно посещаемых сайтах.

Делюсь готовым кодом

Итак, для яндекс-переводчика код получился такой:

#sidebar-direct > div > div {
  display: none !important;
}

Девять строк кода для ya.ru избавят от пульсирующих просьб попробовать яндекс-браузер (первые пять строк), а также от рекламы в правой колонке:

.Distribution-Popup {
  position: relative;
  right: 0px;
  max-width: 1px;
}
iframe,
.content__right .VanillaReact {
  display: none !important;
}

Для vk.com:

#l_ads,
#ads_left {
  display: none !important;
}

Код для livejournal.com:

.b-discoverytimes-wrapper,
.discoverytimes-noiframe,
.ng-scope {
  display: none;
}
div[class^="hgsstwa"],
div[id^="yandex_rtb"] {
  display: none;
}
body div,
body p {
  font-size: 20px;
  line-height: 1;  
}

Для dic.academic.ru:

#ad_top {
  display: none;
}
div[id^="yandex_rtb"],
div[class^="ee"] {
  display: none !important;
}

Пример настройки размера шрифта (сайт arxiv.org):

body {
  font-size: 24px;
}
.content .arxiv-result p.title {
  font-size: 30px;
}

Для books.google.ru (тот случай, когда бесят огромные поля, отнимающие место у основного контента):

#gb {
  line-height: 20px;
}
#gba+div {
  line-height: 0px;
  height: 0px;
}
#gbq2 {
  padding: 2px;
}

Для dzen.ru:

yatag[id^="ya_partner"],
.article-right-ad-block__main {
  display: none !important;
}

Для сайтов pythontutor.ru, cyberleninka.ru (и многих других, использующих яндекс-рекламу):

iframe,
div[id^="yandex_rtb"] {
  display: none;
}

Примечание

Разработчики сайтов время от времени меняют код рекламных блоков, а значит — и нам придётся заново отследить, под какими селекторами теперь прячется реклама. К счастью, это бывает нечасто (раз в два-три года, и то не у всех).

Другие способы защиты от рекламы (а также нежелательных обновлений и прочая, и прочая)

Наверное, многие этот способ знают: запретить винде обращаться к вредоносным (с нашей точки зрения) доменам в файлике hosts (он без расширения) который лежит обычно в папке \Windows\System32\drivers\etc (если мы не меняли адреса системных папок).

Пример:

127.0.0.1 www.sublimetext.com
# 127.0.0.1	www.yastatic.net 	# не видны картинки яндекс-поиска
# 127.0.0.1	yastatic.net

В этом примере только одна рабочая строка. Две другие закомментированы — как оказалось, блокировка этих доменов (вместе с рекламой) нарушает работу яндекс-картинок, яндекс-карт и т.п.

Примеры файла hosts с известными вредоносными сайтами ищутся без труда, я скачивал у кого-то с дзена.

Выводы

Чем такой способ скрытия рекламы (посредством user css) лучше использования блокировщиков рекламы (вот тут свежая свежая статья по ним)?

Индивидуальной тонкой настройкой. А ещё — мы не ввязываемся в эту войнушку разработчиков блокировщиков и обиженных блокированных.

Ну и дополнительные хотелки по настройке под себя внешнего вида того или иного сайта здесь же можно реализовать.

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

К сожалению, не разрабатываю под мобильные устройства — не знаю, есть ли user css в браузерах под андроид. Кто знает — пишите в комментариях :)

© Habrahabr.ru