Защита сайта от ботов и накруток с помощью сервиса Cloudflare на бесплатном тарифе
К нам обратился заказчик с проблемой. На его сайт обычно заходит около 500 человек в день, но в один из дней он обнаружил необоснованно резкий рост посещений (график ниже).
В определённый момент количество посещений достигло почти 50 000 в день – примерно в 100 раз больше, чем в обычные дни.
Чтобы решить эту проблему, отсечь ботов и убрать накрутку мы использовали сервис Cloudflare. Причём для решения задачи нам хватило их бесплатного тарифа.
Кратко, принцип работы сервиса Cloudflare:
Cloudflare ведёт весь трафик через себя и отфильтровывает подозрительных посетителей по заранее установленным правилам-условиям, блокируя их, или заставляя проходить проверку.
При этом большая часть обычных пользователей этого не замечают. Для них сайт открывается как обычно.
И только небольшая часть пользователей (3-10%) пару секунд видят экран “Проверки” от сервиса, а далее сайт открывается как обычно.
Ниже пошагово рассмотрим процесс настройки сервиса.
И сразу спойлер. После подключения сайта к Cloudflare и добавления правил фильтрации количество заходов в течение нескольких дней вернулось в норму (графики ниже).

В итоге общая картина посещений сайта выглядит следующим образом:

Как добавить сайт в сервис Cloudflare
- Переходим в панель Cloudflare по адресу https://dash.cloudflare.com/login и регистрируемся любым удобным способом
- После успешной регистрации откроется панель управления сервисом. Необходимо в левом меню перейти во вкладку “websites” и в правой части экрана нажать кнопку “add a site” (добавить сайт)

- В появившемся окне необходимо ввести название сайта и нажать кнопку “Add site”

- На следующем шаге необходимо выбрать подходящий тариф. Существует бесплатный вариант – он позволяет настроить базовую защиту сайта и является вполне достаточным для большинства задач. После выбора тарифа следует нажать кнопку “Continue” (продолжить)

- Далее Cloudflare определит текущие DNS записи домена и выведет их в виде таблицы. Это просто уведомление.
На данном шаге можно просто нажать кнопку “Continue”

- На следующем шаге сервис предложит заменить существующие ns-адреса домена на ns-адреса Cloudflare

Это необходимо, чтобы реализовать фильтрацию трафика — сначала он будет попадать на сервера cloudflare, там проверяться и фильтроваться, и лишь затем отправляться на тот сервер, где непосредственно лежит сайт.
Следует скопировать предлагаемые ns-адреса, и заменить существующие записи вашего домена на них.

Замена ns-записей происходит в панели регистратора домена — то есть на том сайте, или на том хостинге, где вы покупали домен для сайта. При регистрации у каждого домена есть некоторое количество “записей” — они отвечают за работу сайта и позволяют ему определить, с какого хостинга брать данные для открытия сайта.
Например, чтобы обновить записи на reg.ru необходимо кликнуть на имя аккаунта, перейти в раздел “Мои домены и услуги”.

Затем перейти в пункт меню “домены”, нажать кнопку с тремя точками в правой части строки и выбрать пункт “DNS-сервера и управление зоной”.

Нажать кнопку “изменить” и в появившемся окне вписать нужные значения.


После сохранения изменений необходимо дождаться, когда они применятся, обратите внимания на важный момент: NS-адреса могут обновляться до 72 часов. Обычно это происходит быстрее (в пределах 6-12 часов), но максимальный срок именно такой.
Пока адреса не обновились в панели Cloudflare рядом с сайтом будет отображаться иконка ожидания.

После успешного обновления около названия сайта появится галочка.

Как только появится галочка это будет означать, что сайт успешно добавлен в сервис и можно переходить непосредственно к настройке правил фильтрации.
Настройка правил фильтрации Cloudflare
У сервиса есть несколько сценариев работы со входящим трафиком: его можно полностью заблокировать, пропустить без проверки, или обязать пройти тест на робота.
В рамках бесплатной версии можно написать до 5 правил фильтрации. В общем случае нам потребуется 3-4 правила, а именно:
Правило 1. Прописываем условия беспрепятственного доступа на сайт для проверенных, “хороших” ботов (например ботов поисковых систем, Яндекс.Метрики и т.д.)
Правило 2. Проверяем всех тех, кто пытается попасть на сайт через http (намеренно вводя адрес сайта без безопасного соединения) или через IPV6 (пытаются попасть на сайт через его ip-адрес)
Правило 3. Проверяем прямые заходы и обращения с протоколом ниже HTTP/2 (специфичные заходы, чаще всего являются ботами)
Правило 4. Опциональное. Блокируем трафик из конкретных стран, или открываем трафик только для конкретных стран.
Правила записываются в разделе “Security” — “WAF”
Для того, чтобы перейти в этот раздел необходимо в панели cloudflare нажать на имя сайта, перейти в левом меню в нужный раздел и нажать кнопку “Create Rule” (создать правило)

