Главная » Статьи » Как обнаружить блокировщик рекламы

Как обнаружить блокировщик рекламы

Как обнаружить блокировщик рекламы

От автора: одно из неписанных правил Интернета заключается в том, что большая часть контента является «бесплатной»… за счет того, что веб-страница содержит рекламу и трекеры. В первые дни интернета это не было большой проблемой, но трекеры и рекламные объявления стали настолько навязчивыми и агрессивными, что вам почти обязательно нужно использовать расширение для браузера, блокирующее рекламу.

Ad Blocker Plus пользуется огромной популярностью, и такой браузер, как Brave, гордится тем, что основное внимание уделяет блокировке рекламы. Часто я захожу на сайт и вижу, что на нем модалы отключены блокировщиком рекламы, что заставляет меня задуматься о том, как лучше всего определить Ad Blocker. После множества тестов и экспериментов я нашел очень простой способ найти и определить блокировщик рекламы!

По сути, мой метод заключается в том, что я пытаюсь загрузить JavaScript файл службы рекламы Google, и если запрос не выполняется, это, вероятно, связано с тем, что у пользователя включен Ad Blocker:

// Определяем, что, скорее всего, пользователь включил блокировщик рекламы
async function checkAdBlocker() { let isBlocked; async function tryRequest() { try { return fetch( new Request("https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js", { method: 'HEAD', mode: 'no-cors' })) .then(function(response) { // Запрос Google Ads прошел успешно, поэтому, скорее всего, блокировщик не используется isBlocked = false; return isBlocked; }).catch(function(e) { // Запрос не прошел, поэтому, скорее всего, блокировщик включен isBlocked = true; return isBlocked; }); } catch (error) { // извлекаем ошибку API; возможно извлечение не будет поддерживаться (старый браузер) // Помечаем, как блокер, так как возникла ошибка, и значит // прекратить дальнейшие запросы, когда эта функция запущена console.log(error); isBlocked = true; return isBlocked; } } return isBlocked !== undefined ? isBlocked : await tryRequest();
} // Используем проверку блокировщика рекламы
const usingBlocker = await checkAdBlocker();

Логика заключается в следующем:

Рекламный файл Google adsbygoogle.js, является идеальным примером файла, потому что он считается врагом № 1 — первым файлом, который блокировщик рекламы захочет заблокировать из-за популярности рекламного сервиса Google

Этот файл также имеет первостепенное значение для бизнеса Google, поэтому практически гарантировано время безотказной работы 99,999999999%.

Есть небольшой шанс, что будет иметь место проблема сети; ложные срабатывания могут происходить от проблем с сетевым подключением или плохого service worker

Если вы не считаете adsbygoogle.js лучшим примером файла для себя, вы можете легко переключиться на любой другой URL

С точки зрения создателя контента, было бы идеальным иметь свойство navigator, которое сообщало бы, был ли задействован блокировщик рекламы,… но это не произойдет в ближайшее время (…на самом деле, никогда). Однако использование таких простых сниппетов дает разумную возможность определять блокировщик рекламы!

Автор: David Walsh

Источник: https://davidwalsh.name

Редакция: Команда webformyself.