Атака ботов на сайт: признаки, последствия, защита

Наше большое расследование

РубрикаВремя на чтение20 минут

Содержание:

В середине прошлого года на российский сегмент интернета свалилась настоящая напасть — десятки тысяч сайтов наводнили боты, которые тянули на дно все качественные показатели и приводили к существенному снижению позиций по многим запросам. Уменьшение поискового трафика сопровождалось множеством прямых заходов на сайт или переходом с социальных сетей. Конца этому беспределу пока не видно: Яндекс на официальном уровне проблему не признаёт, поэтому её решение целиком и полностью легло на плечи веб-мастеров и seo-специалистов.

Почему на вашем сайте появляются боты? Скорее всего, в тематике вашего сайта кто-то накручивают ПФ и ваш сайт используется в качестве «прогрева» ботов, нагуливая куки и создавая видимость человека. Всё просто. Единственная хорошая новость в том, что если боты есть на вашем сайте, то значит он действительно качественный. На этом плюсы кончаются

Признаки наплыва ботов

Косвенных признаков ботового DDoS на сайт достаточно много. Если у вас в последние дни вырос трафик в разы, обязательно загляните в метрику, чтобы узнать природу такого резкого всплеска.

1. Самый главный триггер: увеличивается количество прямых заходов, переходов с рекомендательных сайтов (Дзен) и переходов с социальных сетей с мобильным юзерагентом. Боты очень любят атаковать страницы, результаты которых входят в ТОП-3 поисковой выдачи. Страницы с низкой посещаемостью их не интересуют и они их практически не посещают.

ДО БОТОВ: 

ПОСЛЕ БОТОВ:

2. Уменьшается количество отказов, но при этом уменьшается время на сайте и глубина просмотров.

ДО БОТОВ: 

ПОСЛЕ БОТОВ:

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

В самых запущенных случаях может быть так:

4. Имитируют действия человека, если судить по Вебвизору. Боты скроллят страницу, даже останавливаются на каком-то участке текста, но, как отмечают многие веб-мастеры этим только палятся, т.к. на человеческие действия это совсем не похоже:

  • «Читают» совсем второстепенный текст, а не основной контент, главную мысль в тексте.
  • Постоянные рывки мышкой, движения вверх вниз, непонятные наворачивания кругов курсором вокруг какого-то элемента на странице
  • Быстрый скролл страницы. На такой скорости человек даже заголовки не успеет прочитать.
  • Долгие сессии (10-20 минут), но 99% времени от этих сессий — бездействие и судорожное перемещение курсора в рандомные област

5. В последнее время боты немного переориентируются и идут через поиск (не прямые заходы) по многим топовым запросам. Как мы уже писали выше, боты атакуют в основном страницы по самым конкурентным запросам, причем многие боты из поиска с высокими отказами идут с тех же самых IP-адресов, с которых идёт атака по прямым заходам

6. К прямым заходам добавляются переходы со странных сайтов, на которых, якобы, стоит бэклинк на ваш ресурс. При переходе на этот сайт ссылки на ваш сайт не обнаруживается

7. В основном боты селятся на сайтах с хорошей посещаемостью (от 500 до 1000 в сутки). Но бывают исключения и долбят ресурсы поменьше.

8. Подавляющая часть ботов идёт с IP-адресов сетей мобильных операторов Москвы или Московской области. Особой популярностью у ботоводов пользуется Metropolitan branch of OJSC MegaFon. Так же много ботов идёт с IP-сети, которая подписана как IPv4 address block not managed by the RIPE NCC. Еще один нюанс — у всех поголовно маленькое разрешение экрана (например, 375×667). Вот стандартный заход бота (конкретно здесь — с социальной сети ок.ру, где никогда не размещались ссылки на наш ресурс)

9. Количество ботов растёт планомерно. Увеличивается каждый день по чуть-чуть (10-50 заходов), но растёт. И растёт ежедневно. «Нормальным» показателем сейчас считается до 20% ботного трафика на сайте. Это, конечно, не норма, но, якобы, терпимо. А вот если доля паразитного трафика переваливает за 50%, то стоит начинать бить тревогу