Правило 1: Открываем доступ хорошим ботам
В верхней части экрана пишем название правила (произвольное, но понятное и однозначное для нас)

Далее прописываем условия:
Сначала просто пропускаем всех ботов, которые являются известными для Cloudflare (Для этого в записи Known Bots ставим зелёную галочку, как на скриншоте ниже)
Это хорошие боты, например, боты поисковых систем Google и Яндекс. Обязательно устанавливаем эту настройку, чтобы не мешать поисковикам индексировать сайт.
Во второй части правила мы добавляем конкретного бота Mail.ru — он является проверенным и безопасным, но не входит в белый список Cloudflare.
Важно поставить настройки, как на скриншоте ниже.
Обратите внимание, что между двумя частями правила стоит “Or”, что значит “Или”.
Т.е. для выполнения правила, нужно чтобы сработало хотя бы одно из двух условий.
Проще говоря, если Cloudflare знает этого бота или если это бот Mail.Ru, то пропускаем его на сайт без проверок.

Сразу под правилами автоматически появится надпись Expression Preview — это просто оформленные в виде кода выбранные нами выше условия, в этой строчке ничего менять не нужно.
И ниже мы выбираем что делать с теми заходами, которые попадают под данные условия: в данном случае мы их просто пропускаем (skip), не подвергая никаким проверкам, и галочками отмечаем все возможные проверки, которые эти боты проходить не будут.
Проще говоря, проверенных ботов Яндекса Google и т.п. мы просто пропускаем на сайт и не мешаем им работать 🙂
После написания каждого правила необходимо нажать “Save” (сохранить).

Правило 2: Проверяем всех тех, кто пытается попасть на сайт через http или через IPV6
В данном правиле условие будет выглядеть следующим образом:

То есть мы предлагаем пройти проверку всем сомнительным заходам, которые пытаются попасть на сайт по IP (первая строчка правила) или же не используют https.
Правило 3: Проверяем прямые заходы и обращения с протоколом ниже HTTP/2
Данное правило чуть более жёсткое чем предыдущее, и направлено на случаи, которые с большой вероятностью являются нежелательными для сайта.

Правило 4: Открываем доступ только конкретным странам
В данном правиле мы блокируем весь трафик, который попадает из неинтересных нам стран.
Например, у нас сайт на русском языке и в другие страны мы продавать не планируем.
А большая часть спамного трафика как раз идёт из-за границы. Тогда мы можем его безболезненно заблокировать.
Например, для нашего сайта, нам интересны посетители только из России, Казахстана, Белоруссии и Черногории (Montenegro). Поэтому всех остальных мы смело блокируем.
Нам необходимо использовать оператор AND (“и”) между правилами, так как мы блокируем всех, у кого страна НЕ Россия, и одновременно НЕ Казахстан и одновременно НЕ Беларусь и т.д.
Добавлятся страны через поле Country (“страна”) does not equal (“не равна”) Russian Federaion (“РФ”).

Порядок срабатывания правил, работа с поддоменами и SSL
После успешного добавления всех правил они появятся в списке в разделе “security” — “waf”

Чем выше правило — тем раньше оно срабатывает. Чтобы переместить правило выше-ниже можно использовать стрелки в левой части строки.
Если правило написано корректно, то уже через 15-20 минут справа от него появится график, на котором будет видно, что какую-то часть трафика это правило уже обработало.
В нашем примере есть правило, которое за время работы заблокировало 321 000 заходов. И из этого количества лишь 0.18% (то есть менее одного процента) были посетители, которые смогли пройти проверку и дальше перейти на сайт.

При работе Cloudflare с поддоменами может возникать ситуация, когда они перестают открываться. Или основной домен начинает некорректно отображаться из-за проблем с SSL-сертификатом.
В подобных случаях рекомендуется перейти в раздел “SSL/TLS” -> “Overview” и включить настройку SSL-сертификата Full (strict), как выбрано на картинке ниже.

А как всё вернуть, если что-то пошло не так?
Если вдруг настройка прошла некорректно, или возникли любые проблемы, которые требуют возвращения сайта к исходному состоянию, можно сделать следующее:
- Отключить все правила, просто убрав галочку активности в списке правил

- Вернуть обратно ns-записи на стороне регистратора, которые меняли на одном из первых шагов — это позволит полностью исключить Cloudflare из работы с сайтом. Обратите внимание, что в этом случае смена ns-записей также займет до 72 часов.
Успехов в победе над ботами!
Источники
- Интервью Артёма Акулова Михаилу Шакину — https://www.youtube.com/watch?v=wmu6LNOg-Sc
- Статья Ивана Зимина о настройках CloudFlare — https://vc.ru/seo/477451-nastraivaem-cloudflare-dlya-filtracii-botov
- Документация CloudFlare для разработчиков — https://developers.cloudflare.com/
- Статья «Cloudflare: what is it? And what can you do with it?» — https://www.hipex.io/en/cloudflare/
- Статья «The Definitive Guide For Cloudflare Free And Page Rules» — https://technoogies.com/the-definitive-guide-for-cloudflare-free-and-page-rules/
Как в Cloudflare оставить доступ только из одной страны и исключить блокировку GoogleBot?

