Зачем блокировка ботов
Боты составляют 30-50% трафика большинства сайтов. Это статистика Imperva 2023: половина запросов — машины, не люди. Из них половина — «хорошие» (Googlebot, YandexBot — индексируют для поисковиков), половина — «плохие» (парсеры контента, спам-боты, DDoS).
Вредные боты создают проблемы:
- Нагрузка на сервер. Aggressive scrapers могут делать 100+ запросов в секунду — ваш сайт становится медленным для реальных пользователей.
- Воровство контента. Парсеры копируют ваши статьи, постят на других сайтах — уникальность контента падает, SEO страдает.
- SEO-аналитика конкурентов. AhrefsBot, SemrushBot собирают данные для конкурентов — раскрывают вашу стратегию.
- Database overload. Боты могут запрашивать тяжёлые страницы (поиск, фильтры) и грузить БД.
- Спам в комментариях / формах. Боты заполняют формы, регистрируют фейк-аккаунты.
- DDoS. Координированная атака с тысячи IP — ваш сайт ложится.
Готовые шаблоны
1. Блокировка по User-Agent (топ вредных ботов)
RewriteEngine On
# SEO-парсеры конкурентов
RewriteCond %{HTTP_USER_AGENT} (AhrefsBot|SemrushBot|MJ12bot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (DotBot|BLEXBot|YisouSpider) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (PetalBot|MegaIndex|SiteAuditBot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (AspiegelBot|Slurp|magpie-crawler) [NC,OR]
# Спам-боты
RewriteCond %{HTTP_USER_AGENT} (linkdexbot|XoviBot|Sogou|Crawler) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (Riddler|Scrapy|python-requests) [NC,OR]
# Hacking tools
RewriteCond %{HTTP_USER_AGENT} (sqlmap|nikto|nmap|masscan|wpscan) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (zgrab|ZmEu|libwww-perl) [NC,OR]
# Curl и wget (часто используются для парсинга)
RewriteCond %{HTTP_USER_AGENT} ^curl [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [NC]
# Возврат 403
RewriteRule .* - [F,L]2. Блокировка пустого User-Agent
# Блокировать запросы без User-Agent (часто примитивные боты)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteRule .* - [F,L]3. Блокировка по IP
# Apache 2.4 синтаксис
<RequireAll>
Require all granted
# Конкретные IP
Require not ip 1.2.3.4
Require not ip 5.6.7.8
# Диапазоны (CIDR)
Require not ip 10.0.0.0/24
Require not ip 192.168.1.0/24
</RequireAll>
# Альтернативный синтаксис через RewriteRule
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.4$ [OR]
RewriteCond %{REMOTE_ADDR} ^5\.6\.7\.8$
RewriteRule .* - [F,L]4. Блокировка по стране (через mod_geoip)
# Требует mod_geoip установленный на сервере
RewriteEngine On
# Блокировать определённые страны (CN — Китай, RU — Россия)
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|RU|KP|IR)$
RewriteRule .* - [F,L]
# Или: разрешить только определённые
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(US|GB|DE|FR|RU|UA)$
RewriteRule .* - [F,L]5. Защита от parsing запросов
# Блокировать запросы с подозрительными параметрами
RewriteEngine On
# SQL injection patterns
RewriteCond %{QUERY_STRING} (UNION|SELECT|INSERT|DELETE|DROP) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|\>|<|>) [OR]
# XSS patterns
RewriteCond %{QUERY_STRING} (alert\(|onclick=|onmouseover=) [NC,OR]
# Path traversal
RewriteCond %{QUERY_STRING} (\.\./|\.\\\\) [NC]
RewriteRule .* - [F,L]47% всего веб-трафика — это боты. 30% — вредные (scrapers, spam, DDoS). Защита от них — must-have для любого коммерческого сайта. Без правил блокировки — сервер тратит ресурсы на ботов, а реальные пользователи получают медленную загрузку.— Imperva Bad Bot Report 2023
Подводные камни
Не блокируйте Googlebot и YandexBot!
Самая опасная ошибка — случайно заблокировать поискового бота. Если ваш regex слишком широкий (например, .*Bot.*), он поймает Googlebot. Через несколько недель страницы выпадают из индекса.
# ОПАСНО: блокирует Googlebot, YandexBot, BingBot
RewriteCond %{HTTP_USER_AGENT} bot [NC]
RewriteRule .* - [F,L]
# БЕЗОПАСНО: точные имена вредных ботов
RewriteCond %{HTTP_USER_AGENT} (AhrefsBot|SemrushBot|MJ12bot) [NC]
RewriteRule .* - [F,L]
# Проверка через Yandex Webmaster:
# Раздел "Ошибки сканирования" — там увидите если бот блокирован.Подделка User-Agent
Серьёзные парсеры подделывают User-Agent под обычный Chrome / Firefox. Простые правила .htaccess их не ловят. Для защиты от них:
- Cloudflare bot management. Использует fingerprinting (TLS, поведение) — детектирует даже подделанных ботов.
- JavaScript challenge. Cloudflare показывает «I'm not a robot» на 5 секунд — реальные пользователи проходят, боты застревают.
- reCAPTCHA / hCaptcha. На критичных страницах (формы, поиск).
- Rate limiting + IP reputation. Через AbuseIPDB или Project Honey Pot.
Производительность .htaccess
.htaccess читается с диска при КАЖДОМ запросе. Большой файл с 100+ правил замедляет сервер. Решения:
- Перенесите правила в основной httpd.conf. Читается один раз при старте Apache. AllowOverride None для повышения производительности.
- Используйте Cloudflare — фильтрация на стороне CDN, .htaccess не задействуется.
- fail2ban — анализирует логи, блокирует на уровне iptables (быстрее .htaccess).
Тестирование
curl — проверка User-Agent
# Запрос с User-Agent AhrefsBot curl -A "AhrefsBot/7.0" https://example.com -I # Должен вернуть HTTP/1.1 403 Forbidden # Проверка что Googlebot НЕ блокирован curl -A "Mozilla/5.0 (compatible; Googlebot/2.1)" https://example.com -I # Должен вернуть HTTP/1.1 200 OK # Проверка пустого User-Agent curl -A "" https://example.com -I # Должен вернуть 403 если правило настроено
Анализ логов
# Топ вредных ботов в логах
awk -F\" '{print $6}' /var/log/apache2/access.log \
| sort | uniq -c | sort -rn | head -20
# Сколько запросов от AhrefsBot
grep "AhrefsBot" /var/log/apache2/access.log | wc -l
# IP с наибольшим количеством запросов
awk '{print $1}' /var/log/apache2/access.log \
| sort | uniq -c | sort -rn | head -10
# Распределение HTTP кодов (видим 403 — блокировки)
awk '{print $9}' /var/log/apache2/access.log \
| sort | uniq -c | sort -rnАльтернативы .htaccess
- Cloudflare — лучшее решение для большинства. Bot fight mode, rate limiting, WAF в бесплатном тарифе.
- fail2ban — анализирует логи, блокирует через iptables. Защищает от brute-force атак.
- Nginx limit_req — встроенное rate limiting. Если используете Nginx вместо Apache.
- ModSecurity — Web Application Firewall для Apache/Nginx. Защита от SQL injection, XSS, path traversal.
- HAProxy — load balancer с продвинутой фильтрацией трафика.
- Imperva — Bad Bot Report. Imperva. imperva.com/resources/resource-library/reports/bad-bot-report. 2023.
- Apache mod_rewrite Documentation. Apache Software Foundation. httpd.apache.org/docs/2.4/mod/mod_rewrite.html. 2024.
- Project Honey Pot — Bad Bot list. Project Honey Pot. projecthoneypot.org. 2024.
