если ставить порог CPMV, то доход прилично снижается, а вместо рекламы часто показывается пустое место
Нет, тут дело в другом... Многие пользователи (особенно с VPN, Firefox с защитой, Brave, uBlock и т.д.) приходят без referrer вообще они рекламу не увидят. Google с 2020 года часто отправляет referrer без параметров ([хттп://google.com/), но сам домен остаётся.Yandex тоже может скрывать параметры, но домен виден.
В общем есть момент, можно показывать блоки только зашедшим referrer но если хочешь ловить ещё и прямой трафик, например закладки — добавь условие empty($_SERVER['HTTP_REFERER']).
Короче, дело к ночи...
Самый простой вариант.. php
<?phpfunction isFromSearchEngine() { if (empty($_SERVER['HTTP_REFERER'])) { return false; } $referer = strtolower($_SERVER['HTTP_REFERER']); $url = parse_url($referer); if (!$url || empty($url['host'])) { return false; } $host = $url['host']; // Список доменов поисковых систем (можно расширять) $searchEngines = [ 'google.', 'yandex.', 'bing.com', 'yahoo.com', 'duckduckgo.com', 'rambler.ru', 'mail.ru', 'go.mail.ru', 'nigma.ru', 'gogo.ru', 'baidu.com', 'seznam.cz', 'naver.com', 'qwant.com' ]; foreach ($searchEngines as $se) { if (strpos($host, $se) !== false) { return true; } } return false;}// Использованиеif (isFromSearchEngine()) { echo '<div class="ads-block">Твоя реклама здесь</div>';}?>
Или скриптом
<script>function isFromSearchEngine() { const referrer = document.referrer.toLowerCase(); if (!referrer) return false; const searchEngines = [ 'google.', 'yandex.', 'bing.com', 'yahoo.com', 'duckduckgo.com', 'mail.ru/search', 'go.mail.ru', 'rambler.ru' ]; return searchEngines.some(se => referrer.includes(se));}if (isFromSearchEngine()) { document.write('<div class="ads-block">Реклама для пришедших из поиска</div>'); // или просто показываешь уже существующий блок // document.querySelector('.ads-from-search').style.display = 'block';}</script>
Можно еще через .htaccess + переменная окружения (Apache)
RewriteEngine On# Проверяем, что реферер содержит домены поисковиковRewriteCond %{HTTP_REFERER} (google\.|yandex\.|bing\.com|duckduckgo\.com|yahoo\.com) [NC]RewriteRule ^(.*)$ - [E=from_search:1]# Если переменная установлена — можно использовать в PHP через $_SERVER['REDIRECT_from_search']
Тогда через PHP так..
<?phpif (!empty($_SERVER['REDIRECT_from_search'])) { echo '<div class="ads-block">Реклама</div>';}?>
Или универсальный вариант..
<?php$ref = $_SERVER['HTTP_REFERER'] ?? '';$fromSearch = preg_match('#(google|yandex|bing|duckduckgo|yahoo|rambler|mail\.ru)#i', $ref);if ($fromSearch) { echo '<div class="ads-block">Только для трафика из поиска!</div>';}?>
Напоминаю, для прямого трафа типа закладок добавь условие empty($_SERVER['HTTP_REFERER']).
Комбо
<?php$ref = $_SERVER['HTTP_REFERER'] ?? '';$isDirect = empty($ref);$isFromSearch = !$isDirect && preg_match('#(google|yandex|bing|duckduckgo|yahoo|rambler|mail\.ru)#i', $ref);if ($isFromSearch) { echo '<div class="ads-from-search">Реклама только для поискового трафика</div>';}?>
Вуаля! 😀 Ащо можно показать блокирующим рекламу какую-нибудь рекламу или окно с предупреждаловкой... или с просьбой отрубить блокировщик со страшным предупреждением что их трафик полностью. перехватывается сомнительным плагином (реально помогает!). Я обычно им показываю рекламу на внутренние страницы сайта и издевательски вставляю картинку как в рекламе 🤣 Когнитивный диссонанс обеспечен! Бобра и удачи! В смысле, не бобра удачи, чтобы все деревья упали.. 🤣
Конечно. У меня на сайтах при прежнем трафике доход год к году упал в 2 раза. 2024-й был еще норм более-менее.
Основные причины и так всем известны, это не китайская математика:
1. Тотальная монополия Яндекса на рекламном рынке. Не нравится - типа уходите. Куда вы денетесь с подводной лодки?
2. Постоянно ухудшающаяся ситуация в реальной экономике.
А нам тут про каких-то ботов втирают дичь 😀
Подскажите, пожалуйста, формат Floor Ad стоит ли сейчас протестировать? Когда-то Full screen приносил большой доход, но года два назад доход резко упал по нему, уже давно отказались.
Как сейчас дела обстоят с Floor Ad?
Продолжим тему. Раз пошла такая пьянка, раскрою некоторые безопасные фокусы, использовать вам их или нет - дело ваше личное. Наверное уже некоторые убедились, что уничтожение ботов на своем сайте работает. Тут правда надо учитывать еще и качество сайта, ибо ГС и генеренные с ИИ все равно мало актуальны для яндекса и тем более для рекламодателей.
<script>// ID вашего RTB-блока (из кода Яндекса)const BLOCK_ID = 'R-A-1234567-1'; // ← замените на свойlet refreshCount = 0;const MAX_REFRESHES = 30; // сколько раз обновить за сессию (защита от бесконечного цикла)const REFRESH_INTERVAL = 40000; // 40 секунд — самый безопасный интервал.function refreshYandexRTB() { if (refreshCount >= MAX_REFRESHES) return; if (typeof Ya !== 'undefined' && Ya.adfoxCode) { Ya.adfoxCode.reload(BLOCK_ID, { onlyIfInViewport: true }); refreshCount++; }}// Запускаем через 40 секунд после загрузки страницыsetTimeout(() => { refreshYandexRTB(); // Дальше каждые 40 секунд, только если пользователь ещё на странице setInterval(() => { if (document.visibilityState === 'visible') { refreshYandexRTB(); } }, REFRESH_INTERVAL);}, REFRESH_INTERVAL);</script>
Более грамотный вариант, ротация только при видимости...
<script>const BLOCK_ID = 'R-A-1234567-1';let refreshed = false;const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting && !refreshed && entry.intersectionRatio > 0.5) { setTimeout(() => { if (typeof Ya !== 'undefined' && Ya.adfoxCode) { Ya.adfoxCode.reload(BLOCK_ID); refreshed = true; } }, 35000); // обновляем через 35 сек после появления в зоне видимости } });}, { threshold: 0.5 });// Находим контейнер блока по data-id или классуconst blockContainer = document.querySelector(`div[data-id="${BLOCK_ID}"]`) || document.querySelector('.yandex-rtb-block');if (blockContainer) observer.observe(blockContainer);</script>
Ротация при скролле вниз если статья длинная...
<script>const BLOCK_ID = 'R-A-1234567-2'; // блок в середине или внизу статьиlet lastScrollY = 0;let refreshes = 0;window.addEventListener('scroll', () => { if (refreshes >= 15) return; const scrolled = window.scrollY + window.innerHeight; const pageHeight = document.body.scrollHeight; // Если проскроллили больше 70% страницы — обновляем if (scrolled > pageHeight * 0.7 && window.scrollY > lastScrollY) { lastScrollY = window.scrollY; setTimeout(() => { if (typeof Ya !== 'undefined' && Ya.adfoxCode) { Ya.adfoxCode.reload(BLOCK_ID); refreshes++; } }, 30000); }});</script>
Автоматическая ротация липких блоков, например боковая колонка...
<script>const BLOCK_ID = 'R-A-1234567-3';let timeOnPage = 0;const interval = setInterval(() => { timeOnPage += 30; if (timeOnPage >= 30 && timeOnPage % 40 === 0) { // каждые 40 сек if (document.visibilityState === 'visible') { Ya.adfoxCode.reload(BLOCK_ID, { onlyIfInViewport: false }); } } if (timeOnPage > 1200) clearInterval(interval); // останавливаем через 20 минут}, 30000);</script>
Проблема сего общества озвучена, они будут тратить время на флейм и хейт на чужих ресурсах, но заняться своим не могут ....
Каждая вложенная минута в своей ресурс, на дистанции дает доход.
Поставил по приколу на один сайт по инструкции. Доход не изменился (сюрприз-сюрприз).
Выводы делайте сами)
Вывод делается после ввода. Второй теоретик - пройдите мимо. 😀
Или подробней ...что сделано, как. Ссылки покажи на ресурс.