Здравствуйте! На сайт идет ddos атака, бОльшая часть ботов из других стран. В Cloudflare я прописал в Firewall rules правило блокировки всех стран, кроме РФ, а также попытался исключить из блокировки бота гугла.
Решает ли мою задачу это правило? Как мне его переписать, чтобы блокировать все страны, кроме России, но при этом оставить доступ к сайту для известных ботов (known bots)?
- Вопрос задан более года назад
- 361 просмотр
Как заблокировать ботов с помощью Cloudflare Firewall

Мануал
Автор cryptoparty На чтение 3 мин Опубликовано 27.06.2019
Получаете много запросов от сканеров и ботов, что не повышает ценность вашего бизнеса?
Тысячи сканеров / ботов посещают ваш сайт каждый день, и очень немногие полезны.
Некоторые из них считаются плохими ботами или спамом.
Откуда узнать, что боты посещают ваши сайты?
На это нет простого ответа.
Чтобы выяснить это, вам нужно просмотреть файл access.log вашего веб-сервера и найти столбец User-Agent.
Допустим, вы хотите перечислить всех ботов, кроме робота Google, для этого вы можете выполнить следующую команду на своем веб-сервере, где находится файл access.log.
grep bot access.log |grep -v Googlebot
Вы удивлены, увидев так много записей?
Я тоже, когда я проверил свои журналы.
root@gf-prod:nginx# grep bot access.log |grep -v Googlebot | wc -l 616834 root@gf-prod:nginx#
Прежде чем что-то блокировать, вам необходимо просмотреть их, чтобы убедиться, что вы не блокируете то, что может потребоваться для вашего бизнеса.
И есть много способов сделать это.
Причина проста – зачем позволять запросам попадать на веб-сервер, когда они вам вообще не нужны.
Как указано в заголовке статьи, давайте узнаем, как блокировать ненужных ботов с помощью брандмауэра Cloudflare.
Примечание: если вы управляете крупным бизнесом, вас может заинтересовать служба управления ботами Cloudflare.
- Войти в Cloudflare
- Перейдите на вкладку Firewall, а затем firewall rules и создайте правило брандмауэра.

- Введите название правила
- Выберите поле как User Agent, оператор contains и Value в качестве имени бота, которого вы хотите заблокировать
- Используйте условие or для добавления нескольких ботов в одно правило.

Примечание: боты, упомянутые на изображении выше, только для иллюстрации. Совсем не обязательно, что это плохие боты.
- а затем выберите действие как Block
- Если вы знаете выражение, то вы также можете написать его, щелкнув по редактированию вместо того, чтобы делать это через GUI. После развертывания вы должны увидеть вновь созданное правило в списке, и статус должен быть On.

Легко, не правда ли?
Что еще можно сделать с правилами брандмауэра?
Ну, намного больше для улучшения безопасности.
Давайте посмотрим на следующие условия блокировки.
- Если запрос приходит от определенного ASN, IP-адрес
- Соответствующие cookie, рефереры, ключевые слова X-Forwarded-for
- Ограничить обслуживание запросов всей страны
- Отключить нежелательный метод HTTP, такой как PUT, DELETE, OPTIONS, PURGE и т. д.
Все это вы можете сделать либо через GUI или написать свое выражение.
Применение изменений происходит практически мгновенно.
Заключение
Правила межсетевого экрана Cloudflare – отличный способ добавить защиту для ваших веб-приложений на границе сети без простоев.
Если это еще не так, вы также можете рассмотреть возможность использования Cloud WAF для повышения безопасности приложений и защиты от DDoS и других онлайн-уязвимостей.
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий Отменить ответ
Виктор 14.01.2020 в 14:15
Вопрос такой, как мне наоборот разрешить вход Google ‘ Bota, если я заблокировал все ip из страны United Stated как сделать исключение правилом для Google BOT? Так как меня DDOS-сят.
cryptoparty автор 14.01.2020 в 14:23
Виктор 14.01.2020 в 14:54
Да я это уже нашел. Но Вы мне не подскажите как мне создать правило конкретно под cloudflare?
Дело в том что я не совсем понимаю в значениях firewall и смог только настроить блокировку по определенным странам. Дальше у меня не выходит разобраться чтобы не блокировались поисковые роботы из стран которые я заблокировал. Как сделать исключение.
cryptoparty автор 14.01.2020 в 15:02
Виктор 14.01.2020 в 15:21
Честно говоря не знаю как Вас зовут. Но я с радостью пожал бы вам руку в знак уважения. Не много встретишь таких людей которые отвечают почти сразу же, а самое главное по теме. За последние несколько лет ответ из блогов мне вообще не приходил потому что их все забросили.
cryptoparty автор 14.01.2020 в 15:29
Приятно слышать, надеюсь вы найдете решение
Виктор 14.01.2020 в 15:30
Видно что у вас ресурс занимается делом а не штаны просиживают как на многих других сайтах. Спасибо вам еще раз) Если прошлый комментарий не дошел, то я вам выразил благодарностей пачку целую!!
Александр 06.10.2020 в 15:02
А есть где-нибудь список ботов, которых точно нужно блокировать в cloudflare? Очень бы приголидся)
cryptoparty автор 06.10.2020 в 15:08
можно заблокировать все, за исключением “хороших”
Роман 24.06.2021 в 09:38
Здесь есть список, но все равно нужно мониторить. Кстати, в статье очень подробно всё описано и разжевано.
Роман 24.06.2021 в 09:39
Забыл ссылку дать: https://zahek.livejournal.com/455.html
БлагоЯр Тишина 14.10.2021 в 20:31