10. Зачастую вместе с ботами растёт количество внешних ссылок с разных спамных и мутных ресурсов

Как посмотреть данные по прямым заходам?

Зайдите в раздел «Посетители» и добавьте фильтр «Люди у которых». Выберите «Источники» -> «Тип источника» -> «Первый источник трафика». Ставим чебокс на «Прямые заходы»

Метрика не может распознать ботов?

Да, Яндекс.Метрика не может определить ботов, даже которые идут по прямым заходам, что уж говорить про тех, кто идёт с поиска. При этом в сервисе есть отдельный пункт «Роботы». Находится в Отчеты/Стандартные отчеты/Мониторинг/Роботы.

Показывает процент роботов, которые заходили на сайт, только толку от этого никакого — метрика ботов в этот показатель не относит, т.е. не распознает.

Даже если вы поставите в настройках счетчика жесткую фильтрацию роботов (Настройка -> Фильтры), то это ничего не изменит

Последствия атаки

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

  1. Падает поисковой трафик. Его доля обычно снижается постепенно, но стабильно. Причем трафик с гугла до поры до времени не снижается (а может и вообще остаться на уровне — здесь как повезёт)
  2. Снижение позиций. Следует из первого пункта. Доходит до того, что сайты из ТОП-3 улетают далеко за ТОП-100 по многим запросам.
  3. Бан за накрутку поведенческих факторов. Даже если Яндекс и каким-то образом определяет, что это боты (но это очень маловероятно) он может посчитать, что вы сами решили накрутить ПФ на своём сайте. И доказать обратное у вас не получится.
  4. Бан в РСЯ и Adsense. Причем у нынешней волны ботов (скорее всего) нет как таковой задачи скликивать рекламу, но так как они рандомно перемещаются и скролят по странице, иногда они мисскликают по рекламе.

Зачем это делается?

Однозначного ответа на вопрос нет. Всего есть две версии, каждая из которых имеет право на жизнь:

  1. Хотят испортить ПФ сайтам-конкурентам. История стара как мир: чтобы задушить конкурента, уроните его поведенческие факторы. Минус этой версии в том, что в рунете атакуют вообще все сайты, не только коммерческой тематики, но и информационные вне зависимости от тематики, мест в выдаче и посещаемости. Никакого точечного уничтожения не прослеживается и обычно такие атаки НЕ приводят к фильтрам за накрутку поведенческих.
  2. Хотят накрутить ПФ своим сайтам с помощью «прокачанных ботов». Так называемый прогрев трафика.  Как это работает? Берется выдача из поисковой системы по определенному запросу, например, «кондиционеры». Берутся сайты с установленной метрикой и боты начинают «нагуливать» вес на этих сайтах (заходят на них напрямую, не с поиска), создавая видимость заинтересованности в этой теме, эмулируя человеческие действия. Дальше, когда «пользователь» (по факту — бот) в глазах Яндекса получает определенный статус экспертности в теме и становится максимально похожим на человека, он идёт в поисковую выдачу и кликает на нужные (заказанные) накрутчикам сайты, повышая их ПФ.

Кто этим занимается?

На тёмную сторону, так или иначе, перешли практически все SEO-конторы. Всё потому, что классическое продвижение, к сожалению (для веб-мастеров под ботами), не даёт и доли такой эффективности в ранжировании, как накрутка ПФ. Агентство krutim.online, сейчас, пожалуй, самое известное, хотя бы потому, что играют «в открытую». Если опустить мораль и этику таких методов SEO, то ребята из Krutim рассказывают достаточно интересные вещи. Последний их вебинар можно посмотреть в YouTube


Как защищаться?

Давайте сразу определимся — на данный момент нет ни одного 100% способа избавиться от ботов. Если точнее ни одного, который бы не блокировал настоящих посетителей посетителей. Или, по крайней мере, не уменьшал удобство пользования сайтом (капча и т.п.). Но обо всём поподробнее:

0. Ничего не делать

