Gestatten: Die Google Cloaking-API

Seit mehr als einem Jahr bietet Google eine offizielle Cloaking-API an. Überraschenderweise hat das bisher kaum jemand bemerkt. Das könnte auch daran liegen, dass die API den komischen Namen Ajax-Crawling-Protokoll trägt und das klingt nun so gar nicht nach Cloaking.

Vermutlich hat Google das so genannt, weil der Webmaster damit seine Ajax-Seiten dem Googlebot zugänglich machen kann. Wie das geht, beschreibt Google selber recht gut. Grundsätzlich funktioniert Ajax-Crawling ziemlich einfach: Der Webmaster verlinkt auf eine Ajax-URL, die „#!“ enthält und dahinter die für die Ajax-Darstellung nötigen Parameter. Also z.B. so etwas example.com/#!test. Das Protokoll besagt nun, dass der Googlebot nicht diese URL direkt abrufen soll, sondern erst #! durch ?_escaped_fragment_= ersetzt. Damit wird aus unserer URL nun example.com/?_escaped_fragment_=test und diese URL wird dann vom Googlebot gecrawlt – im Google-Index erscheinen aber nur die URLs mit #!, die _escaped_fragment_-URLs tauchen nirgendwo auf und auch andere Suchmaschinen greifen nicht darauf zu.

Damit nimmt uns Google die Hauptarbeit beim Cloaking ab. Die Schwierigkeit liegt beim Cloaking ja darin, den Googlebot sauber von menschlichen Besuchern zu unterscheiden. Mit Ajax-Crawling stellt Google einen Mechanismus bereit, der genau diese Unterscheidung selber vornimmt. Und da bislang nur Google das Ajax-Crawling unterstützt, sehen andere Suchmaschinen (Stichwort: Yahoo Site Explorer) unsere gecloakten Inhalte nicht. Eine Methode also, die sich wunderbar anbietet, um Links zu verstecken.

Natürlich sagt Google, dass sich die Inhalte von #! und ?_escaped_fragment_=nicht unterscheiden sollten. Den genauen Wortlaut des entsprechenden Google-Hinweises gebe ich hier mal als Warnung wider:

Es ist wichtig zu beachten, dass die Bereitstellung von AJAX-Anwendungen für Crawler keine Einladung dazu ist, Cloaking zu erleichtern. Aus diesem Grund muss der HTML-Snapshot den gleichen Content enthalten, den der Endnutzer in einem Browser sehen soll.

Auszug aus den Google-Hinweisen zum AJAX-Crawling-Protokoll

Aber die Zusammenarbeit von Javascript-basierter HTML-Erstellung (Ajax) mit der serverseitigen Erzeugung des HTML-Snapshots ist ja durchaus fehleranfällig; da kann es schon mal sein, dass in der Ajax-Version ein paar externe Links vergessen werden …

Ich bin jedenfalls gespannt, wie Google künftig damit umgehen wird. Google kennt die Problematik, das zeigt ja schon der oben zitierte FAQ-Eintrag. Aber eine automatische Überprüfung der Inhaltsgleichheit von Ajax- und gecrawlter URL ist nicht so ganz einfach; denn dazu bräuchte Google ja einen Ajax-fähigen Crawler und dann könnten sie sich den ganzen Aufwand mit dem Ajax-Crawling-Protokoll gleich sparen. Und wenn nun noch einige SEOs auf die Idee kommen, das ganze mit dem Canonical-Tag zu kombinieren, so dürfte es für Googles irisches Webspamteam einiges zu tun geben.

Natürlich lässt sich Ajax-Crawling auch für den offiziellen Zweck einsetzen, Ajax-Seiten für den Googlebot zugänglich zu machen. Wer sich dafür interessiert, dem möchte ich die nächste Ausgabe der Zeitschrift Website-Boosting ans Herz legen. Dort erscheint ein ausführlicher Artikel von mir über Ajax-Crawling. Die Ausgabe gibt es ab dem 4. Januar 2011 zu kaufen.