Как мы отфильтровали ботов и понизили показатель отказов с 90% до 42%

Несколько месяцев назад у нас сильно вырос показатель отказов по Google Analytics. Мы сделали стандартный набор действий, который рекомендуют делать в Сети: создали в аналитике представление «без пауков и ботов» (настройка «Фильтрация роботов» в представлении), проверили качество настройки кода Analytics, проверили и настроили длительность сессии и так далее. Все это заняло время, но не дало результатов. Показатель отказов в некоторые дни превышал 90%. При этом качество контента на нашем сайте или структура входящего трафика никак очевидным образом не менялась. Это просто «случилось в одночасье» и всё. Поскольку ничего подобного описанного в Сети я не нашел, решил описать как мы нашли и исправили проблему и снизили показатель отказов до приемлемых 42-55%.

Приведу скриншот для иллюстрации исходной проблемы:

image

Поскольку все стандартные схемы результата не дали, пришлось думать самим и искать проблему. Analytics ничем не помог, и я начал проверять через Яндекс.Метрика. Общие показатели по Метрики были довольно приемлемые (до 10% отказов). Прочитав несколько статей о том почему отказы в Метрике могут быть приемлемые, а в Analytics зашкаливать, стало понятно где искать проблему. Если коротко: Метрика считает отказами все посещения, которые длились меньше 15 секунд, а Analytics – все, после которых не было других посещений страницы. Таким образом я начал смотреть отчет по длительности посещений в Метрике и Аналитиксе и понял, что у меня нереально большой процент посещений с длительностью 0:00 секунд, до 50% дневных сеансов. Еще несколько прочитанных статей позволили отбросить гипотезу о не срабатывающем коде и ботах, которые пробираются через фильтр Аналитикса. Никаких признаков реферального спама у меня тоже не было.

В итоге я просто отфильтровал в Вебвизоре посещения с длительностью 0:00 и решил попробовать найти закономерность. Вот что я получил:

image

Каждый «посетитель» заходил со своей подсети, с явно указанным User Agent, разрешением экрана и операционной системой, то есть для Метрики и Analytics он никак не воспринимался как бот.

image

image

Единственное, что его выдавало это ритмичный характер посещений каждые 1 час 1 минуту и 0 длительность просмотра. Я скинул скриншоты нашему сисадмину Андрею и попросил посмотреть, что это такое, по логам сервера. Первый же IPшник заставил нас удивиться: к нам ходил кто-то из подсети Лига.Закон.

есть айпишник за 4:56, сейчас проверю другие заходы
inetnum: 193.150.7.0 — 193.150.7.255
netname: LIGA-UA-NET2
remarks: LIGA ZAKON


Всего по логам нашлось 43 IP-адреса, которые обращались к разным страницам нашего сайта с разных провайдеров, с разными User Agent.

По RIPE ничего интересного мы не нашли, ничем не примечательные IP из обычных подсетей. Кроме того, что боты ходили с интервалом 1:01 больше ничего явно общего в них не было.

Весь найденный список мы заблокировали в iptables.

В течении суток мы еще выловили несколько новых IP, набросали алгоритм автоматической фильтрации подобного бот-трафика на случай, если после блокировки одних ботов, им на смену придут новые. Однако больше никого подобного не нашли. Было только пара любопытных User Agent, но никого с интервалом 1:01.

Еще через сутки показатель отказов по Google Analytics начал приходить в норму и резко упал с 89% до 42,75%.

На сегодня, спустя почти неделю после описанных событий, показатель отказов держится в приемлемых рамках 42-55%, общую динамику можно посмотреть на графике. Там, где резкое снижение — это мы отфильтровали ботов.

image

Гипотезы о том «что это было» у нас всего две.

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

Вторая гипотеза: это какая-то неизвестная широкой общественности форма бот-атаки, возможно направленная как раз на повышение показателя отказов и, как следствие, пессимизации в поисковой выдаче Google.

