Tarayıcınızın Kimliğini Anlayın
Günümüz dijital dünyasında web siteleri, sadece meşru kullanıcı trafiğiyle değil, aynı zamanda istenmeyen bot ve şüpheli user agent istekleriyle de karşı karşıya kalmaktadır. Bu tür istekler, web sitenizin performansını düşürmekle kalmaz, sunucu kaynaklarınızı tüketir, veri bütünlüğünü bozabilir ve en önemlisi, Google AdSense gibi reklam platformları üzerinden gelir elde ediyorsanız, geçersiz trafik nedeniyle ciddi sorunlara yol açabilir. AdSense politikalarına göre, geçersiz trafik (botlar tarafından oluşturulan tıklamalar veya gösterimler dahil) AdSense hesabınızın askıya alınmasına veya tamamen kapatılmasına neden olabilir. Bu nedenle, şüpheli kullanıcı aracı isteklerini tespit etmek ve engellemek, her web sitesi sahibi için kritik bir siber güvenlik ve AdSense uyumluluk stratejisidir.
Bu makalede, web sitenize gelen bot trafiğini ve şüpheli user agent isteklerini nasıl tespit edeceğinizi ve etkili bir şekilde nasıl engelleyeceğinizi adım adım inceleyeceğiz. Amacımız, sitenizin sağlıklı çalışmasını sağlamak, sunucu yükünü azaltmak ve AdSense politikalarına uygun bir trafik akışı oluşturmaktır.
Şüpheli user agent istekleri, genellikle kötü niyetli veya verimsiz botlar tarafından yapılan bağlantı girişimleridir. Bu botlar çeşitli amaçlarla sitenizi ziyaret edebilir:
* Kaynak Tüketimi: Aşırı istekler, sunucunuzun CPU, RAM ve bant genişliğini tüketerek meşru kullanıcıların deneyimini olumsuz etkileyebilir ve sitenizin yavaşlamasına veya çökmesine neden olabilir.
* Veri Kazıma (Scraping): İçeriğinizi izinsiz kopyalayarak çalabilir veya rakipleriniz tarafından fiyat karşılaştırması yapmak için kullanılabilir.
* DDoS Saldırıları: Dağıtılmış Hizmet Engelleme (DDoS) saldırılarının bir parçası olarak, sitenizi erişilemez hale getirmeyi amaçlayan yoğun trafik oluşturabilirler.
* Spam ve Güvenlik Açığı Taraması: Sitenizde spam yorumlar bırakmak veya bilinen güvenlik açıklarını bulmak için otomatik taramalar yapabilirler.
* SEO Manipülasyonu: Arama motoru sıralamanızı yapay olarak düşürmek veya yükseltmek amacıyla sahte tıklamalar veya ziyaretler üretebilirler.
* AdSense Geçersiz Trafik: Özellikle reklam tıklamaları veya gösterimleri üreterek AdSense gelirlerinizi manipüle etmeye çalışabilirler. Bu, AdSense'in en hassas olduğu konuların başında gelir ve hesabınızın kapatılmasına yol açabilir.
User Agent, bir web tarayıcısı, bot veya başka bir yazılımın web sunucusuna kendisini tanıttığı bir HTTP başlığıdır. Bu başlık, sunucuya isteği yapan istemcinin türü, işletim sistemi ve versiyonu hakkında bilgi verir. Örneğin, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" gibi bir user agent dizesi, isteğin Windows 10 çalıştıran bir Chrome tarayıcısından geldiğini belirtir. Botlar da kendilerini tanımlamak için user agent dizesi kullanır; örneğin, "Googlebot/2.1 (+http://www.google.com/bot.html)" gibi. Ancak kötü niyetli botlar genellikle ya tanıdık tarayıcı user agent'larını taklit eder ya da hiç user agent bilgisi göndermez.
Şüpheli user agent isteklerini tespit etmek için birden fazla yöntem kullanmak, en etkili yaklaşımdır. Tek bir kontrol noktası genellikle yeterli olmaz.
Bu, bot tespiti için ilk ve en temel adımdır.
* Tanıdık Bot User Agent'ları: Googlebot, Bingbot, YandexBot gibi arama motoru botları kendilerini belirli user agent dizeleriyle tanıtırlar. Bunlar genellikle meşru botlardır ve `robots.txt` dosyanızdaki talimatlara uyarlar. Ancak, bu botların taklit edilip edilmediğini kontrol etmek önemlidir.
* Şüpheli User Agent Desenleri:
* Eksik veya Boş User Agent'lar: User agent dizesi göndermeyen istekler genellikle kötü niyetli botlardır.
* Anormal User Agent'lar: Gerçekçi olmayan tarayıcı/işletim sistemi kombinasyonları (örneğin, "Windows 98" veya "Chrome/1.0" gibi eski versiyonlar) veya anlamsız karakter dizileri.
* Bilinen Kötü Niyetli Bot User Agent'ları: İnternet üzerinde sıkça karşılaşılan kötü amaçlı botlara ait user agent listeleri bulunur. Bu listeleri takip edip sitenize gelen istekleri karşılaştırabilirsiniz.
* Aşırı Kısa veya Uzun User Agent'lar: Standart dışı uzunluklar da bir işaret olabilir.
* IP Adresi Tersine DNS Kontrolü: Belirli bir user agent ile gelen isteğin IP adresinin gerçekten o botun ait olduğunu iddia ettiği kuruluşa (örn. Google) ait olup olmadığını kontrol edebilirsiniz. Googlebot için, Google IP aralıklarını kontrol etmek veya tersine DNS araması yapmak mümkündür.
User agent dizesi tek başına yeterli değildir; botlar gerçek tarayıcıları taklit edebilir. Bu yüzden trafik analizi hayati önem taşır.
* Anormal İstek Oranları: Bir IP adresinden veya user agent'tan aşırı hızlı ve yoğun istekler gelmesi, bot aktivitesinin güçlü bir işaretidir.
* Çok kısa sürede çok sayıda sayfa görüntüleme.
* Belirli bir sayfaya veya kaynağa yönelik yoğun istekler.
* Sitede Gezinme Kalıpları:
* İnsan Benzeri Olmayan Gezinme: Menüleri, linkleri veya form alanlarını doğal olmayan bir sırayla veya hızda kullanma.
* JavaScript veya CSS Yoksayma: Botlar genellikle JavaScript ve CSS çalıştırmaz, bu da sitenin belirli öğelerini görmezden gelmelerine neden olabilir.
* Oturum Süresi: Çok kısa oturum süreleri (hemen çıkma) veya aşırı uzun oturum süreleri (meşru bir kullanıcının asla yapmayacağı kadar).
* Coğrafi Anormallikler: Sitenizin hedef kitlesiyle alakasız coğrafi bölgelerden gelen yoğun trafik.
* Giriş Denemeleri: Belirli bir sayfaya (örneğin, giriş sayfası) yönelik yoğun ve başarısız giriş denemeleri (kaba kuvvet saldırısı).
* Yorum Spam'i: Otomatik olarak gönderilen, alakasız veya reklam içerikli yorumlar.
Honeypot, insanlar tarafından görülmesi veya tıklanması zor, ancak botlar tarafından kolayca algılanabilen ve etkileşime girilebilen gizli bir web öğesidir (örneğin, gizli bir form alanı veya bir link). Bir bot bu honeypot ile etkileşime girdiğinde, onun bir bot olduğu anlaşılır ve engelleyebilirsiniz. Bu, özellikle spam botlarını tespit etmek için etkilidir.
Görsel veya etkileşimli bulmacalar kullanarak, bir isteğin insan mı yoksa bot mu olduğunu doğrulamak için kullanılır. Özellikle hassas formlar (iletişim, kayıt, yorum) için etkilidir. Google reCAPTCHA v3 gibi çözümler, kullanıcı deneyimini bozmadan arka planda risk analizi yapar.
Web sunucunuzun (Apache, Nginx) erişim günlükleri (access logs), bot tespitinde paha biçilmez bir kaynaktır. Bu günlükler, IP adresi, user agent, istek yapılan URL, yanıt kodu ve istek zamanı gibi detaylı bilgiler içerir. Günlük analiz araçları (GoAccess, Splunk, ELK Stack) veya özel betikler kullanarak:
* En çok istek yapan IP adreslerini.
* En çok istek yapan user agent'ları.
* Hata kodlarına (404, 500) yol açan yoğun istekleri.
* Belirli bir zaman dilimindeki ani trafik artışlarını kolayca tespit edebilirsiniz.
Cloudflare, Sucuri gibi hizmetler veya kendi sunucunuzda kurabileceğiniz ModSecurity gibi çözümler, gelen trafiği analiz eder ve bilinen bot imzalarına, anormal davranışlara veya belirli kurallara göre istekleri engeller. WAF'ler, web uygulama güvenliği için ilk savunma hattını oluşturur.
Tespit ettiğiniz botları ve şüpheli istekleri engellemek için çeşitli yöntemler mevcuttur. En iyi yaklaşım, bu yöntemleri bir kombinasyon halinde kullanmaktır.
`robots.txt` dosyası, arama motoru botları gibi *iyi niyetli* botlara sitenizin hangi bölümlerini tarayabileceklerini veya tarayamayacaklarını bildiren bir protokoldür. Ancak kötü niyetli botlar bu dosyayı genellikle görmezden gelir. Yine de, standart botlar için bir dizi kural tanımlamak başlangıç için faydalıdır:
```
User-agent: *
Disallow: /admin/
Disallow: /private/
```
Bu yöntemler, belirli user agent'ları, IP adreslerini veya IP aralıklarını doğrudan sunucu seviyesinde engellemenizi sağlar.
Apache için `.htaccess` Örnekleri:
* Belirli bir User Agent'ı Engelleme:
```apache
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "KotuBot/1.0" [NC]
RewriteRule .* - [F,L] # 403 Forbidden yanıtı döner
```
Birden fazla user agent'ı engellemek için `|` kullanabilirsiniz:
```apache
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "KotuBot/1.0|AnotherBadBot" [NC]
RewriteRule .* - [F,L]
```
* Belirli bir IP Adresini Engelleme:
```apache
Order Deny,Allow
Deny from 192.168.1.100
Allow from All
```
* Eksik User Agent'ları Engelleme:
```apache
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(null|empty)$ [NC]
RewriteRule .* - [F,L]
```
Nginx için Konfigürasyon Örnekleri:
* Belirli bir User Agent'ı Engelleme:
`nginx.conf` dosyanızda veya sanal host (server) bloğunda:
```nginx
if ($http_user_agent ~* "KotuBot/1.0|AnotherBadBot") {
return 403;
}
```
* Belirli bir IP Adresini Engelleme:
```nginx
deny 192.168.1.100;
```
Sunucu seviyesinde veya ağ seviyesinde güvenlik duvarları, belirli IP adreslerinden gelen tüm trafiği engellemek için kullanılabilir. Donanımsal güvenlik duvarları veya yazılımsal güvenlik duvarları (ufw, iptables) bu amaçla hizmet eder.
WAF'ler, botları engellemede en güçlü araçlardan biridir. ModSecurity gibi açık kaynaklı WAF'lar veya Cloudflare, Akamai gibi ticari çözümler, karmaşık kural setleri ve makine öğrenimi algoritmaları kullanarak bilinen ve sıfırıncı gün botlarını tespit edip engelleyebilir. Ayrıca, bu hizmetler DDoS koruması ve AdSense ihlallerine yol açabilecek geçersiz trafiği filtreleme konusunda da uzmandır.
Rate limiting, belirli bir süre içinde bir IP adresinden veya kullanıcıdan gelen istek sayısını kısıtlama yöntemidir. Bu, sunucunuza yönelik aşırı yüklenmeyi önler ve brute-force saldırılarını veya veri kazımayı yavaşlatır.
* Nginx için Rate Limiting:
```nginx
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s; # 10MB alanda IP başına saniyede 5 istek
server {
location / {
limit_req zone=mylimit burst=10 nodelay; # 10 istek fazlasına izin verir, gecikmesiz
# ...
}
}
}
```
* Uygulama Seviyesi Rate Limiting: PHP, Python gibi dillerde kendi uygulamanız içinde de bu tür kısıtlamalar uygulayabilirsiniz.
Bazı botlar JavaScript'i çalıştıramadığı için, sayfanıza küçük bir JavaScript kodu yerleştirmek ve bu kodun başarıyla çalışıp belirli bir token döndürmesini beklemek, botları elemek için kullanılabilir. Bu, kullanıcı deneyimini bozmadan arka planda çalışabilir.
Cloudflare gibi CDN hizmetleri, bot yönetimi ve DDoS koruması konusunda gelişmiş özellikler sunar. Tüm trafiğiniz CDN üzerinden geçtiği için, CDN sağlayıcısı şüpheli istekleri sitenize ulaşmadan engelleyebilir. Bu, sitenizin performansını artırırken güvenliğini de sağlar. Web sitesi performansını artırma yöntemleri hakkında daha fazla bilgi edinmek için ilgili makalemize göz atabilirsiniz.
* Çok Katmanlı Savunma: Tek bir stratejiye güvenmeyin. User agent analizi, davranışsal izleme, WAF ve rate limiting gibi birden fazla yöntemi birleştirerek güçlü bir savunma hattı oluşturun.
* Düzenli İzleme: Sunucu günlüklerinizi, analiz araçlarınızı ve WAF raporlarınızı düzenli olarak kontrol edin. Botlar sürekli geliştiği için, yeni tehditleri erkenden tespit etmek önemlidir.
* Yanlış Pozitiflere Dikkat Edin: Bazı durumlarda meşru kullanıcılar veya botlar (örn. arama motoru botları) yanlışlıkla engellenebilir. Engelleme kuralları oluştururken dikkatli olun ve sürekli izleme yaparak yanlış pozitifleri düzeltin.
* AdSense Politikalarını Anlayın: Google AdSense politikalarına uyum rehberi makalemizi okuyarak, AdSense geçersiz trafikle ilgili tüm detayları ve olası sonuçlarını öğrenin. Bu, hem sitenizi botlardan korumanıza hem de reklam gelirinizi güvence altına almanıza yardımcı olacaktır.
* Otomatik Çözümler: Daha büyük siteler için veya sürekli bot saldırıları alanlar için, özel bot yönetim çözümleri (DataDome, Imperva Bot Management) yatırım yapmaya değer olabilir.
Web sitenize gelen şüpheli veya bot user agent isteklerini tespit etmek ve engellemek, sitenizin sağlığı, performansı ve AdSense gelirlerinizin sürdürülebilirliği için hayati öneme sahiptir. Botlar sürekli olarak yeni taktikler geliştirdiğinden, bu süreç dinamik bir çaba gerektirir. Yukarıda belirtilen stratejileri uygulayarak, web sitenizi potansiyel tehditlerden koruyabilir, sunucu kaynaklarınızı optimize edebilir ve Google AdSense gibi reklam platformlarıyla olan ilişkinizi güvence altına alabilirsiniz. Unutmayın, proaktif bir yaklaşım, reaktif olmaktan her zaman daha etkilidir.