User-Agent engelleme ile Bot Trafiğini azaltmanın yolları

Neden Önemlidir?

  • Kötü User-Agent’lar genellikle spam, veri kazıma (scraping), saldırı ön hazırlığı gibi amaçlarla kullanılır.
  • Performans düşürür, sunucu kaynaklarını tüketebilir.
  • Bazı zararlı botlar arama motorları gibi davranarak sahte tarayıcı bilgisi (User-Agent) gönderir.

Çözüm: Kötü User-Agent’ları Engelle

1. .htaccess ile Engelleme (Apache Sunucular için)
WordPress siten .htaccess kullanıyorsa (çoğu sitede kullanılır), aşağıdaki kodu .htaccess dosyanın en üstüne ekle:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} (crawler|harvest|libwww|wget|python|scan|nmap|sqlmap|curl|masscan|badbot) [NC]
RewriteRule ^.* - [F,L]
</IfModule>

Bu kod:

  • User-Agent’i boş gönderenleri
  • Yaygın botlar ve tarayıcı simülasyonu yapan saldırganları 403 Forbidden ile engeller.

2. Wordfence Gibi Güvenlik Eklentileriyle

Eğer .htaccess düzenlemek istemiyorsan:

  • Wordfence, All In One WP Security gibi güvenlik eklentileri kullanabilirsin.
  • Wordfence → Blocking bölümünden şüpheli User-Agent’ları engelleyebilir.
  • Gelişmiş koruma sağlar, geçmişte hangi User-Agent’lar saldırı yapmış görebilirsin.

Önerilen Kötü User-Agent Örnekleri:

libwww-perl
wget
curl
HTTrack
python-requests
masscan
nmap
sqlmap
scrapy
MJ12bot (bazı durumlarda)

Gerçek arama motorlarını (Googlebot, Bingbot vs.) yanlışlıkla engellememeye dikkat et.

Test etmek için:

Tarayıcında aşağıdaki gibi curl ile test edebilirsin (SSH üzerinden):

curl -A "BadBot" https://seninsiten.com

Eğer her şey doğruysa 403 Forbidden yanıtı döner.

Örnek .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

# Kötü User-Agent'ları engelle
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} (crawler|harvest|libwww|wget|python|scan|nmap|sqlmap|curl|masscan|badbot|scrapy|httpclient|httplib|perl) [NC]
RewriteRule ^.* - [F,L]

# Yetkilendirme başlıkları için
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Açıklamalar

  • User-Agent engelleme satırları en üste yerleştirildi çünkü bu kuralların diğer yönlendirme kurallarından önce uygulanması gerekir.
  • Gerçek kullanıcıları veya arama motorlarını etkilemeyecek şekilde optimize edildi.
  • NC (no case) parametresi sayesinde büyük/küçük harf farkı gözetilmez.

    Bir yanıt yazın