Многие веб-мастера заранее выбрасывают белый флаг, справедливо считая, что Яндекс должен сам разобраться с проблемой. Правда, последний не спешит это делать. В любом случае вариант забить и продолжать работать над сайтом имеет право на существование. Есть примеры, когда боты (а они есть почти у всех сайтов в рунете) никак не мешают развития сайта, не роняют позиции в выдаче, не уменьшают долю поискового трафика. Доля ботов в 10-20% от всего трафика присутствует у многих, так или иначе. Но этот вариант чреват тем, что в один момент может быть поздно принимать какие-либо меры.

Еще один момент: боты могут действительно уйти на некоторое время или снизить атаку до 1-2% от общего трафика, но практически всегда наплыв с прежней, как минимум, силой возвращается. Так же было и у нас.

1. Удалить метрику на конкретных страницах

Если боты атакуют несколько конкретных страниц, возможно, имеет смысл временно убрать код с этих страниц. Чисто теоретически, если их не будет в метрике, то на поведенческие факторы боты уже влиять не будет. Но такое случается редко и боты понемногу шерстят по многим страницам. На каждой из них снимать метрику — такое себе решение. Кстати, полное снятие метрики с сайта вообще никак на атаку не повлияет. Было проверено: снятие метрики на неделю и её обратное возвращение никак не повлияло на мусорный трафик. Все боты остались на месте.

2. Показывать метрику только пользователям с поиска

Если вы не продвигаетесь в социальных сетях, а оттуда идёт много ботов, то есть смысл фильтровать такой трафик вообще. Да, есть вероятность, что вы зацепите этим самым действительно настоящих пользователей, которые наткнуться на ссылку в социальных сетях, но если в обычном режиме их было немного, то лучше это дело зафильтровать. Тоже самое касается и прямых заходов.

Много ли человек набирают ваш сайт вручную или с перешел из закладок браузера? Заходят на него не с поиска. Если много, то не стоит этого делать. Если единицы, то стоит — таким фильтром вы срежете огромное количество ботов. Через метрику («Настройка -> Фильтры») вы не сможете этого сделать — таких фильтров нет. Единственный вариант срезать их — через Cloudflare JS Challenge (об этом ниже)

Единственное, что можно сделать через метрику это сделать так, чтобы боты не учитывались в самой метрике (настроить фильтр по IP), но от самих заходов на сайт это не избавит

НО! Возможно, в этом нет никакого смысла, так как сам Яндекс при этом утверждает, что

«Дополнительно обращаем Ваше внимание, Метрика только отображает статистику посещаемости Вашего сайта и не влияет на ранжирование, поскольку статистические данные не передаются в поиск Яндекса.»

3. Бан по IP-адресам / подсетям

В признаках мы писали, что боты идут, в основном, с одних и тех же диапазонов IP мобильных операторов Megafon, MTS, Tele2, BeeLine. Банить по IP не только муторно, но и опасно. Чтобы хоть как-то сэкономить вам время мы собрали большой список IP и подсетей, которые были уличены в накрутке. Так как список огромный, даже для публикации под спойлером, мы скомпоновали их все в txt-вариантах. Скачать можно с нашего Яндекс.Диска

Повторяем! Это Опасно!

Так как боты прячутся под мобильными прокси (по сути — модем, который перезагружаются по таймауту и получает новый динамический (!) IP-адрес), то вполне возможно, что заблокированные айпишники вскоре достанутся реальным пользователям, не говоря уж о блокировки целых пулов. С блокировкой нужно быть предельно аккуратным. Рекомендовать данный способ мы не можем. Только в самых крайних случаях.

Как это сделать? Самый простой способ — прописать нужные правила в файл .htaccess. Чтобы не заморачиваться с кодом, который нужно туда прописать, воспользуйтесь генератором — так будет проще и быстрее. Пример работы:

4. Отключение IPv6

Очень много ботов идёт с IP-адресом протокола IPv6 примерно такого вида 2a09:400:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx. Дело в том, что IPv6-адреса можно купить очень дешево и поэтому ботоводы их скупают более охотно, в то время как люди ими почти не пользуются. Таких ботов можно отсечь либо блокировкой, либо отключением в DNS.

