Данное решение позволит вам эффективно ограничить доступ к вашему сайтов, которые могут ухудшать его поведенческие метрики путем эмуляции прямых заходов на сайт, переходов на сайт с подельным referer (ссылка сайта) или имитации заходов из популярных социальных сетей, справочников и других сайтов.

Данный скрипт распространяется абсолютно бесплатно, максимально гибок в настройках, но перед его установкой, пожалуйста, внимательно ознакомьтесь с содержимым сайта.

Блокировка плохих ботов (мы не будем с вами блокировать полезных роботов, например, таких как пауки Яндекс или Google) потребует доступа к файлу .htaccess (иногда этот файл называется htaccess.txt). Перед началом работ создайте резервную копию этого файла. Редактировать файл вы можете в панели управления хостингом или на вашем компьютере, заменив его через FTP-соединение.

Установка счетчиков статистики

Нам потребуется счетчик статистики, любой, например, LiveInternet, который в реальном времени будет фиксировать источники заходов на ваш сайт и IP-адрес.

Скорее всего, у вас уже стоит Метрика Яндекс, ей будет удобнее всего пользоваться. Обратите внимание на то, что метрика должна быть установлена перед закрывающимся тегом </head> на всех страницах. Но метрику нужно слега доработать.

Перед началом скрипта метрики вставляем такой код:


<script type="text/javascript">
var yaParams = {ipaddress: "<? echo $_SERVER['REMOTE_ADDR']; ?>"};
</script>

В код скрипта метрики добавляем строку params:window.yaParams,:


<!-- Yandex.Metrika counter -->
<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(*******, "init", {
      params:window.yaParams,
      clickmap:true,
      trackLinks:true,
      accurateTrackBounce:true,
      webvisor:true
   });
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/123321" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->

123321 - вместо этих цифр должен быть номер вашего счетчика метрики Яндекс.

Теперь вы начнете видеть посетителей в метрике.

Начинаем блокировать роботов

В файле .htaccess после самой первой строки 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]

# проверка 2-ух условий
#1. на пустой referer
#2. и совпадения хотя бы одного ip

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

# конец вставки

Выше приведен шаблон настроек для защиты сайта от ботов. В нем перечислены самые распространенные диапазоны мобильных IP Москвы и Питера, а так же самые популярные сайты, с которых эмулируются прямые заходы роботов.

Ссылки сайтов и айпишники непрошеных гостей у вас могут быть другими, можно что-то добавить, что-то убрать. Ограничивать посетителей можно по широкому диапазону, например, 176.59.*.* или 176.59.10.* . Все очень индивидуально.

Проверяем установку настроек

Заблокируйте ваш IP-адрес и зайдите на сайт прямым заходом (перед этим чистим браузер), должна вернуться 403 ошибка.

Важно! На 403 странице не должно быть ссылки на сайт, иначе бот по ней кликнет. Лучше написать, что действия посетителя показались подозрительными могли, поэтому вы просите его зайти на сайт через Яндекс или Google по запросу "купи слона" - имеется ввиду какой-то ваш витальный (брендовый) запрос. Либо ставим капчу в код 403 страницы.

И еще. В код 403 страницы вставлять код метрики Яндекса не нужно!

Еще один вариант: Задаете пользователю вопрос, а вариантом ответа на него будет несколько ссылок. Одна ссылка ведет на ваш сайт, остальные выбрасывают робота, например, в какую-то социальную сеть. Все ссылки нужно указать через сервис по сокращению ссылок. Вариант сокращения ссылки для этого сайта: https://clck.ru/XY572. А такую ссылку мы можем предложить https://clck.ru/XY58j для робота. Ссылка для людей и для роботов.

Ограничивать доступ вредоносному трафику и проверять пользователей на их "роботность" не противоречит принципам поисковой оптимизации, тем более что сами поисковые системы иногда показывают captcha людям. Но в отличии от php-скриптов по защите сайтов, которые подкидывают капчу, ваш сайт в это время будет иметь статус 403 - доступ запрещен, но если при обращении и к сайту сторонний скрипт отдаст роботу страницу с со своим кодом, то это может быть зачтено как клоакинг https://yandex.ru/support/webmaster/threats/cloaking.html , а в кеше браузера бота останется визит на страницу вашего сайта.

Если после установки запрета на прямые заходы по диапазону айпи, какие-то боты будут проскальзывать, то этого не стоит пугаться. Это устройства, которые были ранее у вас, у них в куках есть ваш сайт, поэтому заход не прямой. Со временем они отвалятся.

Не удивляйтесь, если боты начнут приходить с новых IP диапазонов. Так бывает. Почаще смотрите в метрику, хотя бы раз в пару дней.

В большинстве случаев, через 1-3 недели роботы пропадут с вашего сайта, т.к. перед запуском этого трафа злоумышленники проверяют списки сайтов на предмет кодов ответа сервера и систем защиты, а вам не придется оплачивать абонентское обслуживание. Просто вернете исходный файл htaccess, а в случае возвращения плохого трафика, увы, придется включить блокировку опять на пару недель.

Всем добра и роста позиций!