У нас есть рекламная система для дома, и мы постоянно боремся с ботами и пауками. Очевидно, мы хотим, чтобы как можно ближе к 100% действительным показам, и у меня есть определенная зона объявлений, с которой я экспериментирую.
Эта рекламная зона отображается только на одной странице сайта, поэтому я сравниваю наши просмотры страниц Google Analytics для этой страницы с количеством показов для этой рекламной зоны и стараюсь, чтобы они были как можно ближе.
Основные защиты включают в себя известный список ботов/пауков, обслуживающий объявления с помощью javascript и honeypot для автоматического сбора новых скребок/ботов.
Это обеспечивает доставку рекламы на 130-150% просмотров страниц. Значение, боты запускают показы, но не просмотры страниц.
Итак, я начал загружать объявления только по движению мыши, а доставка упала до 40-60% просмотров страниц.
Теперь это только рабочий стол, без мобильного.
Что я не думаю об этом исполнении, сейчас так мало? Не так много людей с JS отключились или просматривали без мышей.
Я на самом деле предположил, что едва ли буду прерывать показы, думая, что большинство ботов будут имитировать движение мыши, а не то, что я брошу их так низко.
У кого-нибудь есть мысли?
РЕДАКТИРОВАТЬ С JS SNIPPET
adShow = 0;
document.onmousemove = function(){
if (adShow == 0) {
var leaderboard = CODE_FOR_AD;
var adLeaderboard = document.querySelector('.adspace-leaderboard#adspace');
adLeaderboard.innerHTML = leaderboard;
adShow = 1;
}
}
Когда вы прокомментировали этот ответ (как я и ожидал), вы разместили фрагмент JS сразу после открытия body
-tag, поэтому перед фактическим элементом HTML (то же самое произойдет, если вы разместите этот фрагмент в head
разделе страницы). Весьма вероятно, что кто-то перемещает мышь во время загрузки страницы, и поэтому событие mousemove может быть выполнено до того, как будет создан HTML-элемент, и поэтому рекламное пространство никогда не будет загружено.
Вы можете легко это исправить, разместив фрагмент непосредственно перед закрывающим тегом </body>
или обернув код в onDomReady
или onLoad
. Последние два кода будут выполняться, соответственно, после загрузки DOM или даже после загрузки всех активов (изображений и т.д.). В вашем случае onDomReady
будет достаточно.
Как это:
document.onDomReady = function(){
adShow = 0;
document.onmousemove = function(){
if (adShow == 0) {
var leaderboard = CODE_FOR_AD;
var adLeaderboard = document.querySelector('.adspace-leaderboard#adspace');
adLeaderboard.innerHTML = leaderboard;
adShow = 1;
}
}
}