Удаление всех AAAA-записей в NS

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

  • Если там прописаны сервера Сloudflare, то переходите к «Запрет на IPv6 через Сloudflare».
  • Если там прописаны DNS хостера, то читайте «Блокировка через панель управления хостинга».
  • Если там промежуточный вариант, то нужно зайти в в управление нужным доменом, найти IP привязанные к домену и отключить IPv6 (удалить все AAAA записи).

Например, в панели управления доменом на nic.ru у нас прописаны DNS сервиса freedns.afraid.org

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

Запрет на IPv6 через Сloudflare

В настройках сайта на Cloudflare настройка DNS вынесена в быстрые действия в правом верхнем углу

Далее смотрим на NS-записи. Если на АААА у вас стоит «DNS Only», то всё в порядке. Статус «DNS Only» означает, что запросы будут идти в обход Cloudflare. Если стоит статус «Proxied», для данной DNS-записи все запросы сначала будут проходить через Cloudflare.

Блокировка через панель управления хостинга

Если ваш хостер предоставляет панель управления сайтом Cpanel, то сделать можно следующим образом: зайдите в раздел «Безопасность» -> Блокировка IP. Добавить подсеть можно так 2a09:0400:0000:0000:0000:0000:0000:0000/32 или 2a09:400::/32.

На данный момент использование IPv6 пока не обязательно. Даже с учетом заканчивающихся свободных айпи-адресов в IPv4, операторы связи не торопятся выдавать адреса с шестого протокола (кстати, используя IPv6, поддержка IPv4 никуда не пропадает). Однако, есть мнение, что делать этого не стоит по двум причинам: это может неадекватно воспринять поисковые алгоритмы Google (каких-то подтверждений этому нет) и часть реальных пользователей вы всё равно отсечете, особенно, если сайт международный (в Европе уже достаточно активно используют). Но вы знаете, кто в России использует IP-протокол шестой версии? Вот и мы не знаем.

5. Блокировка/ фильтр по AS

На форумах проскакивает способ отсечения ботов из социальных сетей блокировкой целых автономных систем (AS) с которых идут мусорные заходы.

Блокировка через .htaccess

Блокировка через htaccess ничем не отличается от блокировки IP. Как узнать какие IP содержат конкретные AS? Для этого есть специальный сервис ASN-blocklist. Введите номер автономной системы и сервис выдает вам пул адресов, которые закреплены за ней. Точнее, он сразу выдает вам код, который нужно прописать в .htaccess

Метод крайне обременительный по времени, если у вас есть Cloudflare, то лучше делать через него

Фильтр через Cloudflare

Фильтр по ASN делается в разделе «Firewall» из аккаунта. Конкретно заходим в Firewall Rules

В бесплатной версии можно настраивать всего 5 правил, но нам нужно добавить только одно:

(ip.geoip.asnum in {21453 50241 35807 15640 42116 41344 47395 3216 42437 48190 41330 39655 15378 12714 41733 29497 16345 25159 8359 31213 31133 12958 12389 201123 31224 48092 56407 6697 31163 47524 34411 64432 43761}).

Таким правилом мы не отсекаем этот трафик, а будем показывать ему капчу (JS Challenge). Полный список ASN под спойлером

Какие AS блокировать

AS21453

AS50241

AS35807

AS15640

AS42116

AS41344

AS47395

AS3216

AS42437

AS48190

AS41330

AS39655

AS15378

AS12714

AS41733

AS29497

AS16345

AS25159

AS8359

AS31213

AS31133

AS12958

AS12389

AS201123

AS31224

AS48092

AS56407

AS6697

AS31163

AS47524

AS34411

AS64432

AS43761

6. Дополнительная настройка CloudFlare Firewall

Сразу срываем покровы для тех, кто использует Cloudflare — режим I’am Under Attack вам не поможет, хотя это действительно первое, что приходит в голову (Bot Fight Mode тоже). Но это не работает, не пытайтесь — проверено неоднократно. Всё-таки клаудфайр это больше AntiDDoS-сервис, поэтому на человекообразную накрутку поведенческих он не реагирует. Но в Cloudflare есть настройки, которыми можно блокировать прямые заходы с помощью определенных правил в файрволле (Firewall — Firewall rules — Create a Firewall rules)