Поддержать нас
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (110)
- Книги (27)
- Мануал (2 368)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (833)
- Обход запретов (34)
- Опросы (3)
- Скрипты (117)
- Статьи (361)
- Философия (127)
- Юмор (19)
Наш Telegram

Социальные сети
Поделиться
Anything in here will be replaced on browsers that support the canvas element
- Защита от сканеров портов на Linux 22.11.2023
1. Обзор В этом учебном пособии мы рассмотрим, как можно настроить наши Linux-системы, чтобы предотвратить определение сканерами портов типов служб и портов в нашей системе. Существуют различные способы защиты наших компьютеров от сканирования портов Nmap. Мы рассмотрим iptables и системы обнаружения вторжений (IDS). 2. Использование iptables В этом разделе мы создадим правила iptables для контроля […]
Существуют способы обнаружения скрытого или приватного содержимого, спрятанного на веб-сервере. Давайте посмотрим, как можно обнаружить это неуловимое содержимое Введение в обнаружение контента Что такое обнаружение контента? Обнаружение контента – это поиск контента, недоступного обычному пользователю, контента, к которому разработчики сайта не предполагали предоставлять вам доступ. Это могут быть видеоролики, изображения, функции сайта, доступные только администраторам, […]
Фильтрация по MAC-адресу в Wireshark очень полезна, так можно показать все сетевые пакеты от определенного устройства. Ниже показан простой фильтр. И вот еще один пример. с Очень полезный прием Wireshark. Фильтр по IP-адресу Еще один прием – фильтрация по определенному IP-адресу, вот как это сделать. Для фильтрации по IP-адресу источника используйте этот фильтр. Фильтрация TCP-пакетов […]
Как сделать терминал как в фильмах про хакеров? Используйте эту полезную утилиту для создания красивого UNIX-терминала в стиле хакера, используя командную строку Linux. Утилита Hollywood создаст набор красивых программ, запускаемых в терминале, чтобы он выглядел как типичный голливудский образ UNIX-терминала в подвале хакера. Это позволит вызвать различные полезные программы для создания красивого анимированного терминала. Ниже […]
Команда chmod используется для назначения прав на файлы и каталоги в системе Linux. Chmod может принимать различные синтаксисы, такие как символьный режим и абсолютный режим, поэтому при изучении различных способов использования chmod может возникнуть некоторое замешательство. Когда речь идет о предоставлении пользователю прав на выполнение, часто используются опции u+x и +x из-за их простого и […]
Фильтруем ботов, краулеров и прочий мусор с помощью CloudFlare
Иван Зимин на своем YouTube-канале показал, как настраивать сервис CloudFlare для борьбы с мусорным трафиком продвигаемого сайта. Ниже представлено содержание статьи с кодами для создания соответствующего правила и действием, которое необходимо выбрать для него в CloudFlare.

