Robots.txt Ayrıştırıcı

RFC 9309'a göre (Robots Dışlama Protokolü, 2022'de standartlaştırıldı) bir tarayıcının okuduğu gibi bir robots.txt yapıştırıp okuyun: kullanıcı-aracı grupları, Allow/Disallow kuralları, site haritaları ve bilinmeyen yönergeler, hepsi düzenli biçimde gösterilir — ayrıca klasik hatalar için bir denetim (boş disallow satırları, bilinmeyen yönergeler, aşırı büyük dosyalar). Eşleştirici sonra gerçek soruyu yanıtlar: bir kullanıcı aracı ve bir yol yapıştırın, kararı ve kararı veren tam kuralı alın — en uzun eşleşme, joker *, sonu belirten $ ve grup birleştirme, standardın tanımladığı gibi. Her şey tarayıcınızda çalışır.
Henüz bir şey ayrıştırılmadı. Yukarıya bir robots.txt yapıştırın ve Dosyayı ayrıştır'a basın ya da bir örnek yükleyin.
Eşleştirici, yukarıdaki kutudaki mevcut metni kullanır (önce Ayrıştır'a basmanız gerekmez). Kullanıcı aracı RFC 9309'un tanımladığı biçimde eşleşir: dosyadaki User-agent değeri, buraya yazdığınız metnin büyük/küçük harf duyarsız bir alt dizgisi olmalıdır — dolayısıyla ExampleBot/1.0 yazmak ExampleBot olarak bildirilen bir grupla eşleşir. Yol yerine tam bir URL de kabul edilir.
Kullanıcı aracı (gerçek bir UA dizgisi çalışır) Yol ya da tam URL
Henüz karar yok. İzni sına'ya basın.
Dosyanızı nasıl getirirsiniz:açhttps://your-domain.example/robots.txtbir tarayıcıda, tümünü seç, kopyala ve buraya yapıştırarak — ya dacurl -s https://your-domain.example/robots.txtbir terminalde. Bu sayfa kendi başına hiçbir şey getirmez: yalnızca yapıştırdığınızı okur. Dosyayı taşıyan yanıt başlıklarını incelemek için bunları şuradan geçirin:HTTP başlık ayrıştırıcı.
Öz test
RFC 9309 referans vektörlerine karşı ayrıştırıcıyı ve eşleştiriciyi yeniden çalıştırır: en uzun eşleşme önceliği (izin-yasak eşitliği ve derin yol durumu dahil), grup birleştirme, ayrıca*grup geri dönüşü, yolların ve kullanıcı aracılarının büyük/küçük harf duyarlılığı, joker karakterler,$çapa, robots.txt'nin örtük izni/robots.txt, yüzde kodlaması normalleştirme, site haritası çıkarma ve olumsuz yollar. Hiçbir şey hiçbir yere gönderilmez.
robots.txt nedir?
Tek cümleyle: robots.txt, bir sitenin kökünde bulunan ve iyi davranan tarayıcılara hangi yolları getirebileceklerini söyleyen düz metin bir dosyadır — 2022'de RFC 9309 olarak standartlaştırılmış, her büyük tarayıcının uyduğu gönüllü bir gelenek.
Bir dosyanın biçimi

Bir dosya kayıtlar dizisidir. Bir grup, bir veya daha fazla User-agent satırıyla başlar, ardından bu tarayıcılara uygulanan Allow ve Disallow kuralları gelir. Kurallardan sonra gelen yeni bir User-agent satırı yeni bir grup başlatır; arka arkaya gelen birkaç User-agent satırı aynı grubu paylaşır (iki adı olan bir tarayıcı bunu gerektirir). Sitemap gibi bağımsız kayıtlar her yerde bulunabilir. # bir satırın herhangi bir yerinde yorum başlatır. Alan adları büyük/küçük harf duyarsızdır; yollar değildir.

ÇizgiAnlamı
User-agent: foobotAşağıdaki kurallar adında foobot geçen tarayıcılara uygulanır (büyük/küçük harf duyarsız)
User-agent: *Aşağıdaki kurallar daha özel bir grubu olmayan her tarayıcıya uygulanır
Disallow: /private//private/ ile başlayan yolları getirmeyin
Allow: /private/public/Bu yollar için yukarıdaki yasağı geçen istisna (en uzun eşleşme)
Disallow: (boş)Hiçbir şey yasaklanmaz — klasik "hepsine izin ver" deyimi
Sitemap: https://…/sitemap.xmlSite haritanızın bulunduğu yer; tarayıcılar birkaç tane toplayabilir
Crawl-delay: 30RFC 9309'da yok — eski bir uzantı; büyük tarayıcılar onu yok sayar ya da kendileri yorumlar
Bir karar nasıl verilir (RFC 9309 §2.2.2)

1. Değeri, tarayıcının adının bir alt dizgisi olan User-agent grubunu bulun; eşleşen tüm grupları birleştirin. Hiçbiri yoksa * grubunu kullanın; onlar da yoksa her şeye izin verilir. 2. Yolu her kurala karşı sınayın: eşleşme önek tabanlıdır, büyük/küçük harfe duyarlıdır ve */$ joker olarak çalışır. 3. En uzun eşleşen kural kazanır; eşit uzunlukta Allow, Disallow'u yener. Eşleşen kural yoksa izin verilir. Ve kurallar ne derse desin, /robots.txt'nin kendisi örtük olarak izinlidir — aksi halde bir tarayıcı kuralları okuyamazdı.

Yaygın hatalar
  • robots.txt'nin erişimi engellediğine inanmak. Bu, dikkatli tarayıcılara yönelik bir istektir, bir duvar değildir: kötü niyetli kazıyıcılar onu tamamen yok sayar ve bir tarayıcının neyi açabileceğini hiç etkilemez. Gerçek koruma için kimlik doğrulaması kullanın; yalnızca arama motorlarını yönlendirmek için robots.txt doğru araçtır.
  • Disallow: /'in bir sayfayı arama sonuçlarından kaldıracağını sanmak. Bu tarama durdurur, dizine eklemeyi değil: başka sayfalar sizin sayfanızı bağlıyorsa, bir arama motoru URL'yi yine de listeleyebilir (açıklama olmadan). Kaldırma aracı noindex meta etiketi ya da yanıt başlığıdır.
  • Uzunluk yerine sıraya güvenmek. İlk eşleşen kural kazanmaz — en özel (en uzun) olan kazanır. Davranışı "düzeltmek" için satırları yeniden sıralamak bir işe yaramaz; amaçlanan kuralı daha uzun yapın.
  • CSS ve JS'yi engellemek. /*.css$ ve /*.js$'i engellemek eskiden yaygın bir "optimizasyon"du; artık işleyiciler sayfayı ziyaretçilerin gördüğü gibi görmek için bu dosyalara ihtiyaç duyar ve yarım işlenmiş bir sayfa daha düşük sıralanabilir.
  • Tek bir büyük grubu belge gibi kullanmak. Bir grup içindeki yorum satırları sorun değildir, ancak ilk User-agent satırından önce, # olmadan yazılmış bir paragraf düz yazı, esnek ayrıştırıcıları şaşırtabilen bir ayrıştırma hatasıdır.
SSS

Tüm tarayıcılar Allow, * ve $'ı destekliyor mu? Büyükler destekler ve RFC 9309 üçünü de standartlaştırır. Bazı küçük ya da eski tarayıcılar yalnızca Disallow'u anlar ve *'ı kelimesi kelimesine okur — mümkün olduğunda kuralları basit tutmanın bir nedeni.

Boş bir Disallow: ne anlama gelir? "Hiçbir şeyi yasaklama" — grup her şeye açıkça izin verir. Genellikle biri bir şablonu düzenleyip yolu silerken yönergeyi silmediğinde ortaya çıkar; denetim bunu işaret eder.

Dosya ne kadar büyük olabilir? RFC 9309, ayrıştırıcıların en az 500 KiB'yi işlemesini ister; bunun ötesinde bir tarayıcı okumayı durdurabilir ve kalanı yasaklı sayabilir. Dosyayı bunun epey altında tutun ve çok büyürse tarama denetiminin sayfa başlıklarında olup olmadığını sorgulayın.

Eşleştirici, Disallow: / altında bile neden /robots.txt'nin izinli olduğunu söylüyor? Çünkü standart bunu açıkça söyler: robots dosyasının kendisi örtük olarak izinlidir. Python'un urllib.robotparser ve diğerleri bu özel durumu uygulamaz — bu sayfanın öz-testinde belgelediği, gerçek dünya ayrıştırıcıları arasındaki küçük farklılıklardan biri.

Bir Disallow yolu büyük/küçük harfe duyarlı mı? Evet. /Private/ ve /private/ farklı yollardır. disallow alan adı herhangi bir büyüklükte olabilir, ancak değer URL ile tam olarak eşleşmelidir.