Что такое отказы в Яндекс Метрике, и как бороться с ботами и нулевыми заходами

Что такое отказы в Яндекс Метрике, и как бороться с ботами и нулевыми заходами

Отказ в Яндекс Метрике — это просмотр страницы меньше 15 секунд и возвращение пользователя в поиск. В метрике показатель не должен превышать 20%, но каждый вебмастер пытается снизить показатель до минимальных значений.

Отказы считаются одним из важных показателей ранжирования. Если процент большой, поисковая система считает, что сайт не нравится пользователям, а значит, некачественный, и как следствие понижение позиций в выдаче. А значит, меньше посетителей, читателей и клиентов из поиска.

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

Моя история борьбы с отказами выбиваемыми ботами

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

Через неделю после перезапуска этого сайта я зашел на вебвизор, чтобы посмотреть, как идут дела. Картина была просто удручающая, суммарно отказы завалили за красную линию в 20%. Спустя 2 месяца работы над сайтом — просто опускаются руки. Примерно пятая часть заходов — по 0 сек. Яндекс учитывает эти заходы как отказы, и соответственно понижает его в выдаче.

Отказ в Яндекс метрике защита от ботов, нулевые заходы

Отказы зафиксированы как одиночные с разных IP, так и по несколько хитов с одних и тех же направлений.

Несколько недель упорного труда просто накрывается медным тазом. И так, далее я расскажу, как мне удалось вернуть отказы в норму и значительно сократить — нулевые заходы.

Как отсечь ботов в «Яндекс метрике»

Вначале я обратился в службу Яндекса. Что-то типа: «Эй, парни, вы тут ботов считаете, как посетителей и лепите отказы». На что мне ответили, что я могу самостоятельно отсечь их в Метрике.

По совету специалиста из службы поддержки я перешел в отчет «Роботы» по пути Отчеты — Стандартные отчёты — Мониторинг — Роботы. Внизу страницы находится подраздел называющийся «Фильтрация роботов». В нем три пункта:

  1. Учитывать визиты всех роботов.
  2. Фильтровать роботов по строгим правилам.
  3. Фильтровать роботов только по строгим правилам и поведению.

У меня стояла отметка на первом пункте. Она ставится по умолчанию на всех счетчиках Яндекс. Метрики. Я поставил на третью, и нужно признать, часть нулевых отказов ушла. Но только часть.

Фильтрация роботов по User-Agent

Следующим пунктом стала фильтрация ботов по User-Agent. Прежде всего, я установил в файл .htaccess фильтр, который отбрасывал ботов, нежелательных парсеров, грабберов контента по User-Agent.

