Burada iki farklı iş var ve sürekli birbirine karıştırılıyor. Politikayı bildirmek robots.txt dosyasının yaptığı şeydir: iyi davranan tarayıcılara neye izin verdiğinizi söyler ve büyük işletmeciler buna uyar. Politikayı uygulatmak ise kenarda — web sunucunuzda ya da CDN’inizde — bir kural gerektirir; çünkü isimsiz bir kazıyıcı sizin robots.txt dosyanızı tam da kendi seçtiği kadar dikkatle okur.

İkisini de, bu sırayla yapın ve hangisini yaptığınızı bilin. Kenarda engelleyip robots.txt yayınlamayan bir site, kibar olan her tarayıcıyı zor yoldan reddeder ve kimseye nedenini söylemez.

Birinci katman: politikayı bildirin

Önce doğru yapılması gereken bu, çünkü *istediğiniz* tarayıcıların da okuduğu katman bu. Önemli olan sözdizimi değil: "yapay zekâ tarayıcısı" tek bir şey değil. Yalnızca OpenAI üç tane çalıştırıyor: GPTBot eğitim verisi topluyor, OAI-SearchBot ChatGPT’nin kaynak gösterdiği dizini kuruyor, ChatGPT-User ise biri o an istediği için sayfanızı getiriyor. Üçünü birden reddeden tek bir kural, neredeyse kimsenin bilerek vermediği bir karardır.

# Eğitimi reddet. Ziyaretçi gönderebilecek her şeyi açık bırak.
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: CCBot
Disallow: /

User-agent: *
Allow: /

Ücretsiz üretici bu dosyanın tam sürümünü yazıyor: izlediğimiz her tarayıcıyı adıyla anıyor ve siz kopyalamadan önce her reddin neye mal olduğunu yazıyor. Her tarayıcının kendi sayfası tam belirteci ve işletmecisiyle birlikte duruyor.

Bir tarayıcı, kendisini adıyla anan tek ve en özel User-agent grubuyla eşleşir; diğer bütün grupları yok sayar. Kendi grubunda adı geçen bir bot bu yüzden User-agent: * bloğunuzu — korumak istediğiniz Disallow satırları dâhil — tamamen yok sayar. Bir robots.txt dosyasının göründüğünün tersini yapmasının en yaygın yolu budur.

İkinci katman: kenarda uygulatın

Gereksiniminiz bir tarayıcının sayfayı gerçekten okuyamaması ise, kural uygulamanın önünde durmalıdır. Aşağıdaki üç yapılandırma da user-agent dizesiyle eşleşir; yani kibar bir tarayıcının gönderdiği, kararlı bir kazıyıcının ise taklit ettiği şeyle. Bu, içeriğinizi almanın maliyetini yükseltir; imkânsız kılmaz.

nginx

map $http_user_agent $ai_training_bot {
    default              0;
    "~*GPTBot"           1;
    "~*ClaudeBot"        1;
    "~*Google-Extended"  1;
    "~*CCBot"            1;
    "~*Bytespider"       1;
}

server {
    # ...
    if ($ai_training_bot) {
        return 403;
    }
}

Zincirleme if blokları yerine map kullanın: server bloğu içindeki if her istekte değerlendirilir ve içine güvenle ne konabileceği konusunda meşhur biçimde huysuzdur; map ise yapılandırma yüklenirken bir kez çözülür.

Apache

<IfModule mod_setenvif.c>
  SetEnvIfNoCase User-Agent "GPTBot"          ai_training
  SetEnvIfNoCase User-Agent "ClaudeBot"       ai_training
  SetEnvIfNoCase User-Agent "Google-Extended" ai_training
  SetEnvIfNoCase User-Agent "CCBot"           ai_training

  <RequireAll>
    Require all granted
    Require not env ai_training
  </RequireAll>
</IfModule>

Cloudflare

WAF özel kuralı, ifade düzenleyicisi, eylem Block:

(http.user_agent contains "GPTBot") or
(http.user_agent contains "ClaudeBot") or
(http.user_agent contains "Google-Extended") or
(http.user_agent contains "CCBot")

Cloudflare ayrıca tek tıkla "Block AI Scrapers and Crawlers" anahtarı sunuyor. Kullanışlı ve kaba: açmadan önce güncel tarayıcı listesini okuyun, çünkü bir sağlayıcı için yapay zekâ kazıyıcısı ne demek ile sizin için ne demek farklı sorulardır ve anahtar bunu sormaz.

Bu yazının asıl konusu olan hata

Bu amaçla yapılandırmadığınız bot koruması, istediğiniz tarayıcıları çoktan reddediyor. 292 halka açık siteyi taradık ve 72 of 292 (25%) tanesi sıradan bir arac isteğine içeriği yerine bir ara sayfa, doğrulama ya da engel sayfası veriyor. 45 tanesi de doğrudan reddediyor.

25%site, yapay zekâ aracına sayfası yerine bot duvarı gösteriyor

Bunların neredeyse hiçbiri bilinçli değil. Yönetilen bir WAF kuralı, bir bot savunma modu, kazıyıcılar için ayarlanmış bir hız sınırlayıcı — her biri kendi işini yapıyor ve sizi kaynak göstermek üzere olan asistan bir doğrulama sayfası alıyor. Günlüklerinizde hata olarak hiçbir şey görünmüyor. Kaybettiğiniz trafik, geldiğini hiç görmediğiniz trafik.

Yani iş sırası şu: politikaya karar verin, robots.txt içinde yayınlayın, gerçekten ihtiyaç duyduğunuz kısmı kenarda uygulatın — ve sonra bir aracın gerçekte ne aldığını kontrol edin, çünkü genellikle reddeden katman, hiç dokunmadığınız katmandır.

npx axray-cli siteniz.com --probe

--probe, kaynağınızı sırayla her gerçek tarayıcı user-agent’ıyla çeker; böylece yapılandırmanızın ne demesi gerektiğini değil, her birine gerçekte ne sunulduğunu bildirir. Bot koruması yapay zekâ asistanlarını nasıl engelliyor bu hatanın uzun sürümü.

Engellemek neyi sağlamaz

  • Sizin üzerinizde çoktan eğitilmiş bir modelden sizi çıkarmaz. Bu kurallar bundan sonrası için geçerlidir.
  • Metnin başka bir yoldan bir modele ulaşmasını durdurmaz — sendikasyon kopyası, ekran görüntüsü, sayfanızı sohbet penceresine yapıştıran biri.
  • User-agent’ını taklit eden bir kazıyıcıyı durdurmaz. Buradaki her yöntem, istemcinin göndermeyi seçtiği bir dizeyle eşleşir.
  • Google aramasını etkilemez. Googlebot ve Google-Extended ayrıdır: ilki arama, ikincisi eğitim içindir. İkincisini reddetmek sıralamanızı etkilemez.

Sitenizin şu anda her yapay zekâ tarayıcısına gerçekte ne sunduğunu görün — bot korumanızın size söylemeden reddettikleri dâhil.