Содержание статьи
- Что такое боты и для чего их нужно фильтровать?
- Первичные настройки CloudFlare;
- Правило №1. Разрешение доступа для всех поисковых ботов, включая Mail.ru;
- Код: (cf.client.bot) or (http.user_agent contains «Mail.RU_Bot»);
- Действие: Allow;
- Правило №2. Фильтр для входа с IPV6 и NOTSSL;
- Код: (ip.src in ) or (not ssl);
- Действие: LEGACY CAPTCHA;
- Правило №3. Блокировка трафика из протокола HTTP1.1;
- Код: (not http.request.version in ) or (http.referer eq «»);
- Действие: Block или JS Challenge;
- Правила №4.1 и 4.2. Блокировка краулеров;
- Код: будет помещен в тексте статьи, поскольку большой длины;
- Действие: Block;
- Правило №5. Блокировка ненужных стран;
- Код: (ip.geoip.country ne «RU» and ip.geoip.country ne «BY» and ip.geoip.country ne «KZ»);
- Действие: Block;
- Заключение.
Что такое боты и для чего их нужно фильтровать?
В поисковой системе «Яндекс» сейчас очень активны боты, созданные для накрутки поведенческих факторов. Они работают в двух направлениях:
- Прогревают собственный профиль, эмулируя деятельность реального человека — собирают cookie-файлы. В дальнейшем такие профили используют для накрутки поведенческих факторов продвигаемого сайта;
- Скликивают сайт конкурента по важным для него поисковым запросам. Боты заходят на сайт из поиска и спустя 10-15 секунд выходят с него. В результате сайт получает пессимизацию «Яндекса» по данным ключам.
Поэтому необходимо фильтровать ботов различных сервисов краулинга, парсинга и анализа данных. К таким сервисам относятся: Ahrefs, Rushanalytics, Semrush, Screaming Frog SEO Spider и им подобные.
Помимо того, что сервисы оказывают негативное влияние своими ботами на ранжирование сайта, они еще и парсят важные аналитические данные. В открытый доступ попадает информация о посещаемости страниц, количестве просмотров и так далее. Очевидно, что от всех этихнеприятностей сайт нужнозащитить. Одним из действенных инструментов для этого является сервис CloudFlare.
Первичные настройки CloudFlare
Первое, что необходимо сделать после регистрации сайта в сервисе — это зайти в раздел «SSL/TLS», который находится в сайд-баре левой части дашборда. В нем нужно включить автоматический редирект с протокола HTTP на HTTPS.

Появится зеленая галочка в разделе «Always Use HTTPS».

Это нужно, чтобы под фильтры не попали люди, которые заходят по протоколу HTTP. Подробно об этом будет рассказано в Правиле №2.
Настройка фильтров
Фильтры находятся в разделе «Security» той же части дашборда, где и «SSL/TLS». Из него необходимо перейти в подраздел «WAF» (Web Application Firewall) и нажать «Create firewall rule».

При создании правил важно помнить об их приоритетности. Ранее созданные правила имеют приоритет перед более поздними. Например, первым правилом открывается доступ к сайту для ботов определенного типа. Во втором правиле, которое запрещает доступ к сайту, есть пересекающийся список с этими же ботами. Поскольку второе правило создано позднее первого, то для пересекающегося типа ботов сайт будет доступен.
Правило №1
Создание и активация данного правила разрешит доступ к сайту всех белых ботов. К ним относятся боты поисковых систем Google и «Яндекс». Поэтому первое правило можно назвать «Allow white bot». Тип правила нужно выбрать «Known bots», то есть для всех типов известных белых ботов будет выполняться выбранное далее действие.

Всего доступно 5 действий для применения к конкретному правилу:
- «Block» — блокировка;
- «JS Challenge» — пятисекундная проверка при заходе на сайт при помощи JS;
- «Allow» — разрешение;
- «Bypass» — пропустить, то есть никаких действий не требуется;
- «Legacy CAPTCHA» — выдача капчи.

В первом правиле, чтобы пропускать на сайт белых ботов, нужно выбирать действие «Allow». Важно учитывать один нюанс: CloudFlare не распознает ботов Mail.ru, как белых, поэтому их необходимо добавить отдельно. Для этого нажимаем кнопку «Or», которая находится в правой верхней части предыдущего скриншота. В раскрывшемся ниже списке нужно выбрать «User Agent».

В следующем раскрывающемся списке, который находится правее, доступны для выбора такие параметры:
- «Equals» — соответствие;
- «Does not equals» — несоответствие;
- «Contains» — содержит указанную далее строчку;
- «Does not contains» — не содержит указанную далее строчку.

В данном случае выбираем «содержит» и указываем User Agent «Mail.RU_Bot». Таким образом, все юзерагенты, имеющие строчку «Mail.RU_Bot», будут пропускаться на сайт.

Строку кода, которая находится на сером фоне в нижней части предыдущего скриншота, можно скопировать и сохранить. Ее можно вставить в поле, которое открывается нажатием кнопки «Edit expression» при создании нового правила. Таким образом новое правило создается автоматически, без необходимости проведения всех перечисленных выше действий вручную. Это будет удобно, если на продвижении находится несколько сайтов и на всех необходимо внедрить рассматриваемые в этой статье правила.
Нажатием кнопки «Deploy firewall rule» в правой нижней части дашборда правило сохраняется и уходит в работу.

Все добавленные и активные правила будут видны в подразделе «WAF» раздела «Security».

