Статьи

Как заблокировать блокировщики рекламы

block advert blockers Недавно я написал статью о том, почему важно выбирать имена файлов, которые не были случайно заблокированы блокировщиками рекламы . Комментарии показали, что технология блокировки рекламы раздражала многих владельцев сайтов. Зачем им производить премиум-контент, если они не могут получать доход взамен?

Выявить наличие блокировщиков рекламы невозможно. Используются разные технологии реализации, и они не обязательно встроены в браузер. Блокировщики рекламы также работают по-разному: некоторые используют длинный список доменов рекламодателей, в то время как другие используют регулярные выражения для подавления соответствующих URL-адресов.

Соответствие регулярных выражений используется одним из самых популярных блокировщиков, дополнением Adblock Plus от Firefox . Тем не менее, мы можем использовать проверку URL, используя технику, которая запрещает пользователям Adblock просматривать ваш контент, если они не отключают надстройку.

Ваша HTML-страница должна следовать этому примеру:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Advert Blocker blocking</title>
<meta http-equiv="content-language" content="en"><meta name="language" content="en">

<style type="text/css">
#content { display: none; }

#blockermessage
{
	font-weight: bold;
	text-align: center;
	padding: 4px;
	color: #fff;
	background-color: #c00;
}
</style>

<script type="text/javascript" src="/banner-advert.js"></script>

</head>
<body>

	<div id="content">
		<h1>Main content</h1>
		<p>This will be hidden to people using advert blockers.</p>
	</div>

	<div id="blockermessage">
		<p>Please switch of your advert blocker and enable JavaScript to view this page.</p>
	</div>

</body>
</html>

Объяснение:

  • Основное содержимое должно содержаться во внешнем элементе, таком как <div id="content">
  • Вы должны предоставить альтернативное сообщение людям, использующим блокировщик рекламы, как показано в <div id="blockermessage">
  • Важно, чтобы первые два правила CSS на странице стилизовали эти элементы. Поскольку внешний CSS-файл может быть заблокирован, я бы рекомендовал встраивать его непосредственно в HTML. Правило #content должно быть установлено так display: none
  • Наконец, внешний файл JavaScript включен. Для этого нужно указать имя файла / папки, которое будет запускать правила блокировки рекламы, например banner-advert.js.

Код для banner-advert.js:

 
// reveal content to those not using an advert blocker
if (document.styleSheets && document.styleSheets.length > 0) {
	var ss = document.styleSheets[0];
	var bRule = (ss.cssRules ? ss.cssRules : ss.rules);
	if (bRule.length > 1) {
		bRule[0].style.display = "block";
		bRule[1].style.display = "none";
	}
}

Это работает следующим образом:

  1. Когда страница загружена, основное содержимое отключено для всех, и отображается только #blockermessage.
  2. Для большинства людей код banner-advert.js выполняется немедленно. Это изменяет встроенные стили, поэтому #content становится видимым, а #blockermessage скрытым. Это происходит до отображения основного контента, поэтому пользователи не должны видеть никакой разницы.
  3. AdBlock обнаружит banner-advert.js и откажется загружать его. Стили не изменяются, поэтому основной контент остается скрытым.

Это должно порадовать многих владельцев премиум-контента. Но — сдерживаюсь — я настоятельно рекомендую вам не реализовывать это на своем веб-сайте! Существует ряд технических проблем, и блокировать блокировщики бесполезно… см. Почему блокирование рекламных блоков не будет выполнено .

Читайте также: Почему именование файлов важнее, чем вы думаете .