Yapay zekâ tarayıcıları: GPTBot ve ClaudeBot ziyaretlerinin ölçümü, robots.txt ve nginx ile engelleme

AI tarayıcısı, yapay zekâ şirketlerinin model eğitimi, yapay zekâ araması ve kullanıcı sorularını yanıtlamak için web sayfalarını topladığı bottur. Bu botların Nginx + Apache yapılandırmalı bir sunucuya ne sıklıkla geldiğini görmek için kaynak sunucunun 14 günlük erişim kayıtlarındaki UA'ları her şirketin yayımladığı IP aralıklarıyla karşılaştırdık: resmî aralıklardan gelen istekler toplam 18.605'ti; robots.txt'te ve nginx'te bunları engelleme ya da izin verme ayarlarını resmî belgelere göre derledik.
Dönem 4–17 Ekim 2026'dır; öndeki önbelleğin yanıtlayıp kaynak sunucuya hiç ulaşmayan istekler ve gerçek IP'si kaydedilmeyen istekler rakamlara dahil değildir.
1️⃣ AI tarayıcılarını ayırt etme: Erişim kaydındaki UA ve yayımlanan IP aralıkları
Kayıtta GPTBot olarak görünen her istek OpenAI'dan gelmez. UA, isteği yapanın kendisinin yazıp gönderdiği metindir; bu yüzden herkes GPTBot ya da ClaudeBot adıyla istek yapabilir.
Bu yüzden önce UA'ya göre bot adı başına istekleri sayıp ardından her şirketin yayımladığı IP aralıklarıyla karşılaştırıyoruz. Aşağıda bir günlük kayıtta sayılan yapay zekâ bot adları var.
grep -oiE '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Bytespider|CCBot|Amazonbot|meta-externalagent)/' access.log-20261018 | sort | uniq -c | sort -rn 2968 GPTBot/
2084 ClaudeBot/
622 meta-externalagent/
535 Amazonbot/
167 PerplexityBot/
99 OAI-SearchBot/
30 ChatGPT-User/
21 Claude-User/
17 Claude-SearchBot/
12 Meta-ExternalAgent/
10 Perplexity-User/
7 CCBot/Adın arkasına [/] koyarak saymak, Claude-SearchBot UA'sındaki claudebot@ iletişim adresi gibi ad olmayan metni dışarıda bırakır; büyük-küçük harfi farklı kaydedilmiş adlar ayrı sayılır. Ardından GPTBot isteklerinin hangi IP'lerden geldiğini ilk sütundan kontrol ediyoruz.
grep 'GPTBot/' access.log-20261018 | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 2524 74.7.x.x
428 185.152.x.x
12 34.53.x.x
1 74.7.x.x
1 172.182.x.xCDN ya da proxy üzerinden gelen isteklerde ilk sütunda ara sunucunun adresi yazar; bu satırları kayıt satırının sonundaki X-Forwarded-For sütunundaki adresle karşılaştırın. OpenAI, GPTBot'un IP aralıklarını JSON dosyası olarak yayımlıyor.
curl -s https://openai.com/gptbot.json -o gptbot.jsonBir IP'nin indirilen aralık dosyasında olup olmadığı Python'un standart modülü ipaddress ile kontrol edilir.
# inrange.py — IP'nin JSON aralık dosyasında olup olmadığını kontrol eder
import json, sys, ipaddress
nets = [ipaddress.ip_network(p.get('ipv4Prefix') or p.get('ipv6Prefix')) for p in json.load(open(sys.argv[1]))['prefixes']]
for a in sys.argv[2:]:
ip = ipaddress.ip_address(a)
print(a, 'IN' if any(ip in n for n in nets) else 'OUT')Kontrol edilecek IP'leri aralık dosyası adının arkasına yazın.
python3 inrange.py gptbot.json 74.7.x.x 34.53.x.x74.7.x.x IN
34.53.x.x OUT2.524 istek gönderen IP yayımlanan aralıkların içindeydi, 12 istek gönderen IP ise dışındaydı. Anthropic, Perplexity, Apple, Common Crawl, Google ve Bing de aynı biçimde aralık dosyası yayımlıyor; Amazonbot için ters DNS'in crawl.amazonbot.amazon ile bitip bitmediğine baktık. Havalimanındaki pasaport kontrolünün biniş kartındaki ada değil pasaporta bakması gibi.
14 günü bu şekilde karşılaştırdığımızda 70 IP'nin GPTBot, ClaudeBot ve Googlebot dahil 23 bot adını sırayla kullanarak 48.041 istek gönderdiği, bunların %57'sinin .php ya da .env gibi güvenlik açığı arayan adreslere gittiği görüldü. Google-Extended adını taşıyan 809 isteğin tamamı da bu gruptan geldi; Google belgelerine göre Google-Extended, HTTP isteklerinde kullanılan bir UA'sı olmayan, yalnızca robots.txt'e özel bir belirteçtir.
2️⃣ UA'ya göre ziyaret sayısı: 14 günlük ölçüm ve haftalık eğilim
Aşağıdaki tablo 4–17 Ekim arasındaki 14 günün istek sayılarıdır. Yayımlanmış aralığı olan botlarda yalnızca aralık içinden gelen istekleri saydık; aralıkla karşılaştırmadığımız botları taklitçi grubu çıkararak UA'ya göre saydık.
| Bot | Şirket | İstekler (14 gün) | Doğrulama yöntemi | Taklitçi grup |
|---|---|---|---|---|
| ClaudeBot | Anthropic | 10,305 | Yayımlanan IP aralıkları | 2,387 |
| PerplexityBot | Perplexity | 3,406 | Yayımlanan IP aralıkları | 2,262 |
| GPTBot | OpenAI | 2,546 | Yayımlanan IP aralıkları | 2,328 |
| OAI-SearchBot | OpenAI | 1,399 | Yayımlanan IP aralıkları | 2,347 |
| ChatGPT-User | OpenAI | 334 | Yayımlanan IP aralıkları | 2,409 |
| Applebot | Apple | 330 | Yayımlanan IP aralıkları | 2,372 |
| CCBot | Common Crawl | 275 | Yayımlanan IP aralıkları | 2,275 |
| Claude-User | Anthropic | 10 | Yayımlanan IP aralıkları | 2,192 |
| Claude-SearchBot | Anthropic | 0 | Yayımlanan IP aralıkları | 2,297 |
| Perplexity-User | Perplexity | 0 | Yayımlanan IP aralıkları | 2,235 |
| Meta-ExternalAgent | Meta | 14,384 | UA | 2,339 |
| Bytespider | ByteDance | 6,569 | UA | 2,336 |
| Amazonbot | Amazon | 3,493 | UA · ters DNS | 2,379 |
| Googlebot (karşılaştırma) | 10,545 | Yayımlanan IP aralıkları | 3,951 | |
| bingbot (karşılaştırma) | Microsoft | 13,477 | Yayımlanan IP aralıkları | 1,551 |
Yayımlanan aralıklardan doğrulanan AI tarayıcıları arasında en çok isteği 10.305 ile ClaudeBot yaptı; onu 3.406 ile PerplexityBot ve 2.546 ile GPTBot izledi. Claude-SearchBot ve Perplexity-User'ın yayımlanan aralıklardan gelen isteği 0'dı; bu adlarla gelen isteklerin tamamı taklitçi gruptandı.
Taklitleri ayıkladıktan sonra da kalan sorun, aralıkla karşılaştırılmayan botlardır. UA'ya göre en çok isteği 14.384 ile Meta-ExternalAgent yaptı, ama incelediğimiz Meta tarayıcı belgelerinde IP aralığı listesi yok; bu yüzden onu yalnızca UA'ya göre saydık.
Haftalara göre GPTBot 12 ile 3.383 istek arasında inip çıktı, ClaudeBot ise beş haftanın hepsinde 6.930–10.217 aralığında kaldı.
3️⃣ Hangi adresleri alıyorlar: Adres türleri ve yanıt kodları
AI tarayıcıları yalnızca yazı metnini almaz. 14 günde Meta-ExternalAgent isteklerinin %21'i görsellereydi; yayımlanan aralıklardaki GPTBot RSS beslemesini 476 kez, ClaudeBot site haritasını 314 kez istedi.
Diğer dil sürümlerinin adreslerini de toplarlar; yayımlanan aralıklara göre ClaudeBot'un 1.111 ve GPTBot'un 436 isteği diğer dillerdeki yazılara gitti. Yanıt kodları bir günlük kayıttan doğrudan sayılabilir.
grep 'ClaudeBot/' access.log-20261018 | awk '{print $9}' | sort | uniq -c | sort -rn | head -4 1357 200
665 301
31 304
21 404Tek bir günde bile 301'ler üçte bire yaklaşır; 14 günde yayımlanan aralıklardaki 10.305 ClaudeBot isteğinin 5.915'i (%57) 301'di. Bunların 4.736'sı sonunda [/] olmayan isteklerdi; WordPress [/] eklenmiş adrese 301 yanıtı verdi ve aynı yazı bir kez daha istendi.
4️⃣ robots.txt ayarı: Eğitim ve arama belirteçleri
robots.txt otomatik toplama yapan eğitim ve arama botları için uygundur, ama kullanıcı soru sorduğunda sayfa getiren botlar için uygun değildir. OpenAI ve Perplexity belgeleri, ChatGPT-User ve Perplexity-User isteklerine robots.txt kurallarının uygulanmayabileceğini belirtir.
Her şirket belirteçlerini amaca göre ayırır; OpenAI belgelerine göre bir belirteci engellemek diğerlerinin ayarını etkilemez. Aşağıda her şirketin resmî belgelerinde doğrulanan belirteçler var.
| robots.txt belirteci | Şirket | Amaç | Engellenirse (resmî belgeler) |
|---|---|---|---|
| GPTBot | OpenAI | Eğitim verisi toplama | Eğitimde kullanılmaması sinyali |
| OAI-SearchBot | OpenAI | ChatGPT araması | ChatGPT arama yanıtlarından çıkarılır (gezinme bağlantısı olarak yine görünebilir) |
| ChatGPT-User | OpenAI | Kullanıcı isteği | robots.txt kuralları uygulanmayabilir |
| ClaudeBot | Anthropic | Eğitim verisi toplama | Sonraki içerik eğitim verisinden çıkarılır |
| Claude-SearchBot | Anthropic | Arama kalitesini iyileştirme | Arama sonuçlarındaki görünürlük azalabilir |
| Claude-User | Anthropic | Kullanıcı isteği | Kullanıcı soruları için sayfa getirmez |
| PerplexityBot | Perplexity | Arama (eğitim değil) | Arama sonuçlarından çıkarılır |
| Perplexity-User | Perplexity | Kullanıcı isteği | Genellikle robots.txt'e uymaz |
| Google-Extended | Gemini eğitimi · grounding | Google Arama'daki görünürlüğü ve sıralamayı etkilemez | |
| Applebot-Extended | Apple | Temel model eğitimi | Apple aramasındaki görünürlüğü etkilemez |
| meta-externalagent | Meta | AI model eğitimi vb. | Disallow ile engellenir (belgelerdeki örnek) |
Google-Extended ve Applebot-Extended ayrı toplama botları değil, yalnızca robots.txt'te kullanılan belirteçlerdir. Toplamayı mevcut Google ve Apple tarayıcıları yapar; bu belirteçler yalnızca toplanan içeriğin AI model eğitiminde kullanılıp kullanılamayacağını belirler.
Yalnızca eğitim amaçlı toplamayı reddedip AI aramasındaki görünürlüğü koruyan robots.txt aşağıdaki gibidir; OpenAI, Perplexity ve Meta belgelerine göre değişikliklerin yansıması 24 saate kadar sürebilir.
# eğitim amaçlı toplamayı reddet
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: meta-externalagent
Disallow: /
# AI arama botlarına izin ver
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /Nginx + Apache sunucusundaki mevcut robots.txt'te AI botlarını hedef alan satır yok.
curl -s https://example.com/robots.txt# tüm arama motoru botlarına uygulanır
User-agent: *
# yönetici sayfalarını engelle (güvenlik)
Disallow: /wp-admin/
# yönetici işlevlerinden ajax iletişimine izin ver (normal çalışma için gerekli)
Allow: /wp-admin/admin-ajax.php
# eklendi: spam arama sonuçlarını engelle (SEO koruması)
Disallow: /search/
Disallow: /?s=
# site haritası yolunu belirt (daha hızlı dizine ekleme)
Sitemap: https://example.com/sitemap_index.xmlAI botu satırı olmayan bu durumda 14 günde yayımlanan aralıklardan gelen 2.546 GPTBot isteği 403 almadı; 2.090'ı 200, 432'si 301 ile yanıtlandı. Aynı dönemde kaynak kayıtlarında yayımlanan aralıklardan gelen robots.txt istekleri Googlebot'tan 36, ClaudeBot'tan 8, OAI-SearchBot'tan 6 taneydi; GPTBot ve PerplexityBot'tan hiç yoktu. Öndeki önbelleğin yanıtladığı robots.txt istekleri de kaynak kayıtlarında görünmez.
5️⃣ nginx'te AI tarayıcılarını engelleme ve sınırları
robots.txt ile engellense de kuralları okumayan istekler sunucuya kadar olduğu gibi gelir. nginx'te [map], UA'da bot adı varsa değişkene 1 koyar.
# http bloğu içi — UA'da eğitim botu adı varsa 1
map $http_user_agent $ai_train_bot {
default 0;
~*GPTBot/ 1;
~*ClaudeBot/ 1;
~*Bytespider 1;
~*CCBot/ 1;
}server bloğunda bu değişken 1 ise 403 döndürün.
# server bloğu içi
location / {
if ($fake_searchbot) {
return 403;
}
if ($ai_train_bot) {
return 403;
}
# mevcut ayarlar aşağıda
}UA ile engelleme yalnızca ada baktığından, taklit istekler aynı adı kullanırsa gerçek botla birlikte engellenir, adı değiştirirse geçer. İzin verdiğiniz bir arama botunun adını ödünç alan istekler ancak yayımlanan IP aralıklarıyla karşılaştırılarak ayıklanır.
OAI-SearchBot'a izin verip yalnızca aralık dışından gelen aynı adlı istekleri reddetmek için [geo] ile yayımlanan aralıkları değişkene çevirin ve UA ile birlikte karşılaştırın.
# http bloğu içi — OAI-SearchBot yayımlanan aralıkları (searchbot.json'un tamamını koyun; aşağıda yalnızca iki satır)
geo $oai_search_net {
default 0;
104.210.140.128/28 1;
135.234.64.0/24 1;
}
map $http_user_agent:$oai_search_net $fake_searchbot {
default 0;
~*OAI-SearchBot/.*:0$ 1;
}Önde CDN ya da proxy varsa [geo]'nun gördüğü adres ara sunucunun adresidir; bu yüzden karşılaştırmadan önce real_ip ile gerçek IP'yi geri getirin. Anthropic belgeleri, IP adresiyle engellemenin botun robots.txt'i okumasını da engellediğini ve ret sinyalinin düzgün iletilmeyebileceğini belirtir.
Bu ayarı çalışan sunucuya koymadık; yalnızca deneme ayar dosyasıyla sözdizimini kontrol ettik.
nginx -t -p ./ -c nginx-test/nginx.confnginx: the configuration file ./nginx-test/nginx.conf syntax is ok
nginx: configuration file ./nginx-test/nginx.conf test is successfulAyar örneğinin yalnızca sözdizimi kontrol edildiği için 403 yanıtlarını doğrulamadık; 14 günlük kayıtlara göre OAI-SearchBot adını taşıyan 3.937 isteğin 2.347'si yayımlanan aralıkların dışındaki taklitçi gruptan geldi.
6️⃣ AI tarayıcılarından ücret alma: Pay per crawl ve Web Bot Auth
Pay per crawl, site sahiplerinin her bölge için fiyat belirleyip her AI tarayıcısı isteğinden ücret almasını sağlayan bir Cloudflare AI Crawl Control özelliğidir. 18 Ekim 2026'da incelenen resmî belgelere göre özel beta aşamasındadır ve ödemeyi satış aracısı (Merchant of Record) olarak Cloudflare işler.
Ödeme niyetini istek başlığında gönderen tarayıcılar 200 yanıtı alır, diğerleri fiyatı içeren [402 Payment Required] yanıtı alır. Aynı tarayıcı WAF ya da Bot Management ile engellenirse engelleme kuralı ücretlendirmenin önüne geçer.
Ücret ödemek isteyen tarayıcılar kimliklerini Web Bot Auth ile kanıtlamalıdır. Web Bot Auth'ta bot isteklerini Ed25519 anahtarıyla imzalar ve açık anahtarını [/.well-known/http-message-signatures-directory] adresinde yayımlar; böylece alan taraf imzayı doğrulayabilir.
İmza [Signature-Agent], [Signature-Input] ve [Signature] olmak üzere üç başlıkla iletilir ve botu IP aralıkları yerine şifreli imzayla tanımlar. Kaynak sunucunun varsayılan erişim kaydı biçimi istek başlıklarını kaydetmediğinden, 14 günde gelen AI tarayıcısı isteklerinde imza olup olmadığını kontrol etmedik.
14 günde yayımlanan IP aralıklarından doğrulanan 18.605 AI tarayıcısı isteği, aynı dönemde Googlebot ve bingbot'un yayımlanan aralıklardan gönderdiği 24.022 isteğin %77'sine denk geldi. robots.txt'e eğitim belirteçleri eklenip eklenmeyeceğine taklitler çıkarılmış rakamlarla karar verilir; haftalık kayıt sayımına aralık karşılaştırması eklerseniz eğilimi izleyebilirsiniz.
🔢 SSS & önerilen içerikler




ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.