Если вы тоже с таким сталкивались, буду рад комментариям. Если вам будут нужны более подробные инструкции о том, как мы это искали и блокировали, пишите тоже.
Поделиться публикацией
Комментарии 23
    0
    Если пользователь просто открыл главную страницу, посмотрел ее и закрыл сайт, а трекинга ивентов у вас нет, то у него будет всегда показывать время сессии 0:00.
      0
      Часть про строгую периодичность вы пропустили?
        0
        я это к тому, почему у них аж 42% отказов считается нормой
          0
          Для обычных сайтов не конверсионных, 42% отказов это приемлемо.
          Вот статистика на которую мы опираемся, она довольно общепринятая в разных источниках:

          Магазины, которые работают со своей целевой аудиторией, имеют показатель отказа 20-40%
          Одностраничные продающие сайты имеют показатель отказа до 80%. И это считается нормальным
          Для новостных и информационных сайтов этот показатель около 50%
          Интернет-сервисы – 20-30%. Обычно не больше.
          Разные энциклопедии, WiKi и т.п. 10-30%


          Причина того что у нас 42% это норма в том что у нас довольно много «случайного» трафика, то есть человек открыл нас, например с ссылки с логотипа, посмотрел «кто это?» и закрыл. Для аналитикса будет отказ.
        0
        В статье говорится что боты заходят раз в 61 минуту, думаю это один из основных критериев по которому происходит бан.
          0
          Да. Еще проверяем что ходят на одну и ту же страницу. То есть ip совпадает, интервал посещений 1 час ± 10 минут, посещают одну и ту же страницу.
        0
        > Вторая гипотеза: это какая-то неизвестная широкой общественности форма бот-атаки
        Что-то совсем несолидно даже бот-атаку с 42х IP-шников проводить…
          0
          >> бот-атака, возможно направленная как раз на повышение показателя отказов и, как следствие, пессимизации в поисковой выдаче Google.

          Может я в танке, но действительно ли Google использует информацию из Google Analytics для ранжирования сайтов? Если так, то что происходит, если я не использую Google Analytics? Это «опускает» мой сайт?
            +2
            1. Разумеется, использует. Вы думаете бесплатные аналитика и метрика — это от широчайшей душевной доброты интернет-гигантов? И вообще сейчас при ранжировании рулят поведенческие факторы — как вы думаете их замеряют?
            2. Кроме сервер-сайд статистики есть ещё браузеры (хром, яндекс). И тоже бесплатные, что характерно. Угадайте с трёх раз — зачем?
            0
            На самом деле статистику Google Analytics очень легко накрутить и вполне возможно что конкуренты просто портят вашу статистику.
              0
              +1. Сделать такое очень легко, например сервис livesurf справляется с этой задачей. И стоить будет копейки. Ни один раз видел как люди накручивали 2-4 месяца так себе посещалку, а потом пытались продать сайт на том же telderi или pr-cy
              0
              Возможно этой лиге попалась задачка со словосочетанием на которое охотно откликается ваш сайт, но при открытии овыясняется что это не то… Поисковые запросы что говорят?
                0
                Лига.Закон это система для юристов и бухгалтеров со сводкой актуальных законов. Трудно понять что она могла искать каждый час на статье про CRM-автоматизацию, например.
                0
                Нет смысла писать (сложный) обход антибота Аналитики только ради медленного получения рандомных страничек, тем более нет смысла использовать для этого высокоанонимные прокси из одной страны или даже города.

                Самый опасный вариант: все эти айпишники — это реальные люди, подключённые к ботнету, а ваш сервер является узловой нодой. Вы видите только пинги раз в час, но не видите, что сервер может отдавать на эти пинги… что-то за пределами видимого html кода, т.е. команды ботам.

                Менее реальный вариант: это браузерный бот (с эмуляцией JS итд), который визуально выдаёт пользователю набор целевых страниц. Это может быть, например, стенд с сайтами, которые идут по телеку\монитору в каком-нибудь зале, по типу новостных, чтобы забить экраны разной, но похожей по дизайну картинкой. Или какой-нибудь каталог бизнес-платформ, который регулярно кеширует данные на стороне пользователя.
                  0
                  Мы тоже думали про ботнет, конечно. Но сами запросы это обычные пинги, действительно – ничего кроме html и заголовка 200 ОК сервер им не отдает, если судить по логам. Разовьем мысль. Предположим что у нас на сервере есть некоторое скрытое условно-вредоносное ПО, которое, например, анализирует логи, вылавливает элементы этого самого ботнета, например, суть заключается в том чтобы просто засветить ip-шники, оставим за кадром зачем, и отправляет им какие-то данные. Таким образом вся эта система работает абсолютно автономно и незаметно. Для антивирусов и прочих антишпионов она вообще не заметна, потому что ничего не происходит. Вопрос тогда, почему это всё прекратилось, после блокировки 42 айпишников?

                  Браузерный бот выглядит более реалистично для нас как раз, потому что просто посылать из реального браузера запрос на реальный URL, гораздо проще и понятнее.
                    0
                    Вопрос тогда, почему это всё прекратилось, после блокировки 42 айпишников?


                    Потому что разные боты используют разные ноды, «своих» основных вы забанили, и те, что были прикреплены к вам, начнут подключаться к другим. Более того: «вы не видите» — я имел ввиду также и то, что команды не всегда будут посылаться, далеко не при каждом запросе есть надобность что-то делать, могут быть скрыты в тегах, которые нельзя запалить беглым осмотром итд.

                    Чтобы наверняка проверить эту версию, вам надо взять слепок чистых страниц (вместе с хедерами), которые они посещают, с development-сервера, на котором вируса точно нет, и сравнивать его со своим ответом от продакшна целиком (т.е. скриптом, сравнивающим текст) в течении дней 3х. Так вы разницу в ответах и сможете запалить, или окончательно отбросить эту версию.

                    А версий не так уж и много: тот факт, что запросы идут из разных подсетей, на самом деле убирает все варианты с централизованными ботами типа SEO-чекеров, которые тут предлагали, любительских поисковиков и такого плана. Децентрализованно могут быть или ботнеты или каталоги всякие, которые запускаются программой c браузером. Могут быть и конкуренты, но слабо верится в такие малые объёмы от них, да и завышать отказы — совсем какая-то эфемерная борьба с ветряными мельницами.
                      0
                      Посмотрим на такой вариант, это интересно. Если выяснится что это ботнет, напишу отдельную заметку в продолжение.
                  0
                  Коллеги, простите, я случайно отклонил чей-то комментарий, если что- повторите, пожалуйста.
                  Насколько я помню, коммент был о том, была ли зависимость в страницах. Отвечаю — не было.
                    0
                    Было такое же один в один, только заходил спустя ровно 1 час, а не через час и 1 минуту.
                    Методом тыка мы вроде (ну почти) поняли в чем дело — это были SEO сайты, с которыми мы тоже игрались, забытые нами они продолжали мониторить сайт и проверять.
                      0
                      Да, мы тоже об этом думали, что это какие-то проверяющие сайты. Но тогда возможно их подключили не мы, а кто-то, кому было интересно проверить наш сайт, потому что в то время когда всё это началось, мы такого точно не делали.
                      0
                      Разница в ЯМ и ГА по отказам — служебный хит «неотказ», который ЯМ отправляет через 15 секунд по умолчанию, а ГА нет. Создайте с помощью setTimeOut отправку такого хита в ГА, и показатели выровнятся.
                      А вот боты с интервалом в 1.01 — это действительно мусор в отчётах. Только чтобы их заходы фиксировались, нужно, чтобы они исполняли скрипты, и ГА и ЯМ, то есть их заходы должны быть и там и там.
                        0
                        Верно, боты действительно фиксировались и в ГА и в ЯМ.

                        Про setTimeOut – интересная идея! А google не сочтет это мошенничеством с данными?
                          0
                          setTimeOut использую на всех ресурсах, всё работает без проблем, кроме лишнего служебного event-события в отчётах. Нет никакого мошенничества.

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

                      Самое читаемое