Боты на сайте - что я сделал, чтобы от них защититься

Сайт атаковали боты: что я сделал, чтобы от них защититься

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

Как понять, что на сайт пришли боты

Отследить атаку ботов можно с помощью систем веб-аналитики и косвенных показателей. В качестве системы аналитики я использую Google Analytics. Она, кстати, сама начинает бить тревогу, если на сайте вдруг резко изменяются показатели (см. изображение ниже).

1. Резкий скачок посещаемости

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

С одной стороны может показаться, мол, вау, круто! Это успех. Это триумф. Это признание! Но… Нет. Это нагрузка на сервер и пустой трафик, который не несет вообще никакой пользы. Только вред. Потому что боты не заказывают услуги, не покупают обучение, не подписываются на Telegram-канал, а только портят статистику.

2. Просадка поведенческих факторов

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

Главная опасность ботов состоит в том, что поисковые системы видят, мол, раньше пользователи на сайте проводили под 1,5-2 минуты, а стали — меньше 30 секунд. Значит, сайт стал людям неинтересен и не соответствует их потребностям (интенту). Как итог, есть высокий риск, что поисковые системы понизят сайт в результатах выдачи. А поскольку боты часто идет на самые раскрученные и популярные страницы с высокой конкуренцией, то…

3. Трафик из необычных регионов

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

И если с трафиком из РФ еще предстояло разбираться, т.к. там очевидно, что идет смесь ботов и реальных людей, то с пользователями из Таиланда все сразу было предельно ясно. Среднее время сессии у них ниже 15 секунд, т.е. ниже порога отказов, поэтому от такого трафика нужно срочно избавляться, чтобы не пострадал сайт. Кстати, если термины у Вас вызывают затруднения, то у меня на сайте есть очень простой и удобный словарик со всей специальной лексикой.

4. Перекос по каналам трафика

Наконец, еще один признак — это необычные тенденции по каналам. Так, у меня резко выросли прямые заходы (direct) и переходы с других сайтов (referral). При этом установить, с какого сайта переходы, было невозможно. Нет данных. Это тоже явный признак ботов.

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

Что делать с ботами

Существуют разные способы борьбы. Я, как человек откровенно ленивый, выбрал, пожалуй, самый простой и быстрый. Но главное — бесплатный — сервис Cloudflare. Не реклама, т.к. аналогов как таковых с похожей базой и инфраструктурой не нашел, да и искать не особо хотелось, если честно. И вообще, мне его брат посоветовал.

Принцип работы Cloudflare

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

То есть ключевой момент здесь — это пропустить на сайт нормальных пользователей и хороших поисковых ботов от Google и других поисковых систем и одновременно отсечь всех, кто хочет нашему сайту навредить.

Установка Cloudflare

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

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

Примечательно, что даже когда трафик пошел через сервера Cloudflare, у меня не только ничего не изменилось, но даже наоборот — количество ботов только выросло. На рисунке ниже показан день, когда весь трафик пошел через новые сервера.

Изначально я думал, что сервису просто нужно время, чтобы «присмотреться» к сайту и отсечь всех ботов. Но. Увы и ах. Это так не работает. И после установки сервис нужно еще настроить. Вручную. Самому. Но тогда я этого еще не знал.

Я решил подождать несколько дней, но так ничего и не изменилось. Тогда я решился на крайние меры: поставил самый строгий режим работы, который так и называется «Помогите! Меня атакуют!». Правда, подобные экзерсисы добавили больше дискомфорта обычным и добропорядочным пользователям, а также заблокировали доступ всем полезным ботам. На скриншоте выше Вы можете видеть небольшой провал чуть правее середины. Это результат внедрения такого режима. В общем, пришлось изучать тему настроек.

Настройка Cloudflare

В Cloudflare можно задавать правила: кого пропускать, кого блокировать, а кому устраивать испытания. Испытание (Managed Challenge) — это проверка на реальность браузера и человечность пользователя (если так можно выразиться). Визуально для человека выглядит как просто поставить галочку, но на деле там проверка комплексная и сложная. 90% роботов такую проверку не проходят.

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

Правила в Cloudflare

Кстати, для решения задачи я мог бы обойтись и тремя правилами, но сделал четыре. Для удобства и дополнительной статистики. Сами правила задаются во вкладке WAF (Web Application Firewall) в разделе Security.

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

Также я добавил номера ботов подсетей своего хостера, которые обслуживают сайт. Найти их можно в соседней вкладке Events. Это журнал, в который записывается вся активность. Например, вот как выглядит в журнале визит бота моего хостера. Он нужен, чтобы выполнять запланированные задания на блоге.

По умолчанию Cloudflare не знает этого бота и воспринимает его как вредного. Поэтому я добавляю всю подсеть хостера в доверенные. Такая подсеть еще обозначается тремя буквами — ASN, что означает специальный номер. Например, у Спринтхоста один из номеров — 35278, его я добавляю в доверенные и задаю правило, чтобы если приходит известный робот или робот с таким номером, их просто пропускали на сайт без дополнительных проверок (директива Skip).

Второй доверенный номер — это номер ботов Google, который у меня почему-то тоже изначально блокировался.

С помощью журнала я точно так же вычислил подсети, которые создавали тысячи запросов к сайту и заблокировал их, вместе с трафиком из отдельных стран (Таиланд, Сейшелы).

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

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

Проверка версии протоколов

Также я ввел проверку для всех, кто приходит на сайт по новому протоколу IPv6. Большинство из таких посетителей роботы. Кстати, это также один из признаков ботосети. Если все заходы с таким протоколом — значит 99%, что это ботнет. На картинке ниже вы можете видеть разницу. Единичкой отмечен адрес протокола IPv6, а двоечкой — привычный нам адрес IPv4.

Еще в интернете рекомендуют отсекать или как минимум проверять всех посетителей, которые приходят по протоколу HTTP версии ниже 2. Я это, конечно, тоже сделал, однако по моим наблюдениям, большинство ботов приходили по более поздним версиям, поэтому ввел правило больше номинально. Кстати, на картинке ниже Вы можете наглядно видеть, как можно комбинировать условия в рамках одного правила. По сути, если мы хотим, чтобы разные условия действовали независимо друг от друга, то ставим между ними оператор ИЛИ (OR).

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

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

Результаты

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

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

Для этого я постоянно провожу новые эксперименты, чтобы если какие-то боты и проcкакивали, то вовремя их отсекать. Видимо, мне придется еще какое-то время использовать защиту, потому что количество атак от ботов после установки Cloudflare не только не уменьшилось, но, наоборот, увеличилось. На скриншоте ниже Вы можете увидеть, что только с одного ботнета приходят тысячи роботов. Кстати, на начальном этапе приходили только сотни.

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

Надеюсь, Ваши сайты с таким не столкнутся, но если вдруг, то можете использовать эту методику. У меня она показала весьма неплохой результат. Более того, снижение нагрузки и дополнительное кэширование от Cloudflare сделали сайт еще быстрее.

Скорость работы сайта с Cloudflare.
Скорость работы сайта с Cloudflare.

Если у Вас остались вопросы, задайте их в нашем чате в Telegram. И до встречи в новых статьях!

Искренне Ваш, Даниил Шардаков.


Дата публикации:

Автор:

Telegram канал Шардакова о копирайтинге

Обсуждение теперь в Telegram. Там и канал с полезностями, и чат. Много всего. Подпишитесь!

Свежие публикации в блоге