17 февраля 2023 6 10098

Фильтруем ботов, краулеров и прочий мусор с помощью 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 {::/0}) or (not ssl);
  • Действие: LEGACY CAPTCHA;
  • Правило №3. Блокировка трафика из протокола HTTP1.1;
  • Код: (not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1"}) 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 секунд выходят с него. В результате сайт получает пессимизацию «Яндекса» по данным ключам.

Поэтому необходимо фильтровать ботов различных сервисов краулинга, парсинга и анализа данных. К таким сервисам относятся сервисы SEO-анализа: 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».

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

«Ставить или крутить?», — выступление совладельца команды BET22 Алексея Облицов
  • «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 {::/0}) 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 {"HTTP/2" "HTTP/3" "SPDY/3.1"}) or (http.referer eq "")

Тренды веб-дизайна 2024 года и как увеличить ROI с помощью комментариев в Fb* — самые интересные посты из корпоративных блогов за январь 2024

В качестве действия можно выбрать либо блокировку, либо отправку на проверку 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% означает, что никто пройти проверку не смог, что свидетельствует об атаке ботами.

Проверить эффективность настройки правил, которые были рассмотрены в этой статье, можно следующими способами:

«ASO — это игра в быструю» — Александр Флинт о том, как зарабатывать на SEO и ASO в гемблинге
  1. Ввести в поле «URL» сервиса Bertal домен сайта. Если софт получит ошибку 503, это говорит о том, что CloudFlare правильно отработал и не пустил бота на сайт;
  2. Попробовать совершить прямой заход на сайт. Пользователя должно отправить на JS проверку и в течение нескольких секунд ему будет показан код ошибки. Затем он войдет на сайт;
  3. Попытаться скроллить сайт через Screaming Frog SEO Spider или другие подобные парсеры. Если соответствующие правила активны, все попытки парсинга приведут к 503 ошибке.  

Использование CloudFlare не защитит на 100% от ботов и чрезмерной нагрузки на сервер. При этом такая мера может снизить вероятность заполнения сайта мусорным трафиком. Это точно стоит того, тем более учитывая простоту настройки сервиса.

Как вам статья?
ПОЛУЧИТЬ АКТУАЛЬНУЮ ПОДБОРКУ КЕЙСОВ

Прямо сейчас бесплатно отправим подборку обучающих кейсов с прибылью от 14 730 до 536 900 ₽.

Лучшие промокоды
Партнерки
Welcome Partners
Конвертируйте свой трафик в нише онлайн-казино
TRAFORCE
Дейтинговая СPA-сеть
Leadshub
Gambling и Betting CPA-сеть
Сервисы
Dolphin{anty}
Лучший антидетект браузер
PARTNERKIN
20%
iRent.Market
Aренда iOS-приложений с уникальной технологией
PARTNERKIN
20%
AdPlexity
Мониторинг мобильной, десктоп и нативной рекламы
partnerkin_m
25%

Санек Ответить
Скажи добрый человек. Настроил все по вашей статье. 50% ботов отсек. Дело в другом. Стали появляться страницы в вебмастере в графе "Статистика обхода" и страницы вида на конце /undefined и /init. Что нужно отключить в CF, чтобы они не появлялись?
23 апреля 2023, 21:41 0
Задайте этот вопрос напрямую автору видеоролика - он даст более исчерпывающий ответ. В начале статье есть ссылка на видео, а в его описании контакты Ивана (ссылка на тг).
23 апреля 2023, 21:56 0
Шайлтан Вор Ответить
Буду настраивать по вайшему мануалу
15 сентября 2023, 09:36 0
Сосун Ответить
Спасибо тебе огромное, очень выручил!
05 ноября 2023, 00:01 0
Костя Ответить
Сделал все по иснструкции, теперь вебвизор не работает, подскажите пожалуйста, что нужно поправить, чтобы он заработал?
05 марта, 08:36 0
Добрый день, спасибо автору за материал - скорректировал у себя ранее созданные фильтры. Но перечень плохих краулеров наверняка не исчерпывающий, полагаю, с некой периодичностью на свет появляются новые. Где можно отслеживать это, чтобы своевременно актуализировать фильтр?
17 марта, 15:29 0