SetEnvIfNoCase User-Agent "^Black Hole" bad_bot
SetEnvIfNoCase User-Agent "^Titan" bad_bot
SetEnvIfNoCase User-Agent "^WebStripper" bad_bot
SetEnvIfNoCase User-Agent "^ExtractorPro" bad_bot
SetEnvIfNoCase User-Agent "^CopyRightCheck" bad_bot
SetEnvIfNoCase User-Agent "^Crescent" bad_bot
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot
SetEnvIfNoCase User-Agent "^ProWebWalker" bad_bot
SetEnvIfNoCase User-Agent "^CheeseBot" bad_bot
SetEnvIfNoCase User-Agent "^Teleport" bad_bot
SetEnvIfNoCase User-Agent "^TeleportPro" bad_bot
SetEnvIfNoCase User-Agent "^NetMechanic" bad_bot
SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot
SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^WebBandit" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot
SetEnvIfNoCase User-Agent "^Telesoft" bad_bot
SetEnvIfNoCase User-Agent "^Website Quester" bad_bot
SetEnvIfNoCase User-Agent "^WebZip" bad_bot
SetEnvIfNoCase User-Agent "^moget/2.1" bad_bot
SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot
SetEnvIfNoCase User-Agent "^WebSauger" bad_bot
SetEnvIfNoCase User-Agent "^WebCopier" bad_bot
SetEnvIfNoCase User-Agent "^NetAnts" bad_bot
SetEnvIfNoCase User-Agent "^Mister PiX" bad_bot
SetEnvIfNoCase User-Agent "^WebAuto" bad_bot
SetEnvIfNoCase User-Agent "^TheNomad" bad_bot
SetEnvIfNoCase User-Agent "^WWW-Collector-E" bad_bot
SetEnvIfNoCase User-Agent "^spanner" bad_bot
SetEnvIfNoCase User-Agent "^InfoNaviRobot" bad_bot
SetEnvIfNoCase User-Agent "^Harvest/1.5" bad_bot
SetEnvIfNoCase User-Agent "^Bullseye/1.0" bad_bot
SetEnvIfNoCase User-Agent "^Mozilla/4.0 (compatible; BullsEye; Windows 95)" bad_bot
SetEnvIfNoCase User-Agent "^Crescent Internet ToolPak HTTP OLE Control v.1.0" bad_bot
SetEnvIfNoCase User-Agent "^CherryPickerSE/1.0" bad_bot
SetEnvIfNoCase User-Agent "^RMA" bad_bot
SetEnvIfNoCase User-Agent "^libWeb/clsHTTP" bad_bot
SetEnvIfNoCase User-Agent "^asterias" bad_bot
SetEnvIfNoCase User-Agent "^httplib" bad_bot
SetEnvIfNoCase User-Agent "^turingos" bad_bot
SetEnvIfNoCase User-Agent "^CherryPicker /1.0" bad_bot
SetEnvIfNoCase User-Agent "^WebBandit/3.50" bad_bot
SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot
SetEnvIfNoCase User-Agent "^Microsoft URL Control - 5.01.4511" bad_bot
SetEnvIfNoCase User-Agent "^DittoSpyder" bad_bot
SetEnvIfNoCase User-Agent "^Foobot" bad_bot
SetEnvIfNoCase User-Agent "^WebmasterWorldForumBot" bad_bot
SetEnvIfNoCase User-Agent "^SpankBot" bad_bot
SetEnvIfNoCase User-Agent "^BotALot" bad_bot
SetEnvIfNoCase User-Agent "^lwp-trivial/1.34" bad_bot
SetEnvIfNoCase User-Agent "^lwp-trivial" bad_bot
SetEnvIfNoCase User-Agent "^Wget/1.6" bad_bot
SetEnvIfNoCase User-Agent "^BunnySlippers" bad_bot
SetEnvIfNoCase User-Agent "^humanlinks" bad_bot
SetEnvIfNoCase User-Agent "^LinkextractorPro" bad_bot
SetEnvIfNoCase User-Agent "^Offline Explorer" bad_bot
SetEnvIfNoCase User-Agent "^Mata Hari" bad_bot
SetEnvIfNoCase User-Agent "^LexiBot" bad_bot
SetEnvIfNoCase User-Agent "^Web Image Collector" bad_bot
SetEnvIfNoCase User-Agent "^The Intraformant" bad_bot
SetEnvIfNoCase User-Agent "^True_Robot/1.0" bad_bot
SetEnvIfNoCase User-Agent "^True_Robot" bad_bot
SetEnvIfNoCase User-Agent "^Microsoft URL Control - 6.00.8169" bad_bot
SetEnvIfNoCase User-Agent "^URLy Warning" bad_bot
SetEnvIfNoCase User-Agent "^Wget/1.5.3" bad_bot
SetEnvIfNoCase User-Agent "^LinkWalker" bad_bot
SetEnvIfNoCase User-Agent "^cosmos" bad_bot
SetEnvIfNoCase User-Agent "^moget" bad_bot
SetEnvIfNoCase User-Agent "^hloader" bad_bot
SetEnvIfNoCase User-Agent "^BlowFish/1.0" bad_bot
SetEnvIfNoCase User-Agent "^JennyBot" bad_bot
SetEnvIfNoCase User-Agent "^MIIxpc/4.2" bad_bot
SetEnvIfNoCase User-Agent "^BuiltBotTough" bad_bot
SetEnvIfNoCase User-Agent "^ProPowerBot/2.14" bad_bot
SetEnvIfNoCase User-Agent "^BackDoorBot/1.0" bad_bot
SetEnvIfNoCase User-Agent "^toCrawl/UrlDispatcher" bad_bot
SetEnvIfNoCase User-Agent "^WebEnhancer" bad_bot
SetEnvIfNoCase User-Agent "^TightTwatBot" bad_bot
SetEnvIfNoCase User-Agent "^suzuran" bad_bot
SetEnvIfNoCase User-Agent "^VCI WebViewer VCI WebViewer Win32" bad_bot
SetEnvIfNoCase User-Agent "^VCI" bad_bot
SetEnvIfNoCase User-Agent "^Xenu's Link Sleuth 1.1c" bad_bot
SetEnvIfNoCase User-Agent "^Xenu's" bad_bot
SetEnvIfNoCase User-Agent "^Zeus" bad_bot
SetEnvIfNoCase User-Agent "^RepoMonkey Bait & Tackle/v1.01" bad_bot
SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot
SetEnvIfNoCase User-Agent "^Zeus 32297 Webster Pro V2.9 Win32" bad_bot
SetEnvIfNoCase User-Agent "^Webster Pro" bad_bot
SetEnvIfNoCase User-Agent "^EroCrawler" bad_bot
SetEnvIfNoCase User-Agent "^LinkScan/8.1a Unix" bad_bot
SetEnvIfNoCase User-Agent "^Keyword Density/0.9" bad_bot
SetEnvIfNoCase User-Agent "^Szukacz/1.4" bad_bot
SetEnvIfNoCase User-Agent "^QueryN Metasearch" bad_bot
SetEnvIfNoCase User-Agent "^Openfind data gathere" bad_bot
SetEnvIfNoCase User-Agent "^Openfind" bad_bot
SetEnvIfNoCase User-Agent "^Kenjin Spider" bad_bot
SetEnvIfNoCase User-Agent "^Cegbfeieh" bad_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>