Правило №2
Данным правилом необходимо ввести проверку вхождений на сайт с использованием IPv6 или с помощью интернет-протокола HTTP вместо HTTPS. Создаем новое правило, которое называем «SSL / IPV6» и добавляем в «Edit expression» код, указанный в содержании статьи, к Правилу №2:
(ip.src in ) or (not ssl)
Затем необходимо нажать на кнопку «Use expression builder». Она выделена на скриншоте ниже.

В результате создается правило с такими параметрами:
- «Field» — соответствует выбранной маске («Value»);

- «SSL/HTTPS» — выключен.

Далее нужно выбрать действие. В данном случае это может быть либо проверка JS, либо ввод капчи (выделено на скриншоте ниже).

Иван порекомендовал использовать капчу, поскольку вероятность того, что через IPv6 зайдет реальный человек, очень мала. Как правило это боты, поэтому капча будет более надежной защитой для противодействия им. После того, как действие выбрано, правило нужно сохранить и запустить в работу, нажав на кнопку «Deploy firewall rule».
Правило №3
Это правило установит защиту от краулеров и парсеров. Чаще всего они работают через протокол HTTP1 или HTTP1.1. Все современные браузеры давно работают на протоколе HTTP2 и выше. Поэтому после блокировки HTTP1 и HTTP1.1 вероятность того, что на сайт не попадет реальный человек крайне мала.
Это правило можно назвать «HTTP2+», затем необходимо добавить его код:
(not http.request.version in ) or (http.referer eq «»)
В качестве действия можно выбрать либо блокировку, либо отправку на проверку JS. Второй вариант менее радикальный. Поэтому, если есть вероятность, что целевой трафик сайта может идти с протоколов HTTP1 или HTTP1.1, можно отдать предпочтение ему.
Указанным выше кодом в это правило подтянута блокировка прямых заходов на сайт. Выделено на следующем скриншоте.

Необходимость введения такого дополнения вызвана тем, что поведенческие боты при прогреве профилей делают очень много прямых заходов на сайт. Тем самым создается чрезмерная нагрузка на него.
Выглядит это следующим образом. На графике ниже красная шкала показывает количество прямых заходов на сайт. Как правило, их количество колеблется в диапазоне от 150 до 250 посещений в месяц. В определенные периоды количество прямых визитов увеличивается до 1 200–1 400 посещений в месяц. Также в этот период могут наблюдаться просадки поискового трафика из-за перегрузки сервера. Это видно на зелёном графике.

Правило №4.1
Данное правило необходимо для блокировки таких краулеров, как MegaIndex, а также поисковых систем, нехарактерных для рынка СНГ и европейских стран, например, Baidu и прочих. Назовем его BAD CRAWLER и добавим следующий код:
Нажать чтобы отобразить код
(http.user_agent contains "Abonti") or (http.user_agent contains "AspiegelBot") or (http.user_agent contains "aggregator") or (http.user_agent contains "AhrefsBot") or (http.user_agent contains "Aport") or (http.user_agent contains "asterias") or (http.user_agent contains "Baiduspider") or (http.user_agent contains "BDCbot") or (http.user_agent contains "bidswitchbot") or (http.user_agent contains "Birubot") or (http.user_agent contains "BLEXBot") or (http.user_agent contains "BUbiNG") or (http.user_agent contains "BuiltBotTough") or (http.user_agent contains "Bullseye") or (http.user_agent contains "BunnySlippers") or (http.user_agent contains "Butterfly") or (http.user_agent contains "ca-crawler") or (http.user_agent contains "CamontSpider") or (http.user_agent contains "CCBot") or (http.user_agent contains "Cegbfeieh") or (http.user_agent contains "CheeseBot") or (http.user_agent contains "CherryPicker") or (http.user_agent contains "coccoc") or (http.user_agent contains "CopyRightCheck") or (http.user_agent contains "cosmos") or (http.user_agent contains "crawler") or (http.user_agent contains "Crescent") or (http.user_agent contains "CyotekWebCopy/1.7") or (http.user_agent contains "CyotekHTTP/2.0") or (http.user_agent contains "DataForSeoBot") or (http.user_agent contains "DeuSu") or (http.user_agent contains "discobot") or (http.user_agent contains "DittoSpyder") or (http.user_agent contains "DnyzBot") or (http.user_agent contains "DomainCrawler") or (http.user_agent contains "DotBot") or (http.user_agent contains "Download Ninja") or (http.user_agent contains "EasouSpider") or (http.user_agent contains "EmailCollector") or (http.user_agent contains "EmailSiphon") or (http.user_agent contains "EmailWolf") or (http.user_agent contains "EroCrawler") or (http.user_agent contains "Exabot") or (http.user_agent contains "ExtractorPro") or (http.user_agent contains "Ezooms") or (http.user_agent contains "FairShare") or (http.user_agent contains "Fasterfox") or (http.user_agent contains "FeedBooster") or (http.user_agent contains "Foobot") or (http.user_agent contains "Genieo") or (http.user_agent contains "GetIntent Crawler") or (http.user_agent contains "Gigabot") or (http.user_agent contains "gold crawler") or (http.user_agent contains "GrapeshotCrawler") or (http.user_agent contains "grub-client") or (http.user_agent contains "Harvest") or (http.user_agent contains "hloader") or (http.user_agent contains "httplib") or (http.user_agent contains "HTTrack") or (http.user_agent contains "humanlinks") or (http.user_agent contains "HybridBot") or (http.user_agent contains "ia_archiver") or (http.user_agent contains "ieautodiscovery") or (http.user_agent contains "Incutio") or (http.user_agent contains "InfoNaviRobot") or (http.user_agent contains "InternetSeer") or (http.user_agent contains "IstellaBot") or (http.user_agent contains "Java") or (http.user_agent contains "Java/1.") or (http.user_agent contains "JamesBOT") or (http.user_agent contains "JennyBot") or (http.user_agent contains "JS-Kit") or (http.user_agent contains "k2spider") or (http.user_agent contains "Kenjin Spider") or (http.user_agent contains "Keyword Density/0.9") or (http.user_agent contains "kmSearchBot") or (http.user_agent contains "larbin") or (http.user_agent contains "LexiBot") or (http.user_agent contains "libWeb") or (http.user_agent contains "libwww") or (http.user_agent contains "Linguee") or (http.user_agent contains "LinkExchanger") or (http.user_agent contains "LinkextractorPro") or (http.user_agent contains "linko") or (http.user_agent contains "LinkScan/8.1a Unix") or (http.user_agent contains "LinkWalker") or (http.user_agent contains "LinkpadBot") or (http.user_agent contains "lmspider") or (http.user_agent contains "LNSpiderguy") or (http.user_agent contains "ltx71") or (http.user_agent contains "lwp-trivial") or (http.user_agent contains "lwp-trivial") or (http.user_agent contains "magpie") or (http.user_agent contains "Mata Hari") or (http.user_agent contains "MaxPointCrawler") or (http.user_agent contains "MegaIndex")
В результате создается правило с огромным количеством юзерагентов, которые будут подпадать под действие блокировки.

