Son zamanlarda, web trafiğini izlemek ve botları ayırt etmek üzerine çalışmalar önem kazandı. Laravel uygulamanızda analitik paketi kullanarak gerçek kullanıcıları botlardan ayırmak, verilerinizi daha temiz ve güvenilir hale getirmek için kritik bir adım. Bu makalede, botları tespit etmenin yollarını inceleyeceğiz ve nasıl etkili bir şekilde filtreleme yapabileceğimizi öğreneceğiz.
<h2>
Bölüm 1: Paranoia Skoru (Scoring System)
</h2>
<p>İlk başta, internetin basit ikili bir dünyadan oluştuğunu düşündüm. Eğer User-Agent "Googlebot" dediyse, o bir robottu; "Mozilla/5.0" dediyse, o bir insandı. Ancak 2026 yılında bu bakış açım değişti. Artık en basit spam botları bile, son Chrome sürümünü bu kadar ustaca taklit edebiliyordu ki standart doğrulama yöntemleri çaresiz kalıyordu.</p>
<p>Bu durumu fark ettikten sonra, analitik paketimi bir dijital dedektif haline getirdim. Artık anında yargılama yapmaktansa, bir "şüphe dosyası" oluşturma süreci uyguluyorum.</p>
<h3>
Gerçek zamanlı sorgulama protokolü
</h3>
<p><strong>"Hiçbir yerden belirdi" (+35 puan):</strong> Eğer bir istek, bir iç sayfaya (örneğin, doğrudan /checkout) Referer başlığı olmadan geliyorsa, bu çok şüpheli. Çünkü normal insanlar genellikle bağlantılardan geçerek gelmeli.</p>
<p><strong>"Dijital Paleozoik" (+60 puan):</strong> Eğer logs'larımda Windows XP kullanan bir kullanıcı görürsem, bu eski bir botnetin geldiğini anlarım. Bu büyük bir kırmızı bayraktır ve hemen şüpheli olarak işaretlenir.</p>
<p><strong>"Cloud Residency" (+100 puan):</strong> Eğer IP kontrolü, kullanıcının Amazon veya DigitalOcean gibi bir veri merkezinde bulunduğunu gösteriyorsa, bu durumda hemen bot olarak değerlendirilir.</p>
<p>Bu "şüpheli kart"taki toplam puan 70'i geçerse, ziyaret resmen "insan dışı" olarak işaretlenir.</p>
<h2>
Bölüm 2: Snitch Ports ve Referer Döngüsü
</h2>
<p>Bazı botlar, o kadar absürt hata yapıyor ki, sanki script geliştiricisi gölgelerden bana göz kırpıyor gibi geliyor. Versiyon 1.3.0'da, otomatik "misafirleri" avlamak için iki tuzak oluşturdum.</p>
<h3>
1. Port Leak: Kontrol Panelinden Gelen Casus
</h3>
<p>Bir müşteri dükkânınıza gelsin ve kimliği "cPanel'de Stajyer Hacking" yazsın. Şüphelenmekte haklısınız, değil mi? Gerçek kullanıcılar genellikle Google'dan veya sosyal medyadan gelirken, zafiyet tarayıcıları hijacked hostinglerden veya kontrol panellerinden çalışır.</p>
<p>Referer başlığında bir <code>Referer: https://some-shadow-site.com:2083</code> ifadesi görüyorsanız, bu bir dead giveaway'dir. Bu tür "snitch ports" (cPanel için <code>:2083</code>, Plesk <code>:8443</code> ve Webmin <code>:10000</code>) 100 puan ile değerlendirilir.</p>
<h3>
2. Referer Döngüsü: Turing Testini Fails
</h3>
<p>Bazı botlar, "birimiz" gibi görünmeye çalışıyor. Referer başlığı eksikse, bu durum şüpheli. Bu yüzden, bazen referer değerini simüle etme girişiminde bulunuyorlar. Ancak bazen bunu yaparken çok komik bir hata yapıyorlar.</p>
<p>Eğer bir sayfa, ilk ziyareti sırasında kendisini referer olarak gösteriyorsa, bunun bot olduğu kabul edilir. Sistemim bu durumu hemen tespit ederek 50 puan ile cezalandırır.</p>
<h3>
Kodda nasıl göründüğü
</h3>
<p>İşte burada, bu "sorgulama" aşaması için gerekli olan yapılandırma kesiti:<br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code><span class="cd">/ - ŞÜPHELİ REFERER PORTLARI
Teknik portlar (cPanel, Plesk vb.)
Gerçek kullanıcılar bu portlardan gelmez.
*/
‘port_leak’ => [
2082, 2083, // cPanel
2086, 2087, // WHM
8443, 8880, // Plesk
2222, // DirectAdmin
10000, // Webmin
],
‘weights’ => [
// Teknik kontrol panellerinden gelen trafik
‘port_leak’ => 100,
// Referer döngüsü tespiti (URL == Referer)
‘referer_loop’ => 50,
],
Bölüm 3: Snowball Effect — Geçmişe Dönük İntikam
Önceki yöntemler sınır kapısındaki “sınır kontrolü” ise, Snowball Effect, iç güvenlik ve arşivlere erişim gücü gibidir. Bu, 1.3.0 sürümündeki en güçlü ve en sevdiğim özelliklerden biri.
Bir bot, ilk üç sayfada mükemmel davranabilir, ama dördüncü sayfada hata yapınca, sistem otomatik olarak geçmişteki tüm ziyaretlerini bot olarak işaretler. Bu, analitiklerinizi temizlemek için etkili bir yöntem sağlar.
Geçmişe dönük temizleme
/
Snowball Effect (Geçmişe Dönük Temizlik)
Yeni tanımlanan botun geçmişteki oturumlarını otomatik olarak işaretler.
*/
'cumulative' => [
'enabled' => true,
'history_window_days' => 60,
],
İstatistikleriniz geçmişe dönük olarak temizlenir. Artık “çöp” tıklamaları, istatistiklerinizden kaybolur.
Bölüm 4: UA Dedektörü
Botların gönderdiği başlıkların nasıl çalıştığını anlamak önemlidir. İşte logslarımdan iki klasik örnek:
“Alçakgönüllü Otomator”
python-requests/2.31.0 veya GuzzleHttp/7
Neden bir bot: Bu istek kütüphaneleri, açıkça bot olduklarını belirtir.
/
- ŞÜPHELİ KULLANICI AGENT'LER (Yaygın kütüphane veya araçlar)
*/
'suspicious_ua' => [
'python-requests',
'guzzlehttp',
'go-http-client',
'curl',
...
],
“Unutkan Taklitçi”
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Neden bir bot: Windows NT 6.1 ve IE 9’un kullanılması 2026’da çok şüpheli. Bu ya eski bir bilgisayardır ya da eski bir botnetin kalıntısıdır. Bu durumda obsolete_os ile cezalandırılır:
/
Eski OS sürümleri (Windows XP, 2000 vb.)
*/
'obsolete_os' => [
'Windows NT 5',
'Windows NT 6',
'Mac OS X 10',
],
Kod Uygulaması: Ağırlıkları Ayarlama
Ve işte sistemin kalbi burada—config/visit-analytics.php dosyasında.
/* Puanlama Ağırlıkları (Şüphe Matriksi) */
'weights' => [
// Referer olmadan iç sayfaya doğrudan giriş (bot davranışı)
'no_referer' => 35,
// Referer'ı güncel URL olarak ayarlayarak sistemi kandırmaya çalışmak
'referer_loop' => 50,
// Eğer IP bir veri merkezine aitse (AWS, Hetzner vb.) — anında %100 bot
'datacenter' => 100,
// İnsan kapasitelerini aşan tıklama hızı
'speed_anomaly' => 50,
// Bir "honeypot" ziyaret (örneğin, /.env veya /wp-admin)
'honeypot' => 100,
// Referer'daki o garip portlar (cPanel, Plesk)
'port_leak' => 100,
],
Honeypot’un Çalışma Şekli
Günün sonunda, logslarınızı temizlemenin en hızlı yolu, normal bir kullanıcının asla ziyaret etmeyeceği yolları eklemektir:
'honeypot_paths' => [
'/.env',
'/wp-admin',
'/.git',
'/bitrix',
'/config.php',
'/phpinfo.php',
],
Bir script /.env adresine girdiğinde, is_bot = true diye işaretlenir ve maksimum bot_score ile değerlendirilir.
Bölüm 5: Gelecek Ne? (Filament Duyurusu)
Veri toplamak ve filtrelemek sadece yarısıdır. Gerçek başarı, ham verilerde değil, güzel ve sezgisel grafiklerde sonuçları görmekte yatar. Bot eğrisinin düştüğünü görmek, bunun yanında gerçek kullanıcı eğrisinin sürekli yükseldiğini izlemek son derece tatmin edicidir.
Şu anda, tüm bu “ayna sihirlerini” görsel hale getirmek üzerinde çalışıyorum. Bir sonraki büyük sürümde, Filament ile tam entegrasyon planlıyorum.
Beklentiler
Gerçek zamanlı Kontrol Paneli: Sitenizin “nabzını” gerçek zamanlı olarak gösteren bir widget seti. Hangi botların “nötralize” edildiğini göreceksiniz.
İnteraktif Bot Haritası: Saldırıların ve ziyaretlerin görselleştirilmesi.
Bu sayede, Palo Alto tarayıcılarının nereden geldiğini ve “dürüst” arama motorlarının nerede olduğunu görebileceksiniz.
Artık admin panelinde ağırlık yönetimiyle ilgili işlemleri yapmak için .php dosyalarını düzenlemeyeceksiniz. Ağırlıkları ayarlamak, yeni şüpheli portlar eklemek ya da honeypot listelerini güncellemek için birkaç tıklama yeterli olacak.
Doğru analitiklere ulaşmak bir maraton, sprint değil. O yüzden dikkatle takip edin; güncellemeler tatlı, teknik olarak şık ve verilerinin temizliğini önemseyenler için inanılmaz derecede faydalı olacaktır.
Epilog: Temizlik Bir İnanç.
Sonuç olarak, davranış analizi ve port kontrollerini uyguladıktan sonra, trafik grafiklerim önemli ölçüde azaldı. Şimdi zincirimi kırmış durumdayım ve tam anlamıyla temiz verilere sahibim.
Logslar sadece metin değil, bir imzadır. Laravel paketi artık bir insanın el yazısı ile makine ile basılan bir yazı arasındaki farkı ayırt edebiliyor.
Kaynak: Orijinal Makale