Буквально спустя 3-4 часа поток нулевых заходов, которые выбивают отказ в поисковой системе, снизился вдвое! А что делать с остальными? Можно конечно побанить их через .htaccess добавив в файл следующие строки:

# BLACK LIST
order allow,deny
allow from all
# далее прописать IP с которых идут отказы
deny from 37.142.162.181
deny from 37.142.152.101

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

Модификации Яндекс счетчика для отображения IP адресов

Для начала необходимо создать php файл, например ip.php в котором будет размещена функция, возвращающая IP посетителя, далее предлагаю исходный код функции:

Теперь остаётся только модифицировать код счетчика Яндекса, чтобы он отображал IP в отдельную колонку. В моем случае код счетчика размещён в отдельном файле metrika.php, который просто инклудится в файле header.php директивой include.

ВНИМАНИЕ!
Файлы ip.php и metrika.php (в котором будет находится код счетчика Яндекс) необходимо создать в корневом каталоге сайта, или рядом с файлом header.php, в противном случае придется указывать путь в директиве include. В WordPress это будет ./wp-content/themes/название_темы/

Это очень удобно, разместил код в одном файле, а потом с помощью вставки прописал его там, где нужно и все. Далее я покажу что должно быть в файле metrika.php для того, чтобы все работало. Первым делом вставляем php код, который будет определять IP посетителя и присваивать его значение переменной $ip, в строке $ip=getClientIP().

Далее, код самого Яндекс счетчика

Внимание, недавно код счетчика изменился, поэтому статья исправлена с учетом этих изменений

Ниже показано, как выглядит код счетчика изначально, с учетом того, что были убраны лишние пробелы, комментирующий блок в начале строки <!— Yandex.Metrika counter —>, в конце строки <!— /Yandex.Metrika counter —>, изжившая себя временем бесполезная конструкция — <script type=»text/javascript»> заменена на <script> и идентификатор счетчика заменен на XXXXX, поскольку он у каждого свой.