Правило №4.2
Количество правил внутри одного правила ограничено, поэтому все юзерагенты для блокировки краулеров не помещаются туда. В связи с этим необходимо создать еще одно правило под названием BAD CRAWLER-2 и поместить туда следующий код:
Нажать чтобы отобразить код
(http.user_agent contains "memoryBot") or (http.user_agent contains "Microsoft URL Control") or (http.user_agent contains "MIIxpc") or (http.user_agent contains "Mippin") or (http.user_agent contains "Missigua Locator") or (http.user_agent contains "Mister PiX") or (http.user_agent contains "MJ12bot") or (http.user_agent contains "MLBot") or (http.user_agent contains "moget") or (http.user_agent contains "MSIECrawler") or (http.user_agent contains "msnbot") or (http.user_agent contains "msnbot-media") or (http.user_agent contains "NetAnts") or (http.user_agent contains "NICErsPRO") or (http.user_agent contains "Niki-Bot") or (http.user_agent contains "NjuiceBot") or (http.user_agent contains "NPBot") or (http.user_agent contains "Nutch") or (http.user_agent contains "Offline Explorer") or (http.user_agent contains "OLEcrawler") or (http.user_agent contains "Openfind") or (http.user_agent contains "panscient.com") or (http.user_agent contains "PostRank") or (http.user_agent contains "ProPowerBot/2.14") or (http.user_agent contains "PetalBot") or (http.user_agent contains "ProWebWalker") or (http.user_agent contains "ptd-crawler") or (http.user_agent contains "Purebot") or (http.user_agent contains "PycURL") or (http.user_agent contains "python-rcontainsuests") or (http.user_agent contains "Python-urllib") or (http.user_agent contains "QueryN Metasearch") or (http.user_agent contains "RepoMonkey") or (http.user_agent contains "Riddler") or (http.user_agent contains "RMA") or (http.user_agent contains "Scrapy") or (http.user_agent contains "SemrushBot") or (http.user_agent contains "serf") or (http.user_agent contains "SeznamBot") or (http.user_agent contains "SISTRIX") or (http.user_agent contains "SiteBot") or (http.user_agent contains "sitecheck.Internetseer.com") or (http.user_agent contains "SiteSnagger") or (http.user_agent contains "Serpstat") or (http.user_agent contains "Slurp") or (http.user_agent contains "SnapPreviewBot") or (http.user_agent contains "Sogou") or (http.user_agent contains "Soup") or (http.user_agent contains "SpankBot") or (http.user_agent contains "spanner") or (http.user_agent contains "spbot") or (http.user_agent contains "Spinn3r") or (http.user_agent contains "SpyFu") or (http.user_agent contains "suggybot") or (http.user_agent contains "SurveyBot") or (http.user_agent contains "suzuran") or (http.user_agent contains "SWeb") or (http.user_agent contains "Szukacz/1.4") or (http.user_agent contains "Teleport") or (http.user_agent contains "Telesoft") or (http.user_agent contains "The Intraformant") or (http.user_agent contains "TheNomad") or (http.user_agent contains "TightTwatBot") or (http.user_agent contains "Titan") or (http.user_agent contains "toCrawl/UrlDispatcher") or (http.user_agent contains "True_Robot") or (http.user_agent contains "ttCrawler") or (http.user_agent contains "turingos") or (http.user_agent contains "TurnitinBot") or (http.user_agent contains "UbiCrawler") or (http.user_agent contains "UnisterBot") or (http.user_agent contains "Unknown") or (http.user_agent contains "uptime files") or (http.user_agent contains "URLy Warning") or (http.user_agent contains "User-Agent") or (http.user_agent contains "VCI") or (http.user_agent contains "Vedma") or (http.user_agent contains "Voyager") or (http.user_agent contains "WBSearchBot") or (http.user_agent contains "Web Downloader/6.9") or (http.user_agent contains "Web Image Collector") or (http.user_agent contains "WebAuto") or (http.user_agent contains "WebBandit") or (http.user_agent contains "WebCopier") or (http.user_agent contains "WebEnhancer") or (http.user_agent contains "WebmasterWorldForumBot") or (http.user_agent contains "WebReaper") or (http.user_agent contains "WebSauger") or (http.user_agent contains "Website Quester") or (http.user_agent contains "Webster Pro") or (http.user_agent contains "WebStripper") or (http.user_agent contains "WebZip") or (http.user_agent contains "Wotbox") or (http.user_agent contains "wsr-agent") or (http.user_agent contains "WWW-Collector-E") or (http.user_agent contains "Yeti")
Правило №5
Последнее правило опциональное. Им можно заблокировать пользователей из нецелевых стран, например, если сайт продвигает локальный бизнес — пиццерию, парикмахерскую и так далее. Также с помощью этого правиламожно заблокировать отдельные страны и регионы. Например, если трафик сайту нужен со всего мира, но с 1–2 стран заходят много ботов, эти гео можно исключить.
Предположим, что необходимо выбрать 3 страны, доступ на сайт для которых будет разрешен. Это Россия, Беларусь, Казахстан. Создаем новое правило, называем его BAD COUNTRIES. Далее добавляем в «Edit expression» следующий код:
(ip.geoip.country ne «RU» and ip.geoip.country ne «BY» and ip.geoip.country ne «KZ»)
Действие выбираем «Block», нажимаем «Use expression builder», затем сохраняем и запускаем правило. Таким образом, как показано на скриншоте ниже, если IP-адрес пользователя не соответствует одной из трех вышеуказанных стран, то на сайт он не попадет.

