Robots.txt dosyası genellikle bot yönetiminin merkezi olarak konumlandırılır; ancak bu dosyanın koruma sağladığı botlarla sağlamadığı botlar arasındaki fark büyük ölçüde göz ardı edilir. Bir web sitesi günlük bant genişliğinin önemli bir bölümünü, hiçbir zaman içeriğinizi gerçek bir kullanıcıya göstermeyen botlara harcıyor olabilir. Bu trafiğin ne kadarının meşru, ne kadarının zararlı olduğunu anlamak, robots.txt stratejisini doğru kurmadan önce yanıtlanması gereken temel sorudur.
Sunucu loglarını incelediğinizde görünen manzara çoğu kez tahmin edilenden karmaşıktır: Googlebot, Bingbot ve web arşiv robotları gibi protokole uyan botların yanında içerik çeken scraperlar, kırık linkleri depolayan katalogcular ve credential stuffing deneyen sistemler de sürekli erişim sağlar. Robots.txt bu iki grup için aynı işlevi görmez.
İyi bot ve kötü bot ayrımı: neden önemli?
Bir botu "iyi" yapan şey protokol uyumluluğudur. Googlebot gibi arama motoru tarama botları, web üzerinde kabul gören robotlar protokolüne uyar; disallow kurallarına saygı gösterir ve kendini User-agent başlığıyla doğru biçimde tanıtır. Bu botlar, arama motorlarının indeksleme altyapısını oluşturur ve bir web sitesi için kontrol edilebilir trafik kaynağıdır.
Kötü botlar bu kategorinin dışında konumlanır. Content scraper'lar, başkasının içeriğini otomatik olarak çekip başka bir yerde yeniden yayımlamak için çalışır. Credential stuffing botları, sızdırılmış kullanıcı adı ve şifre kombinasyonlarını form alanlarına dener. Yük testi kılığına giren botlar zaman zaman bir saldırının öncül keşiflerini oluşturur. E-posta harvester'lar sayfalardan mailto linklerini ve düz metin adresleri toplar. Bu kategorideki botların ortak özelliği kural tanımamaktır; herhangi bir protokol zorlamazlar ve robots.txt okumak için tasarlanmamışlardır.
Protokol tanımaz botla müzakere edilmez.
Yarı meşru bot kategorisi de vardır ve bu grup çoğu zaman en çok kafa karıştıranıdır. SEO tarama araçları, backlink analiz servisleri ve içerik izleme platformları kendilerini User-agent başlığında açıklar; bazıları robots.txt kurallarına uyar, bazıları uymazlar. Bu grup bant genişliği tüketebilir ama doğrudan zarar vermez. Bant genişliği maliyeti yine de somuttur: yüksek frekanslı scraper botları aynı sayfayı dakikalar içinde onlarca kez çekerek sunucu kaynaklarını tüketir, CDN ücretlerini artırır ve rate limit eşiklerini tetikler.
Robots.txt'in gerçek sınırı
Robots.txt dosyası bir erişim kontrol mekanizması değildir. Kötü botlar robots.txt okumaz. Bir disallow kuralı yalnızca bu kuralı uygulamayı seçmiş botları etkiler; teknik olarak herhangi bir zorlama içermez. Dosya HTTP üzerinden erişilebilir, açık metin olarak yayımlanır ve içeriği herkese açıktır. Üstelik robots.txt'te engellediğiniz URL'ler, bazı botlar için bir hedef listesi işlevi görebilir.
Protokol uyumlu botlarda robots.txt son derece işlevseldir: Googlebot'a belirli dizinleri taraması, belirli sayfa türlerini atlaması veya tarama hızını düşürmesi talimatı verebilirsiniz. Bu botlar bu kurallara gerçekten uyar. Ancak bu uyum, kurallara gönüllü katılım ilkesine dayanır; zorunlu bir güvenlik protokolü değildir.
Pratik sonucu şudur: robots.txt, bot yönetiminin ilk katmanı olarak değil, arama motoru tarama yapılandırması olarak tanımlanmalıdır. Kötü bot koruması için farklı araçlar devreye girmek zorundadır. Disallow ve User-agent direktiflerini doğru biçimde yapılandırmak bu katmanın temelini kurar; koruma ise sunucu tarafında tamamlanır.
Sunucu katmanı: .htaccess ve CDN ile tamamlama
Gerçek bot koruması sunucu tarafında uygulanır. .htaccess üzerinde User-Agent başlığına göre erişim reddetmek, robots.txt'ten farklı olarak HTTP 403 yanıtıyla sonuçlanır; bot isteği sunucuya ulaşır ancak yanıt almadan geri döner. Yapılandırma örneği:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} KotuBotAdi [NC]
RewriteRule .* - [F,L]
Bu yaklaşımın sınırı, User-agent başlığını taklit eden botlara karşı etkisiz kalmasıdır. Bir scraper sıradan bir tarayıcı gibi davranırsa .htaccess kuralı onu yakalamaz. Erişim kontrol kurallarını .htaccess üzerinde yapılandırırken bot önleme dışında HTTPS yönlendirme ve cache başlıkları gibi pek çok bileşen bir arada kurgulanabilir; bu bileşenlerin çatışmaması için sıralamaya dikkat edilmesi gerekir.
User-agent sahtekarlığı engeli aşar. CDN seviyesinde bot koruması farklı bir katman sunar. IP itibar veritabanlarına dayanan CDN servisleri, kötü niyetli kaynaklardan gelen istekleri bağlantı kurulmadan engeller. Bu yaklaşım gerçek IP adresine dayandığı için User-agent sahtekarlığından etkilenmez. Rate limiting kuralları ise aynı IP'den gelen anormal istek sıklığını tetikleyerek hem scraper trafiğini hem kaba kuvvet girişimlerini sınırlar. Örneğin dakikada 100 isteği aşan bir IP için otomatik geçici engel uygulamak, gerçek kullanıcıları etkilemeden botların büyük çoğunluğunu duraksatır.
Fail2ban gibi sistem araçları sunucu loglarını gerçek zamanlı izler ve belirlenen eşiği aşan IP adreslerini otomatik olarak engeller. Bu araç HTTP botları kadar SSH brute force girişimlerini de hedef alır; tek noktadan yapılandırılan bir kural seti geniş bir koruma yüzeyi sağlar. Honeypot tekniği ise botların insan olmayan davranışını tespit etmenin başka bir yoludur: gerçek kullanıcıların CSS ile gizlenmiş form alanlarını doldurmadığı bilinir; bu alanı dolduran her istek otomatik bot olarak sınıflandırılabilir.
CAPTCHA ve JavaScript challenge mekanizmaları bu katmanları tamamlar. Modern challenge sistemleri kullanıcıdan açık bir eylem beklemek yerine tarayıcı davranışını arka planda analiz eder; JavaScript render edemeyecek basit botlar challenge'ı geçemeden bağlantıyı kaybeder. Bu yaklaşım kullanıcı deneyimini bozmadan bot filtrelemesi yapmanın pratik yollarından biridir; ancak headless browser kullanan gelişmiş scraperlar bu engeli de aşabilir.
Log analizi ile bot trafiğini tanıma
Bot korumasını etkili biçimde uygulamak için önce ne kadar bot trafiği aldığınızı ve bu trafiğin hangi URL'leri hedef aldığını anlamak gerekir. Sunucu access logları bu analizin ham verisidir. Apache ve Nginx loglarında her istek, User-agent, IP adresi, istek zamanı ve durum kodu ile birlikte kaydedilir.
Log okumak tahmin değil, sayım işidir.
Bot trafiğini tanıyan birkaç pratik sinyal vardır. İlki istek sıklığıdır: aynı IP'den dakika başına çift haneli istek geliyorsa bu bot davranışıyla uyumludur. İkincisi URL örüntüsüdür; botlar çoğu zaman robots.txt ve sitemap.xml'e ilk erişir, ardından sistematik biçimde tüm URL yapısını gezer. Üçüncüsü User-agent string'idir: `python-requests`, `curl`, `scrapy` gibi değerler script kaynaklı erişimi doğrudan ele verir. Dördüncüsü yüksek 404 oranıdır; var olmayan URL'leri deneyen botlar bu sinyali güçlü biçimde üretir.
Access log analizini otomatikleştirmenin en doğrudan yolu crontab ile çalışan basit bir log işleme scriptidir. Sonuçlar Cloudflare panelinde veya sunucu güvenlik duvarı kurallarına manuel olarak aktarılabilir. Daha kapsamlı bir görünürlük için sayfa yükleme sürelerini ve sunucu yanıt kodlarını izlemek, bot kaynaklı yüklenmenin gerçek kullanıcı deneyimine yansıyıp yansımadığını gösterir.
User-agent direktifi ile engelleme: hangi senaryolarda anlamlı?
Robots.txt'te User-agent direktifi, belirli bir bot grubuna özel kurallar tanımlamak için kullanılır. SEO tarama botları bu direktifle yönetilebilir; ancak bu botların bir kısmının User-agent string'ini değiştirdiğini ve farklı isimlerle tarama yaptığını göz önünde bulundurmak gerekir.
Temel yapı şu şekilde kurulur:
User-agent: BotAdi
Disallow: /
Bu kural, robotlar protokolünü uygulayan bir bota siteye tamamen erişmemesini söyler. Belirli bir dizini gizlemek için şu format kullanılır:
User-agent: BotAdi
Disallow: /ozel-dizin/
Gerçek koruma değeri, protokol uyumlu botlarda gözlemlenir. Yarı meşru SEO tarama araçları genellikle User-agent kurallarına uyar; çünkü bu araçları geliştiren şirketlerin itibar kaybı riski vardır ve kurallara uymayan bir tarama aracı müşterileri tarafından reddedilir. Tam anlamıyla kötü niyetli scraperlar ise bu eşikte kalmayıp robots.txt kurallarını görmezden gelir. Bu direktif yarı meşru bot trafiğini yönetmek için anlamlıdır; gerçek saldırıları durdurmaz. Belirli bir IP veya hostname'in hangi ağa ait olduğunu doğrulamak, şüpheli bot kaynaklarının meşruiyetini anlamada yardımcı olabilir.
Overblocking: yanlış yapılandırmanın bedeli
Kötü botları engelleme çabası yanlış yapılandırıldığında meşru taramayı da durdurabilir. Robots.txt'te en yaygın aşırı engelleme hatası, User-agent: * ile Disallow: / kuralının tüm sitede aktif bırakılmasıdır; bu kural Googlebot dahil tüm botların siteden çekilmesine neden olur ve indeksleme tamamen durur.
Geniş kural herkesi vurur. User-agent string eşleştirmesinde alt string mantığı da hata kaynağıdır. "bot" içeren tüm User-agent değerlerini engellemeye çalışan bir wildcard kural Googlebot'u da bu gruba dahil edebilir. .htaccess katmanında benzer risk geçerlidir: çok geniş yazılmış bir User-Agent bloklama kuralı, gerçek kullanıcıların eski veya az yaygın tarayıcılarından gelen trafiği engelleyebilir. Regex tabanlı kurallar uygulamadan önce test ortamında doğrulanmalıdır.
Google Search Console'daki Coverage raporu ve URL Inspection aracı, Googlebot'un gerçekte hangi sayfalara erişebildiğini gösterir. Yeni bir bot engelleme kuralı devreye alındıktan sonra bu raporu kontrol etmek, yanlış yapılandırılan bir kuralın etkisini birkaç gün içinde ortaya çıkarır. Bot koruma stratejisi robots.txt kuralının yazılmasıyla tamamlanmaz; robots.txt protokol uyumlu botlarla kurulan diyaloğun belgesidir, kötü bot koruması ise sunucu düzeyindeki katmanların her birinin farklı saldırı yüzeyini kapattığı ayrı bir yapılandırma sürecidir.