Сегодня опишем кейс по блокировке сео ботов из нашей рабочей практики. Задача от клиента - продвижение интернет-магазина. Мы вели этот проект уже несколько лет и использовали все доступные методы оптимизации и продвижения сайта.
В последнее время зафиксировали возросшую нагрузку на сервер. Причём она выросла настолько, что появилась 502 ошибка и сервер практически лёг.
Стали разбираться с вопросом и через htop увидели нагрузку в 200% на ядра процессора процессами httpd и mysql. Помимо этого, выросли отказы в метриках, так как боты прятались и воспринимались поисковиками, как рядовые пользователи. Интернет-магазин начал показывать падение в метриках Яндекса и google и плохо выдаваться при поиске, что резко отрицательно сказалось на продажах товаров, представленных на сайте.
Стандартная защита cms битрикс не работала от слова совсем, хотя были включены все виды защиты и разрешена блокировка по ip. К примеру, контроль активности, который при превышении запросов отправлял 429 код, но его боты игнорируют. (№ 1-2 скриншот)
После анализа логов var/log/nginx/access.log было зафиксировано огромное количество разных ботов. Приняли решение заблокировать их на уровне веб-сервера nginx по user agent.
Ниже предоставлен обобщенный список ботов в виде правила для nginx, который подойдет любому проекту с подобной проблематикой.
Если мы говорим про bitrix vm, то конфигурации nginx находятся /etc/nginx/bx/site_avaliable или /etc/nginx/bx/site_enabled, в случае если есть правила созданные вами дополнительно.
GPTBot выделили в отдельное правило, при возможных его комбинациях.
if ($http_user_agent ~* ^(.*)GPTBot(.*)$) { return 403; } if ($http_user_agent ~* Amazonbot|Bytespider|SeopultContentAnalyzer|SeekportBot|DataForSeoBot|Barkrowler|BLEXBot|SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|PetalBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru|thesis-research-bot|fidget-spinner-bot|facebookexternalhit) { return 403; }
Добавлять правило надо как на скриншоте между listen и server name.
Таким образом, если у вас выросла нагрузка на сервер, сервер стал часто падать в 502 ошибку, выросли отказы в метрике яндекса и google, возможно проблема связана с нелегетивными ботами.
Обращайтесь, мы разработаем решение, которое подойдёт именно в вашем случае.