Код счетчика Яндекс отличается только идентификатором и дополнительными опциями, если они включены. Например, если у вас включен вебвизор, то в строке
{id:XXXXX,clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true} появляется webvisor:true

Теперь модифицируем счетчик так, чтобы он мог отображать IP посетителя, ниже показан завершенный пример файла metrika.php, то есть то, как он должен выглядеть.


Будьте внимательны, полученное значение IP вначале строки

Необходимо создать параметр

Было:

<script>(function(m,e,t,r,i,k,a)

Стало:

<script>var yaParams={ip_adress:»<?php echo $ip;?>»};(function(m,e,t,r,i,k,a)

И передать его функции:

Было:

id:11111,clickmap:true,trackLinks:true

Стало:

id:11111,params:window.yaParams,clickmap:true,trackLinks:true

Остаётся только подключить счетчик в хедере header.php и настроить отображение столбцов в Яндекс вебмастере. Для этого в вебвизоре нажимаем «Настроить столбцы»

Отказ в Яндекс метрике защита от ботов, нулевые заходы

В левой части открывшегося окошка устанавливаем галочку напротив строчки «Параметры визитов».

Отказ в Яндекс метрике защита от ботов, нулевые заходы

А в левой хватаем мышкой появившейся блок и переносим в начало, как показано на рисунке. Это для того, чтобы отображение IP адресов шло сразу за колонкой «Время на сайте»

Отказ в Яндекс метрике защита от ботов, нулевые заходы

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

Отказ в Яндекс метрике защита от ботов, нулевые заходы

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

Отказ в Яндекс метрике защита от ботов, нулевые заходы

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

Сделать скрипт, который бы автоматически вбивал в черный список IP адреса с нулевыми заходами было бы не совсем корректным, поскольку в таком случае в бан могут улететь и нормальные пользователи, поэтому считаю, что отсев необходимо делать вручную. Надеюсь статья смогла вам помочь. Хотелось бы узнать Ваше мнение в комментариях.

Автор статьи: Alec Morty

Опубликовано: 18:14-24.06.2018

10 Комментариев —  Развернуть

  • Эмиль:

    Скажите, файлы ip.php и metrika.php создавать в корневой папке сайта?
    У меня вордпрес, сделал по инструкции, но полетели ошибочки.

  • Павел:

    Круто, очень полезная статья!
    А теоретически нельзя ли нарисовать скрипт, который автоматически будет дополнять BLACK LIST в файле .htaccess?

    • vikizima:

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

  • Дмитрий:

    Что-то не верится, что блокировка по User-Agent снизила отказы в 2 раза!!! Кто вообще запускает ботов, но не задаёт им не палевный User-Agent? Если я пишу бота, то я всегда задаю User-Agent или Хрома или ФФ

  • Андрей:

    Подскажите а как на статическом сайте это сделать, у меня кешер стоит на вп, в итоге показывает в параметре только ip моего сервера, так как страницы статичные по всей видимости файл ip.php не отрабатывает при загрузке страницы. Спасибо.

  • Наиль:

    Спасибо за полезную информацию! У меня в последний месяц на сайте стало очень много ботов. Похоже, что кто-то целенаправленно скручивает поведенческие факторы. При этом посещения эти не нулевые, не отказы, как в вашем случае, а время на сайте в среднем около минуты, не больше, но это сильно влияет на общий показатель «Время на сайте». Метрика часть из них определяет как роботов по статистическим правилам, но только часть. Можете посоветовать, как с этим бороться?

  • Ольга:

    привет, а мне сделать можете?

  • Евгений:

    А надо ли этим заморачиваться? Но спасибо за выложенные результаты работы.

  • Роман:

    Может не банить их, а дополнить для них один шаг популярный — страницу с капчей перед входом на сайт.


Ответить на комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *