Offline-Reader sind wie schwarze Löcher: sie saugen alles in sich hinein. Und man sollte verdammt vorsichtig mit ihnen umgehen.
(erschienen in Internet Professionell 1/2003)
Der tägliche Blick in die Logdateien gehört zum Geschäft. Der stündliche Blick in die Logdateien fällt vermutlich schon unter Suchtverhalten. Aber ich weiß, ich kann jederzeit damit aufhören -- wenn es endlich mal wieder mehr als 10.000 Pageviews am Tag gibt.
Neulich war es so weit: Der Server wurde überrannt von Abrufen. Aber 60.000 Pageviews in einer Stunde? Das kann kein Besucheransturm sein. Auch Suchmaschinen scheiden aus. Flugs ein Blick in die Log-Dateien schafft bittere Gewissheit: Ein Agent namens "Web Downloader" hat die Abrufe produziert. Nicht schon wieder. Erst vor ein paar Wochen hatten wir 40.000 Abrufe, als ein Student versehentlich Wget auf unsere Seiten losgelassen hat.
Nicht, dass ich etwas gegen Offline-Reader hätte. Mit Bedacht eingesetzt, helfen die kleinen Programme, Online-Zeit zu sparen und interessante Angebote zu archivieren. Doch der "Bedacht" fehlt vielen, die solche Programme nutzen. Mit minimalen Hirn-Einsatz drücken Sie auf den Knopf -- der Computer wird’s schon richten. Dabei vergessen sie anscheinend, dass der Computer noch dümmer ist als sie selbst.
Denn es gibt nicht nur hierarchisch aufgebaute Web-Angebote, in denen sich die Seiten Ästen gleich auf dem Server ranken. Es gibt auch Seiten, die aus Datenbanken entstehen, dynamisch generiert werden, und in hohem Maße untereinander verlinkt sind. Und auf solchen Seiten dreht ein Offline-Reader durch: Er verirrt sich im Dickicht der zahllosen Querverweise und lädt - dumm wie ein Computer nur sein kann - stur jede ihm angebotene Seite herunter.
Was tun? Zum Provider rennen und den Stecker ziehen? Geht nicht. Auf meiner Suche nach einer Lösung bin ich im Web über http://www.phpfreaks.com/articles/39/0.php gestolpert. Der Autor empfiehlt, in PHP den Namen des Clients zu ermitteln. Danach vergleicht er den Inhalt der Reihe nach mit den Namen böser Offline-Reader. Trifft das Progamm auf einen Offline-Reader leitet er ihn zu einer Seite mit einer mehr oder weniger freundlichen Meldung um.
Skript gelesen - Skript eingebunden - und schon war der Web-Downloader wieder da. Er hat noch mal 20.000 Pageviews erzeugt. Der Grund: Auf dem Server lief noch eine zu alte PHP-Version -- die wollte eine andere Methode zur Abfrage von Server-Variablen. Himmel noch mal, warum sagt mir das keiner?
Nach dem Einbau dieser Abfrage und einer Modifikation bei den String-Vergleichen ist nun halbwegs Ruhe. Aber trotz aller Vorsichtsmaßnahmen kann ich nie sicher sein, alle Offline-Reader auszuschließen. Denn die Dinger tauchen immer wieder unter neuen Namen auf.
Und ich muss vorsichtig sein, nicht zu allgemeine Ausschlussregeln zu formulieren, damit ich nicht versehentlich Web-Robots aussperre, die Daten für ihre Indizes sammeln. Am besten bastele ich mir noch ein Eingabeformular, in das ich die bösen Clients eintippen und in einem Textfile oder in der Datenbank speichern kann. Dann muss ich nicht jedes Mal den Code anfassen, sobald ein neuer Absauger auftaucht. Oder gibt es irgendwo vielleicht eine zentrale Stelle mit den Kennungen alle Offline-Reader? Wer die sammelt würde der Webmaster-Gemeinde einen großen Dienst erweisen.
100 Prozent Schutz gegen Offline-Reader, gegen diese Art passiven Spam, wird es nicht geben. Denn wer ein wenig geschickt ist, findet in seinem Absaug-Programm immer einen Schalter, um die Browser-Kennung zu ändern. Doch wer schlau genug ist, an diesem Schalter zu drehen, wird auch in der Lage sein, ein vernünftiges Limit für den Download zu setzen. Hoffentlich.
