Blocked by robots.txt URL Analiz Scripti

0 Replies 3 Views
·
Participants
Thread Starter #0
robots.txt dosyası, arama motorlarının ve botların sitenizde hangi sayfalara erişip erişemeyeceğini belirleyen en temel yapılandırma dosyasıdır. Ancak, bazen URL'lerin neden engellendiğini veya hangi URL'lerin robots.txt tarafından bloklandığını anlamak zor olabilir. Bu noktada, otomatik analiz scriptleri devreye girer. İşte bu süreci kolaylaştırmak için temel bir URL analiz scripti ve çalışma mantığına değinelim.


İlk olarak, robots.txt dosyasını ve içeriğini anlamak gerekir. Dosyada Disallow kuralları, belirli dizinleri veya URL kalıplarını engeller. Bu kuralları analiz ederek, hangi URL'lerin erişim engellendiğini belirlemek mümkün olur. Ancak, manuel kontrol zaman alır; bu yüzden scriptlere ihtiyaç doğar.

Script temel olarak şu adımları izler:

  • Robots.txt dosyasını URL üzerinden çekmek ve içeriğini parse etmek. Bu, HTTP istekleri ve simple metin işleme ile yapılabilir.
  • Kullanıcıdan veya belirli bir URL listesinden alınan URL’leri, robots.txt kurallarıyla karşılaştırmak. Örneğin, Disallow satırlarını ve User-agent bloklarını dikkate almalı.
  • URL'nin robots.txt kurallarıyla uyumlu olup olmadığını belirlemek. Eğer URL, engellenmiş klasör veya patikadaysa, script bu durumu raporlar.
  • Sonuçları kullanıcıya anlamlı biçimde sunmak, örneğin hangi URL'nin neden engellendiğini veya engellenmediğini göstermek.


Örnek bir Python kodu şu yapıda olabilir:

CODE
1234567891011121314151617181920212223242526272829303132333435import requests

def get_robots_txt(url):
    if not url.startswith("http"):
        url = "http://" + url
    robots_url = url.rstrip('/') + "/robots.txt"
    response = requests.get(robots_url)
    if response.status_code == 200:
        return response.text
    return ""

def url_blocked(robots_txt, test_url, base_url):
    disallow_rules = []
    for line in robots_txt.splitlines():
        line = line.strip()
        if line.startswith("Disallow:"):
            path = line.split(":", 1)[1].strip()
            disallow_rules.append(path)
    # Temel eşleştirme
    for rule in disallow_rules:
        if rule == "/":
            return True
        if test_url.startswith(base_url + rule):
            return True
    return False

[b]Kullanım örneği[/b]
site_url = "example.com"
robots_txt_content = get_robots_txt(site_url)
test_urls = ["http://example.com/secret/page.html", "http://example.com/public/info.html"]
for url in test_urls:
    if url_blocked(robots_txt_content, url, "http://" + site_url):
        print(f"{url} robots.txt tarafından engellenmiş.")
    else:
        print(f"{url} engellenmemiş.")


Bu temel script, robotların engellendiği URL’leri tespit etmede kullanılabilir. Ancak, karmaşık kurallar veya farklı User-agent ayarları söz konusuysa, geliştirilmiş algoritmalar veya kütüphaneler kullanmak gerekebilir. Ayrıca, güvenlik ve performans açısından da dikkatli olmak önemli.

Sizler bu konuda hangi yöntemleri veya araçları kullanıyorsunuz? Otomatik analizlerinizde karşılaştığınız zorluklar neler?

You must be logged in to reply.

0 quotes selected