Приветствую друзья!
Решил я заглянуть в Яндекс Метрику и ахнул. Посещаемость сайта подскочила почти в 2 раза. Стал я разбираться в чем дело и понял, что мне активно накручивают отказы.
Что такое отказы?
Отказ - это время посещение сайта одним пользователем до 15 секунд. С точки зрения Яндекса если пользователь перешел на сайт и сразу вышел, то сайт считается нерелевантным и понижает его в поиске. Если таких отказов немного, то ничего страшного, а в моем случае стоит забеспокоиться.
Где смотреть отказы?
Яндекс Метрика -> Посетители и клиенты -> выбираем с визитами которых по Поведению -> Отказы
Какие варианты решения проблемы могут быть?
- Платные сервисы а-ля antibot.cloud. Лично для нас дороговато платить ежемесячно за отсеивание ботов.
- Скриптом определяем ботов по ip и блокируем их через файл .htaccess.
Данный скрипт реализован на сайте - антибот и мы его внедрим на свой сайт.
- При загрузке сайта показываем всплывающее окно и если это бот, то данное окно он закрыть не сможет, а значит Яндекс Метрика не загрузится. Довольно интересное решение от ребят из пиксель тулс, которое неплохо себя показало в деле.
Стоит ли бояться, что реальный пользователь не закроет всплывающее окно и уйдет?
Я думаю не стоит беспокоиться об этом. Реальному человеку не сложно нажать на одну кнопку. Скрипт себя хорошо показал в деле.
Первый этап. Установка скрипта защиты от ботов
Вставляем данный код перед закрывающимся тегом </body> в конце html документа. Данный код должен быть вставлен на каждой странице сайта. Если у вас CMS а-ля Wordpress, то вставляем в footer.php вашей темы.
<div class="before-footer-scripts-place"></div>
<div class="welcome-pt-modal">
<div class="welcome-pt-overlay">
<div class="site-popup-inner welcome-pt-message">
<form method="post" enctype="multipart/form-data" action="">
<div class="site-form-title">Добро пожаловать!</div>
<div class="site-row">
<p class="site-form-text">Это простая проверка на роботов. Кликните продолжить.</p>
</div>
<div class="site-form-buttons">
<div class="site-form-button">
<a href="#" class="welcome-pt-close">Продолжить</a>
</div>
</div>
</form>
</div>
</div>
</div>
<script type="text/javascript">
var yaParams = {ipaddress: "<? echo $_SERVER['REMOTE_ADDR']; ?>"};
</script>
<script src="/assets/js/pts.lazyload.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
let dataLazyLoadingJS = {
data: {
ya_counter: {
status: false,
html: '<script type="text/javascript">(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");ym(123456789,"init",{params:window.yaParams, clickmap:true,trackLinks:true,accurateTrackBounce:true, webvisor:true }); <\/script><noscript><div><img src="https://mc.yandex.ru/watch/123456789" style="position:absolute; left:-9999px;" alt="" \/><\/div><\/noscript>',
area: '.before-footer-scripts-place'
},
}
};
let dataSettings = {
cookie_name: 'PST_VERIFIED_COOKIE',
};
let LazyLoad = new ptsLazyLoad(dataLazyLoadingJS, dataSettings);
LazyLoad.simpleCheck(1);
});
</script>
Обратите внимание что в двух местах мы указываем номер счетчика из Яндекс Метрики. Вам нужно указать свой номер:
- https://mc.yandex.ru/watch/123456789
- ym(123456789,
Теперь укажем стили, которые будут выводить всплывающее окно. Можете прописать их в соответствующем файле .css, который отвечает за стили сайта.
.welcome-pt-overlay {
opacity: 0;
visibility: hidden;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
background-color: rgba(0, 0, 0, .5);
z-index: 8000;
transition: all 0.3s;
}
.welcome-pt-message {
opacity: 0;
visibility: hidden;
width: 100%;
max-width: 500px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 8001;
box-shadow: 0px 11px 15px -7px rgb(0 0 0 / 20%), 0px 24px 38px 3px rgb(0 0 0 / 14%), 0px 9px 46px 8px rgb(0 0 0 / 12%);
text-align: center;
padding: 30px;
margin: 16px 0;
border-radius: 4px;
background-color: #fff;
box-sizing: border-box;
transition: all 0.3s;
}
@media (max-width: 532px) {
.welcome-pt-message {
width: auto;
left: 16px;
right: 16px;
transform: translate(0, -50%);
}
}
.is-active.welcome-pt-overlay,
.is-active .welcome-pt-message {
opacity: 1;
visibility: visible;
}
/* Custom styles here */
.site-form-title {
text-align: center;
margin-bottom: 20px;
font-size: 36px;
line-height: 40px;
font-weight: 300;
color: #3d424b;
}
@media (max-width: 532px) {
.site-form-title {
margin-bottom: 14px;
font-size: 30px;
line-height: 36px;
}
}
.site-form-text {
font-size: 16px;
line-height: 20px;
margin-top: 0;
}
.site-form-buttons {
display: flex;
justify-content: center;
margin-top: 32px;
}
.welcome-pt-close {
height: 50px;
line-height: 50px;
min-width: 180px;
padding: 0 32px;
border: none;
font-size: 16px;
white-space: nowrap;
color: #fff;
cursor: pointer;
text-decoration: none;
border-radius: 5px;
background-color: #0836ff;
transition: all 0.3s ease 0s;
display: inline-block;
margin: 0;
text-transform: uppercase;
letter-spacing: 0.02em;
box-sizing: border-box;
text-align: center;
box-shadow: 0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%);
}
.welcome-pt-close:hover {
background-color: #0435c9;
}
Далее необходимо подключить скрипт, который мы указали раннее в строке:
<script src="/assets/js/pts.lazyload.js"></script>
Скачать скрипт можно по данной ссылке
Теперь если вы сделали все правильно у вас при заходе на сайт должно появиться всплывающее окно.
Если окно не появляется, то проверьте еще раз подключение скриптов, стилей и очистите историю браузера.
Важно! Статус счётчика в Яндекс Метрике может быть «Не найден», пугаться не стоит, если скрипт установлен правильно, то данные будут поступать в полном объёме.
Второй этап. Определяем IP пользователя и блокируем через htaccess.
В самом начале мы прописали скрипт, который определяет ip посетителя:
<script type="text/javascript">var yaParams = {ipaddress: "<? echo $_SERVER['REMOTE_ADDR']; ?>"}; </script>
Далее в счетчике Яндекс Метрики мы указали параметр:
params:window.yaParams
Этот параметр будет прописывать IP адрес посетителя в Яндекс Метрике.
Теперь мы должны в файле .htaccess прописать правила по которым мы блокируем определенные ip. Если у вас этого файла нет, то его необходимо создать
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# проверка на хобя бы одного из referer
RewriteCond %{HTTP_REFERER} click.my.mail.ru [NC,OR]
RewriteCond %{HTTP_REFERER} l.instagram.com [NC,OR]
RewriteCond %{HTTP_REFERER} t.co [NC,OR]
RewriteCond %{HTTP_REFERER} away.vk.com [NC,OR]
RewriteCond %{HTTP_REFERER} zen.yandex.ru [NC,OR]
RewriteCond %{HTTP_REFERER} youtube.com [NC,OR]
RewriteCond %{HTTP_REFERER} ok.ru [NC,OR]
RewriteCond %{HTTP_REFERER} mamba.ru [NC,OR]
RewriteCond %{HTTP_REFERER} facebook.com [NC]
RewriteRule .? - [F,L]
RewriteCond %{HTTP_REFERER} ^$
RewriteCond %{REMOTE_ADDR} ^178.176.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^83.220.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^176.59.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^213.87.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^91.193.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^188.170.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^185.3.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^92.38.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^89.112.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^89.113.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^217.66.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^193.34.232.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^94.25.*.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^31.173.*.*$
RewriteRule .? - [F,L]
# ниже пишем те ip, которые точно принадлежат 100% ботам
# это не обязательный кусок кода
Deny from 5.15
Deny from 5.26.130.0
</IfModule>
Выше приведен шаблон настроек для защиты сайта от ботов. В нем перечислены самые распространенные диапазоны мобильных IP Москвы и Питера, а так же самые популярные сайты, с которых эмулируются прямые заходы роботов.
В строках Deny from 5.26.130.0 указываем IP, которые вы отловили в Метрике. IP адреса посетителей можно найти в разделе Посетители и клиенты после установки вышеуказанного кода на страницы сайта:
Далее кликаем на запись и кнопку подробнее
Видим отловленный IP
Вносим плохой IP по которому отказ в .htaccess. В моем случае строка будет такая:
Deny from 178.176.72.14
Если вдруг вы не увидите IP адрес в Метрике значит у вас не установлен код на этой странице. Проверьте еще раз на всем сайте.
Обращайте внимание на иностранные IP и IP сети Metropolitan branch of PJSC MegaFon, которые используют для накрутки поведенческих факторов.
Теперь видим результат налицо. ЗА 1 день трафик упал раз в 20.
Итоги
Всегда контролируйте и замечайте резкие аномальные всплески посещаемости, снимайте почаще позиции сайта. Если вы не знаете как внедрить скрипт защиты от ботов, то обращайтесь поможем. Контакты на нашем сайте.
Успехов вам и хороших позиций.