Фильтр трафика с социальных сетей по рефереру

Чтобы отфильтровать трафик с социальных сетей необходимо добавить следующее правило:

Напоминаем, что данный трафик НЕ блокируется, просто Cloudflare будет показывать им капчу

Обрубаем доступ «плохим» ботам

Первым делом нужно включить в настройках редирект с HTTP на HTTPS, если конечно на сайте есть на сайте SSL-сертификат. Включить данную переадресацию можно в секции SSL/TLS в категории Edge Certificates. Свайпаем настройку Always Use HTTPS в положение ON

Далее подпускаем к сайту только белых ботов (их список тут) в файрволле (если кто забыл — делается здесь Firewall — Firewall rules — Create a Firewall rules). В качестве действия оставляем Allow. Правило выглядит так:

Если кто-то ломится по HTTP, то даём ему 5-секундную задержку (на всякий случай). Правило:

Обратите внимание, что в Action у нас стоит JS Challenge — это загрузочная страница с тремя анимированными точками в течение 5 секунд

Финальным аккордом запрещаем переход на сайт пользователям с протоколами HTTP/1.0 и HTTP/1.1 (их используют 99,5% ботов и 0,5% людей, так что микроскопическую часть реальных людей вы отсечете)

7. Использовать сервис BotFAQtor

В сети уже есть несколько антифрод-решений по отводу ботов с вашего сайта. Один из них — BotFAQtor. Плюсом является быстрая установка — если у вас WordPress, то можно использовать плагин, который работает «из коробки».

В комплекте идёт защита от скликивания рекламных объявлений и укорачиватель URL. Работает сервис по принципу редиректа на свою платформу при каждом http-запросе к сайту. BotFAQtor анализирует пациента на его «человечность» и только после этого даёт добро на переход к сайту. Судя по отзывам, работает он не очень эффективно и срезает буквально десятки ботов из тысячи, но у сервиса есть тестовый период — можете попробовать сами, вполне возможно, что вам он поможет

8. Использовать сервис Antibot.cloud

А вот на этом сервисе остановимся поподробнее, так как он очень помог некоторым пользователям и на данный момент, пожалуй, лучшее «лекарство» от наплыва ботов (но, как мы помним, полной защиты не существует). Есть две версии Анти-бота — локальная (бесплатная) и облачная (платная — 25$). Мы будем рассматривать облачную, т.к. локальная имеет ряд ограничений. После регистрации предоставляется бесплатный тестовый 10-дневный период. Всё, что описано ниже, можно так же найти на официальном сайте сервиса.

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

Требования к технической части

Программные требования: PHP 5.5-7.4 с обязательными расширениями: SQLite3 и Mbstring, а также желательно расширения: ZIP и Memcached.

Установка

Для начала тебе нужно закинуть распакованный архив (папку) в корень сайта. Проще всего сделать это через FTP-клиент. Внутри папки устанавливаем на папку data права на запись:

Если у вас WordPress, то необходимо добавить строчку

require_once($_SERVER['DOCUMENT_ROOT'].'/antibot/code/include.php');

в файл wp-config (если у вас не WP, то в любой другой php-скрипт, который выполняется на сайте). Обратите внимание, что на главной странице Антибота указано — есть проблемы с некоторыми кэширующими плагинами WP. Имейте это ввиду перед установкой.

Настройка, редактирование конфига

Для настройки требуется отредактировать конфиг (/antibot/data/conf.php). Данные, которые обязательно нужно поменять у вас будут указаны в личном кабинете.

Полное описание конфига с подробным объяснением настроек можно посмотреть здесь — https://antibot.cloud/static/conf_ru.txt

Почему статистика пустая?

Если спустя время раздел статистики у вас до сих пор пустой, а точнее вы видите «До следующего обновления статистики осталось: -[большое число] сек.», то значит на вашем сервере не установлен/настроен модуль Memcached

Как зафильтровать только прямые заходы?

