Seit es die sinnvolle Erweiterung des Sitemaps.org-Standards gibt, die erlaubt, dass man den Pfad zu seiner Sitemaps-Datei in der robots.txt hinterlegt und sich diese nicht für jede Suchmaschine einzeln anmelden, authentifizieren und einreichen muss, ist leider auch die Gefahr gestiegen, dass Scraper und sonstiger Webabschaum sich dort bedient. Gerade Contentdieben wird es so sehr leicht gemacht – die Seitenstruktur liegt offen vor ihnen und muss nicht erst mühsam zusammengecrawled werden.
Ich bin bei den meisten unserer Projekte jetzt dazu übergegangen, nur noch den etablierten Suchmaschinen Zugriff auf die Sitemaps-Dateien zu gewähren. Dies ist zwar nicht unbedingt schön, da so neue, noch kleine Suchmaschinen benachteiligt werden aber in Abwägung der Vorteile war es mir das wert.
Umgesetzt wird diese Zugriffskontrolle über Cloaking: Google, Yahoo, Microsoft und Ask.com erhalten die Sitemap, andere Clients eine Fehlermeldung. Auch wenn Cloaking eigentlich nicht gerne gesehen wird, so ist es hier legitim, da es nicht zum Ziel hat, User oder Suchmaschinen zu täuschen.
<?php
include(if(preg_match('/(Googlebot|Slurp|Jeeves|msnbot)/', $_SERVER['HTTP_USER_AGENT'])
&& preg_match('/(.googlebot.com|.yahoo.net|.inktomisearch.com|.ask.com|.live.com)$/', gethostbyaddr($_SERVER['REMOTE_ADDR']))
&& (gethostbyname(gethostbyaddr($_SERVER['REMOTE_ADDR'])) == $_SERVER['REMOTE_ADDR'])) {
} else {'/path/to/real/sitemapfile.xml');
}header('HTTP/1.1 403 Forbidden');
echo '<html><head><title>Zugriff verweigert</title></head><body><h1>Zugriff verweigert</h1>
Der Zugriff auf unsere Sitemaps ist nur den gängigen Suchmaschinen erlaubt. Bitte
besuchen Sie die <a href="http://'.$_SERVER['HTTP_HOST'].'">Startseite</a>.</body></html>';
?>
Der PHP-Code prüft zuerst, ob im User-Agent des Clients in Hinweis darauf vorhanden ist, dass es sich um einen Bot der vier großen Suchmaschinen handelt. Dann wird über die mittlerweile von allen großen Suchmaschinen unterstütze Authentifizierung der Crawler mittels DNS/Reverse-DNS-Check geprüft, ob der Crawler auch „echt“ ist. Sollte dies alles zutreffen, wird die Sitemaps-Datei ausgegeben, andernfalls gibt es eine Fehlermeldung. Sehen kann man das zum Beispiel auf dieser Domain: sitemap.xml