Botları nasıl tespit ederim; iyi botlara (Googlebot vb.) izin verip kötüleri engelleyebilir miyim?
Kısa cevap
Evet. Bot Type koşulu isteğin User-Agent başlığını kategorilere (ör. Malicious bots, Search engines) göre tanır; istenmeyen kategoriler Block, Quarantine ya da Advanced CAPTCHA aksiyonuna bağlanır. User-Agent taklit edilebildiği için gerçek arama motoru botları Network Type Group koşulunun Verified Bot grubuyla ayrılır; bu grup User-Agent'a değil kaynak adresin ağ tipi verisine bakar. Bot/DDoS koruması açıksa Bot Protection istemcileri 0–100 arasında skorlar ve Trust Verified Bots seçeneği (varsayılan açık) doğrulanmış botları aksiyon kurallarından muaf tutar.
Sorun: Kötü Botlar İyi Botlarla Karışıyor
İçerik toplama yazılımları (scraper), açık tarayıcılar ve kaba kuvvet araçları engellenmek istenirken arama motoru botlarının siteye erişmeye devam etmesi gerekir. Kötü botlar kendilerini çoğu zaman Googlebot gibi tanıtır; yalnızca User-Agent başlığına bakan bir kural, Googlebot taklidi yapan bir aracı gerçek arama motorundan ayıramaz.
Çözüm: Dört Yöntem
Yöntemler birbirinin alternatifidir; Bot/DDoS koruması açık bir vService'te Yöntem 1 ile Yöntem 2 birlikte de kullanılabilir.
| Durumunuz | Uygun yöntem |
|---|---|
| Bot kategorisine göre engelleme ve sahte arama motoru botlarını ayırma | Yöntem 1: Bot Type + Network Type Group + Block |
| Davranışa ve altyapıya dayalı skor; Bot/DDoS koruması lisanslı | Yöntem 2: Bot/DDoS → Bot Protection |
| AGS açık vService; skora göre AGS politikası | Yöntem 3: AGS → Bot Score politikası |
| Yöntem 1 ve 2'yi komut satırından kurmak | Yöntem 4: WEB-CLI |
Yöntem 1: Bot Type + Network Type Group + Block Önerilen
- Nasıl çalışırBot Type User-Agent başlığının bot kategorisini, Network Type Group = Verified Bot kaynak adresin doğrulanmış bot ağlarına ait olup olmadığını kontrol eder. Kötü kategoriler doğrudan, "arama motoru gibi görünen ama doğrulanmamış" istekler ikinci bir koşul grubuyla engellenir.
- Nerede açılırLoad Balancer → Conditions · Load Balancer → Actions → Block
- Gereksinim Yok
- vService tipi HTTP (Bot Type koşulu ve Block aksiyonu yalnızca HTTP vService'te kullanılır)
Adım adım yapılandırma
Load Balancer → Conditions → Add ile koşul formu açılır (nasıl eklenir).
Condition Name = kotu-bot, Criteria = Bot Type seçilir; Bot Type listesinde Malicious bots ve Security checker (Nmap Scripting Engine, sqlmap/, TLSProbe etc.) işaretlenir. Bir koşulda seçilen kategorilerden herhangi biri eşleşirse koşul sağlanır.
Koşul Add & Repeat ile kaydedilir; form bir sonraki koşul için açık kalır.
Condition Name = arama-motoru-ua, Criteria = Bot Type, Bot Type listesinde Search Engines (Googlebot, Yahoo, bingbot etc.) işaretlenir.
Koşul Add & Repeat ile kaydedilir.
Condition Name = dogrulanmis-bot, Criteria = Network Type Group, Network type group name listesinde Verified Bot seçilir.
Koşul Add ile kaydedilir ve form kapanır.
Load Balancer → Actions → Add ile aksiyon formu açılır.
Action Name = bot-engelle, Action Type = Block seçilir; Execution Level varsayılan On Request, Deny Type varsayılan Standard ve Status Code varsayılan 403 olarak bırakılır.
Conditions alanında ilk grupta kotu-bot seçilir. + ile ikinci grup eklenir; bu grupta arama-motoru-ua ile dogrulanmis-bot koşulunun olumsuz hâli (!dogrulanmis-bot) and ile birleştirilir. Gruplar arası operatör or bırakılır. Sonuç: "kötü bot ya da (arama motoru gibi görünen ve doğrulanmış bot ağından gelmeyen)" istekler engellenir (Birden fazla koşulu AND / OR ile nasıl birleştiririm? · Bir koşulu olumsuz ("şu değilse") olarak kullanabilir miyim?).
Aksiyon Add ile kaydedilir.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit ile düzenleme formu açılır.
Details → Actions alanında bot-engelle seçilir. Aksiyon vService'e eklenmedikçe çalışmaz.
Form Save ile kaydedilir; kural kaydedildiği anda devreye girer. Cluster'da değişiklik varsayılan olarak eş cihaza otomatik aktarılır; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Komut: curl -s -o /dev/null -w '%{http_code}' -A 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' https://www.example.com/
403vService'in HTTP Logs ekranında arama motoru adreslerinden gelen isteklerin yanıt kodlarına bakılır.
200Yöntem 2: Bot/DDoS → Bot Protection
- Nasıl çalışır İstemci davranışı, tarayıcı sinyalleri ve altyapı faktörleriyle 0–100 arası bir bot skoru hesaplanır; Action Rules skoru eşiklerle karşılaştırıp aksiyon uygular. Varsayılan kurallar HTTP'de skor 90 ve üzerine Block (403), 75 ve üzerine Show captcha uygular.
- Nerede açılır Left Monitor Panel → Bot/DDoS Protected vServices → vService → Bot/DDoS Management → Bot Protection kartı
- Gereksinim Bot/DDoS protection lisansı; vService'te L7 DDoS & Threat Protection açık
- vService tipi HTTP · L7 TCP (L7 TCP'de Bot Protection varsayılan olarak Off gelir; meydan okuma ve engelleme yerine sessiz düşürme ve karantina kullanılır)
Adım adım yapılandırma
vService'te koruma açık değilse vService düzenlenir, Details altındaki L7 DDoS & Threat Protection kutusu işaretlenip Save ile kaydedilir (iki yol). Koruma açıldığında IP Reputation Protection Active modunda başlar ve bazı istekleri hemen engelleyebilir (başlangıç modları).
Left Monitor Panel → Bot/DDoS Protected vServices → vService → Bot/DDoS Management sekmesinde Bot Protection kartının Edit bağlantısı tıklanır.
Bot Protection alanında Active seçilir (HTTP'de varsayılan Monitor; Monitor'de skorlar yalnızca kaydedilir, aksiyon uygulanmaz). Trust Verified Bots açık bırakılır; doğrulama User-Agent'a değil, botun geldiği adres aralığına bakılarak yapılır.
Pencere Edit butonuyla kaydedilir; ayrı bir dağıtım adımı yoktur. Skor eşikleri ve aksiyonlar gerekiyorsa kartın Action Rules kutusundan ayrıca düzenlenir.
Doğrulama
Bot/DDoS Event Logs → Bot sekmesi açılır.
İstemci skoru ve uygulanan aksiyonYöntem 3: AGS → Bot Score Politikası
- Nasıl çalışır AGS politikası, vService'te hesaplanan bot skorunu Bot Score Threshold ile karşılaştırır; eşiği aşan istemciye politikanın aksiyonunu (ör. Captcha ya da Deny) uygular.
- Nerede açılırAGS → Protection Policies → Bot Protection Policies
- Gereksinim AGS lisansı ve vService'te AGS açık. vService'te Bot Protection açıksa skor onun ayarlarıyla hesaplanır; açık değilse AGS açık vService için skor Monitor modunda kendiliğinden hesaplanır.
- vService tipi HTTP
Adım adım yapılandırma
vService'te AGS açık değilse açılır (iki yol); AGS açıldığında varsayılan akış kullanıcıları reddettiği için önce akış hazırlanır: WAF, L7 DDoS & Threat Protection ve AGS'yi bir vService'e nasıl bağlarım?
AGS → Protection Policies → Bot Protection Policies → Add ile politika formu açılır.
Bot Protection Policy Name girilir, Trigger Type = Bot Score seçilir; Bot score threshold (varsayılan 60) ve Action (ör. Captcha ya da Deny) belirlenir.
Politika Add ile kaydedilir. Hazır Bot Score profilleri de kullanılabilir (hazır profiller).
Left Monitor Panel → AGS-Enabled vServices → vService → AGS Management sekmesinde Protection bölümünün Edit bağlantısı tıklanır.
Açılan Edit / Protection penceresinde Bot Protection Policies alanında politika seçilir.
Accept tıklanır; politika AGS Management sekmesindeki Bot Protection kutusunda listelenir.
Doğrulama
AGS Management sekmesindeki Protection bölümünün Bot Protection kutusuna bakılır.
Politika adı ve cümlesi listelenirYöntem 4: WEB-CLI
- Nasıl çalışır Yöntem 1'deki koşullar ve Block aksiyonu
lb condition/lb actionile, Yöntem 2'deki Bot Protectionlb threat-protectionile kurulur. - Nerede açılır TR7 WEB-CLI →
lb condition·lb action·lb service·lb threat-protection - Gereksinim WEB-CLI erişimi; Bot Protection için Bot/DDoS protection lisansı
- vService tipi HTTP
Adım adım yapılandırma
WEB-CLI her satırı ayrı bir komut olarak çalıştırır; komutlar tek satırda yazılır.
İstemciyi tanıyan ölçütler: bad = Malicious bots, securityChecker = Security checker, search = Search engines, verified_bot = Verified Bot.
lb condition add criteria bot --botType.0 bad --botType.1 securityChecker --name kotu-bot
lb condition add criteria bot --botType.0 search --name arama-motoru-ua
lb condition add criteria nettype_group --nettypeGroup.0 verified_bot --name dogrulanmis-botAksiyonun --cond alanı koşulun adını değil kimliğini ister. lb condition add başarılı olduğunda çıktı vermez; kimlikler aşağıdaki listenin id sütununda görülür (lbConditions- ile başlar).
lb condition list--cond ifadesi tırnak içinde yazılır: or / and birleştirir, ! olumsuzlar, en fazla bir parantez düzeyi kullanılır (engelleme aksiyonları).
lb action add type deny name bot-engelle --cond "<kotu-bot-kimliği> or (<arama-motoru-ua-kimliği> and !<dogrulanmis-bot-kimliği>)"rules.0, rules.1… satırları vService'e bağlı aksiyonları gösterir.
lb service show <vService>Yeni aksiyon ilk boş indekse, yani mevcut aksiyon sayısına yazılır. Örnekte vService'te iki aksiyon (rules.0, rules.1) olduğu için --rules.2 kullanılır; dolu bir indekse yazmak oradaki aksiyonun yerine geçer.
lb service update id <vService> --rules.2 bot-engelleKoruma kapalıysa önce açılır; ardından Bot Protection Active (true) yapılır (bot koruması).
lb service update id <vService> --threatProtection true
lb threat-protection update id <vService> --botProtection true --botTrustVerifiedBots trueDoğrulama
Komut: lb service show <vService>
rules.2 satırında bot-engelleSık Yapılan Hatalar
- Yalnızca User-Agent'a güvenmek. Bot Type koşulu User-Agent başlığına bakar ve bu başlık taklit edilebilir (güvenlik notu); arama motorlarını doğrulamak için Verified Bot grubu kullanılır.
- Bütün bot kategorilerini engellemek. Monitoring, Feed ve Social media kategorileri izleme servislerini ve bağlantı önizlemelerini de kapsar; yalnızca istenmeyen kategoriler seçilir.
- Bot Protection'ı Monitor'de bırakmak. Monitor modunda skorlar yalnızca kaydedilir, aksiyon uygulanmaz.
--condalanına koşul adını yazmak. WEB-CLI'da--condkoşul kimliği bekler; ad yazılırsa aksiyon var olmayan bir koşula bağlanır.- Engel yerine doğrulama gerektiğini gözden kaçırmak. Şüpheli istemcilere engel yerine CAPTCHA göstermek için: CAPTCHA ile insan doğrulaması yapabilir miyim?
Dokümantasyonda nasıl yapılır