Чтобы настроить бот только на фильтр прямых заходов нужно поменять строчку, которую вы добавляли в файл wp-config перед установкой (если у вас WP). Вместо строки

require_once($_SERVER['DOCUMENT_ROOT'].'/antibot/code/include.php');

нужно прописать

if (@trim($_SERVER['HTTP_REFERER']) == '') {
require_once($_SERVER['DOCUMENT_ROOT'].'/antibot/code/include.php');
}

Дизайн заглушки

По умолчанию заглушка выглядит как стандартный JS Challenge у Cloudflare

Если вы хотите изменить её дизайн, то достаточно изменить файл tpl.txt (есть некоторые условия — прочитайте здесь)

Метрика показывает все переходы как внутренние

Если после установки антибота метрика стала показывать заходы на сайт как внутренний переход (без указания поисковой системы), то нужно включить utm-метки. Исправьте конфиг в строке $ab_config[‘utm_referrer’] = 0 на 1. В таком случае в метрике будут верно отображаться рефереры.

Настройка Cloudflare (отключение IPv6 и настройка файрволла)

Через антибота можно отключить IPv6 в Cloudflare. Для этого зайдите на страницу https://cloudflare.mikfoxi.com/ и заполните данные (понадобится Api key). Кстати, тут же можно включить и правила, которые мы описывали в пункте 6. Дополнительная настройка CloudFlare Firewall

Что за ошибка 071?

Вас забанил сервис за излишнюю активность. Видимо, вы пытались проверять работу антибота излишне усердно. Бан снимается примерно через сутки (бан именно вашего IP, а не сайта)

Минусы Анитбота

  1. Сервисные боты гугла (не поисковой!) не смогут достучаться до сайта. Например, Google Page Speed всегда будет показывать всего 100%, так как будет оценивать скорость загрузки заглушки. Добавление в белый список не помогает
  2. У некоторых пользователей прилетает бан аккаунта в Google Ads (ex-Adwords). Иногда помогает повторная модерация. Это, кстати, указано на странице автора- «При рекламе сайта в Google AdWords могут возникнуть проблемы, объявление не проходит модерацию».
  3. Часть ботов всё равно будет просачиваться через защиту, но их количество, по сравнению с заблокированными, ничтожно мало
  4. Имеются какие-то проблемы с установкой на CMS Битрикс
  5. На данный момент антибот не защищает турбо-страницы (они грузятся с сервера Яндекса)

Куда писать? Кому жаловаться?

Если вы хотите предать свою проблему огласке, то есть несколько вариантов:

Написать в чат Яндекс.Метрики (https://t.me/yandexmetrika). Мы пробовали, ответа не получили, люди в чате не обсуждают данную проблему, отвечая, в основном, на вопросы по тонкой настройке. Но может вам повезет больше.

Написать в тему на Searchengines (https://searchengines.guru/ru/forum/1029854). На самом известном форуме оптимизаторов ветка про ботов набрала уже более 300 страниц. Пока однозначного решения нет, но некоторые советы, которые в том числе, легли в основу этой статьи, там можно почерпнуть

Написать Платону (https://yandex.ru/support/metrica/troubleshooting.html). Как и в большинстве других случаев, даже не связанных с ботами, писать в техподдержку Яндекса практически бесполезно. Конкретно на проблемы с ботами отписки стандартные, в духе «Всё путём, работайте над сайтом дальше». Цитаты из ответа:

«Никаких ограничений к вам не применяется. Если мы увидим подозрительную активность учитывать ее не будем»

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

«Если ваш сайт продвигается в интересах пользователей, не используя каких-либо техник, направленных на обман поисковых систем, то вам не о чем волноваться, так как при разработке наших алгоритмов мы, конечно же, учитывали возможность злоумышленников повлиять на позиции того или иного сайта и минимизировали ее.
Также хочу вас заверить, что мы знаем о разных типах поведения злоумышленников, вам нет необходимости предпринимать дополнительные действия по защите сайта.»

Но чем больше будет подобных обращений, тем быстрее Яндекс обратит свое внимание на эту проблему.