В последние годы у сайтовладельцев и вебмастеров появилась новая проблема — волна прямых заходов и повышение роботности по Метрике. Чаще всего это не сильно влияет на поведенческие факторы (важный показатель ранжирования в поисковых системах), но бывает и так, что ПФ портятся и сайт начинает стремительно терять поисковый трафик. В этой статье мы разберем 2 основных действенных способа, как защитить сайт от ботов и роботов, чтобы снизить количество прямых заходов (да и любых других, под которые могут маскироваться умные боты), улучшить поведенческие факторы и как следствие – спасти или даже улучшить трафик из поисковых систем. А еще защита от ботов существенно снизит нагрузку на сервер и сэкономит вам деньги за хостинг.
Сразу оговоримся, что ПС, в частности Яндекс, проблему игнорируют, по крайней мере если написать в техническую поддержку, то Платон Щукин даст примерно такой ответ:
«Продолжайте работать над сайтом, всё будет хорошо. Делайте качественный контент, отвечающий запросам пользователей»
Хочется лишь добавить к такому ответу, что и от ботов вас спасем, и санкции на сайт не наложим. На деле лишь можно полностью лишиться поискового трафика, или даже получить бан в РСЯ (видимо за скликивание ботами рекламы). К счастью, такое бывает не часто. Итак, что же делать?
Как защитить сайт от ботов, прямых заходов и роботов
Как отключить IPv6
Начнём с базы – необходимо отключить IPv6. Если на ваш сайт посетители попадают через IPv6 – то с вероятностью 95-99% это боты. Да, это могут быть и живые люди (например, через мобильный интернет Мегафона), но их процент настолько мизерный, что лучше отключить и упростить тем самым на порядок свою борьбу с ботами.
Чтобы отключить IPv6, необходимо на своем хостинге в настройках DNS удалить записи AAAA. Если у вас Бегет – вам повезло, их сервера не поддерживают IPv6 и боты априори не попадут на ваши сайты через IPv6, если они расположены на хостинге Бегет.
Тем не менее, большинство людей попадают на сайты через IPv4, чем пользуются умные боты и тоже так делают. Поэтому далее рассмотрим, как защитить сайт от ботов, которые заходят через IPv4.
Разберем два основных способа, платный (соответственно более простой и надежный) и бесплатный.
AntiBot Cloud
Первый способ платный – сервис AntiBot Cloud: antibot.cloud
Суть его защиты в том, что всем подозрительным посетителям будет предложено выбрать похожую картинку, похожий цвет или просто подтвердить, что он – человек, нажав на соответствующую кнопку. Что именно будет делать подозрительный посетитель – вы сами настраиваете в панели управления антибота, по умолчанию стоит выбор похожей картинки.
Итак, как защитить сайт от ботов с помощью сервиса AntiBot Cloud:
- Регистрируетесь на сайте антибота;
- Оплачиваете подписку. Месяц стоит около 2 000 рублей (актуальные цены смотрите на сайте antibot.cloud) Если оплатить сразу 3, 6 или 12 месяцев – можно получить существенную скидку. Есть 2 типа тарифа — для одного сайта (то есть домена) и безлимитный.
- Скачиваете инсталлятор, запускаете его в корне сайта, который подвергся атаке ботов, и подключаете через PHP в зависимости от CMS сайта. Простая и понятная инструкция есть на сайте антибота, вы без труда её найдете, а с подключением справится даже школьник.
Cloudflare
Второй способ, который сложнее, менее эффективный, но зато бесплатный и подойдет в большинстве случаев – сервис Cloudflare: cloudflare.com
Как защитить сайт от ботов с помощью Cloudflare:
- Добавляете сайт в Cloudflare (есть бесплатный тариф);
- Меняете у регистратора домена NS-записи на записи Cloudflare;
- Когда в личном кабинете Cloudflare будет написано, что домен работает через прокси Cloudflare, включаете режим Under Attack Mode. Можно и сразу включить;
- Проверьте, что на стороне cloudflare у вас включено перенаправление на https. Отключите его на своем хостинге (если у вас Бегет — в разделе Сайты выбираете домен, жмете на шестеренку и передвигаете ползунок, который отвечает за перенаправление);
Далее – самое интересное, необходимо настроить правила, чтобы система более точно определяла, кого пускать на ваш сайт без проблем, кому показывать капчу, а кого и вовсе блокировать. Настройка правил находится в разделе Security ➜ WAF:
1. Пропускаем нужных ботов:
Жмем Create rule.
Называем Правило, например Allow access.
Жмем Edit expression.
Вставляем правило:
1 | (http.user_agent contains "Google") or (http.user_agent contains "Yandex") |
Choose action: Skip.
Ставим все четыре галочки.
Жмем Deploy.
2. Блокируем левых ботов:
Жмем Create rule.
Называем Правило, например Block access.
Жмем Edit expression.
Вставляем правило:
1 | (ip.src in {::/0}) or (not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1"}) or (cf.threat_score ge 5) or (http.referer eq "") or (not ssl) |
Choose action: Managed Challenge
Жмем Deploy.
3. Блокируем известных вредных ботов:
Жмем Create rule.
Называем Правило, например Block bad bots.
Жмем Edit expression.
Вставляем правило:
1 | (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") |
Choose action: Block.
Жмем Deploy.
4. Пропускаем запросы своего хостинга:
Жмем Create rule.
Называем Правило, например My hosting.
Жмем Edit expression.
Внимание! В примере кода ниже указан IP хостинга Бегет. Его необходимо заменить на IP своего хостинга, если у вас не Бегет. IP хостинга можно узнать в техподдержке хостинга. Добавляем кусок кода
1 or (http.request.uri contains "/wp-cron.php")только если у вас WordPress.
Вставляем правило:
1 | (ip.src eq 87.236.16.225) or (ip.src eq 87.236.20.224) or (http.request.uri contains "/wp-cron.php") |
Choose action: Skip.
Ставим все галочки.
Жмем Deploy.
5. Блокируем ненужные страны:
Жмем Create rule.
Называем Правило, например Block countries.
Жмем Edit expression.
Вставляем правило:
1 | (ip.geoip.country eq "US") or (ip.geoip.country eq "FI") or (ip.geoip.country eq "DE") or (ip.geoip.country eq "CN") or (ip.geoip.country eq "IR") or (ip.geoip.country eq "IN") or (ip.geoip.continent eq "AF") or (ip.geoip.country eq "SG") or (ip.geoip.country eq "GB") or (ip.geoip.country eq "PL") or (ip.geoip.country eq "ID") or (ip.geoip.country eq "TH") or (ip.geoip.country eq "HK") or (ip.geoip.country eq "CH") or (ip.geoip.country eq "BG") or (ip.geoip.country eq "CZ") or (ip.geoip.country eq "SC") or (ip.geoip.country eq "CA") or (http.user_agent contains "ahrefs.com") or (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") |
Choose action:
Тут на ваше усмотрение. Чтобы заблокировать – выбираем «Block», но в большинстве случаев лучше выбрать «Managed Challenge», чтобы всем «иностранцам» показывалась капча.
Жмем Deploy.
Последнее правило можно не ставить. В нем есть необходимость, если вы проверили географию посещаемости по Метрике (Отчёты – Аудитория – География), и обнаружили, что на сайт заходит много посетителей из стран, в которых нет целевой аудитории сайта. Например, на русскоязычный сайт заходят много посетителей из Китая или США. В таком случае есть смысл не только использовать последнее правило, но и сделать его под свой сайт, указав буквенные коды (например US – США) только тех стран, трафик из которых необходимо заблокировать.
Если всё сделали правильно, получиться должно вот так:
Отследить активность DDoS-атаки можно в личном кабинете Cloudflare или в личном кабинете хостинга Бегет в разделе Журналы-Журналы доступа. Приложение для сбора статистики имеет смысл установить сразу, чтобы оно сразу начало вести журнал логов.
Если вам есть, что добавить, или вы знаете более эффективный или дешёвый способ защиты сайта от ботов – поделитесь им в комментариях под этой статьей! А если статья была для вас полезной – поделитесь ею с друзьями сайтовладельцами и вебмастерами в чатах Телеграм и в личных сообщениях!