Пятое правило стоит использовать аккуратно ввиду того, что многие юзеры сейчас используют VPN. Забыв его отключить после посещения заблокированных в стране ресурсов, они могут попытаться зайти на продвигаемый сайт.
После подключения правила нужно следить за такими метриками сайта, как посещаемость и коэффициент конверсии. Если они начинают резко снижаться, то стоит откорректировать набор запрещенных/разрешенных стран.
Вместо заключения
Помимо отслеживания параметров сайта в «Яндекс Метрике» за посещениями, которые происходили в соответствии с заданными правилами, можно следить непосредственно в CloudFlare. График в строке каждого правила показывает статистику трафика.

Параметр CSR рядом с графиком показывает в процентном отношении количество тех, кто из попавших под фильтр пользователей/ботов смог пройти проверку. Если указано 0%, значит все прошли проверку, то есть с большой долей вероятности оказались реальными людьми. 100% означает, что никто пройти проверку не смог, что свидетельствует об атаке ботами.
Проверить эффективность настройки правил, которые были рассмотрены в этой статье, можно следующими способами:
- Ввести в поле «URL» сервиса Bertal домен сайта. Если софт получит ошибку 503, это говорит о том, что CloudFlare правильно отработал и не пустил бота на сайт;
- Попробовать совершить прямой заход на сайт. Пользователя должно отправить на JS проверку и в течение нескольких секунд ему будет показан код ошибки. Затем он войдет на сайт;
- Попытаться скроллить сайт через Screaming Frog SEO Spider или другие подобные парсеры. Если соответствующие правила активны, все попытки парсинга приведут к 503 ошибке.
Использование CloudFlare не защитит на 100% от ботов и чрезмерной нагрузки на сервер. При этом такая мера может снизить вероятность заполнения сайта мусорным трафиком. Это точно стоит того, тем более учитывая простоту настройки сервиса.
