Montagmorgen. Am Sonntag ist der Shop zweimal ausgefallen, im Zugriffsprotokoll stehen drei Adressen, die je achtzigtausend Seiten angefordert haben, und Sie sperren sie auf dem Server. Ruhe. Am Dienstag tun vierzig neue Adressen genau dasselbe.
Nach Adresse zu sperren ist die erste Reaktion von allen und die, die am kürzesten hält. Nicht weil die Idee schlecht wäre, sondern weil das Problem nicht ist, wer anfragt, sondern wie viel. Und das wird gemessen, nicht geraten.
Warum das Sperren von Adressen nie endet
Ein Crawler, der Ihren Katalog durchläuft, kommt nicht von einer Adresse: Er kommt aus einem Netz, oder mehreren, und wechselt durch. Sperren Sie eine, macht er mit der nächsten weiter, ohne aus dem Takt zu kommen. Mit Namen ist es dasselbe: Sie geben sich als gewöhnlicher Browser aus, wechseln jede Woche die Identität, und jeden Monat tauchen drei neue auf. Die Sperrliste wächst, und die Last sinkt nicht.
Was sie nicht verkleiden können, ist das Tempo. Ein Mensch, der einkauft, öffnet eine Kategorie, hakt zwei Filter an, blättert eine Seite und geht zur Produktseite: drei oder vier teure Suchen im ganzen Besuch. Ein Crawler macht drei oder vier pro Sekunde, von jeder Adresse, die er nutzt. Zu zählen, wie viele teure Suchen jede Herkunft in einer Minute stellt, unterscheidet die beiden, ohne ihre Namen kennen zu müssen.
Was Begrenzung pro IP ist, und warum auch pro Netz
Pro IP zu begrenzen heißt, eine Obergrenze zu setzen: wie viele Anfragen der Shop von derselben Adresse in einem Zeitfenster annimmt — meist sechzig Sekunden. Unter der Grenze geht alles durch; darüber bekommt die Anfrage ein „komm später wieder“, das nichts kostet.
Damit allein bleibt ein Crawler, der die Arbeit auf zweihundert Adressen desselben Netzes verteilt, auf jeder einzelnen unter der Grenze. Deshalb gilt die zweite Grenze pro Netz: Adressen, die ihre ersten drei Blöcke teilen (was ein Techniker ein /24 nennt), werden zusammen gezählt. Ein Mobilfunkanbieter kann so aussehen, deshalb liegt diese Grenze höher als die pro Adresse, aber das Durchwechseln ist nicht mehr kostenlos. Und eine dritte Bremse, für den ganzen Shop, dient als Notgrenze: Übersteigt die Gesamtzahl der Suchen pro Minute das, was Ihr Server bequem verkraftet, kommen nur noch Besucher durch, die schon bewiesen haben, dass sie Menschen sind.
Wo die Grenze hingehört: Server oder Shop
Es gibt drei Stellen, an denen man zählen kann, und sie sehen nicht dasselbe.
- Im CDN (zum Beispiel die Rate-Limiting-Regeln von Cloudflare). Es zählt pro Adresse und pro URL-Muster. Es weiß nicht, welche Anfrage teuer ist und welche ein Bild, weiß nicht, ob der Besucher angemeldet ist, und behandelt Googlebot wie jeden anderen. Für die Spitze eines Nachmittags reicht das; um so zu leben, bremsen Sie entweder Ihre Kunden zu stark oder die Bots zu wenig.
- Im Webserver (die Begrenzungsmodule von Apache oder nginx, oder fail2ban, das das Protokoll liest). Er zählt alles, was hereinkommt, CSS und Fotos eingeschlossen, deshalb muss die Grenze so hoch liegen, dass sie kaum bremst. Und man muss einen Server administrieren können, um daran zu drehen, was auf Shared Hosting nicht einmal erlaubt ist.
- Im Shop selbst, bevor PrestaShop zu suchen beginnt. Das ist die einzige Stelle, die weiß, was teuer ist: eine gefilterte Suche, die Suchbox, eine Listenseite, ein Wechsel der Sortierung. Nur das zählt für die Grenze. Sie weiß, ob der Besucher angemeldet ist — und begrenzt ihn dann nicht — und kann prüfen, ob der, der sich Googlebot nennt, es wirklich ist. Dort setzt es Anti-Bot-Schutz für PrestaShop an, und deshalb kann die Grenze niedrig sein, ohne jemanden zu stören, der kauft.
Wie man Google hereinlässt
Das ist die Angst, die die meisten zurückhält, und zu Recht: Eine falsch gesetzte Grenze löscht Sie ganz allein aus Google. Die Antwort ist keine Namensliste, denn jeder kann sich als Googlebot ausgeben: Man fragt das Netz. Jede Anfrage, die angeblich von Google kommt, wird per Reverse-DNS geprüft, und gehört die Adresse nicht Google, kommt diese Anfrage nicht von Google, egal was sie behauptet.
Verifizierte Suchmaschinen kommen mit eigenem Kontingent herein, getrennt von dem der Besucher, und erhalten die Filterseiten als nicht indexierbar markiert. Genau das empfiehlt Google für die Facettennavigation: Filterkombinationen sollen nicht zu Tausenden wiederholter Seiten werden. Sobald Sie seine Zeit nicht mehr darauf verschwenden, crawlt es die Seiten besser, die Ihnen wichtig sind.
Was passiert, wenn jemand die Grenze überschreitet
Ein Skript bekommt ein „zu viele Anfragen“ mit der Uhrzeit, zu der es wiederkommen darf, und das kostet Ihre Datenbank nichts. Aber eine Grenze pro Adresse hat einen unangenehmen Fall: das Büro mit dreißig Leuten hinter einer einzigen Verbindung, oder der Kunde, der sehr schnell filtert. Die darf man nicht hinauswerfen: Man muss prüfen, dass es Menschen sind.
Die Prüfung, die funktioniert, ist die, die niemand sieht. Ein Arbeitsnachweis — eine kleine Rechnung, die der Browser in Millisekunden selbst löst, ohne Rätsel oder Kästchen — und ein Passierschein für eine Stunde. Der Passierschein befreit nicht vollständig, denn diesen Nachweis zu lösen ist auch für ein Skript billig: Wer einen trägt, behält eine Obergrenze pro Adresse, nur zehnmal höher.
Die Zahlen für den Anfang
Mit einem Fenster von sechzig Sekunden decken dreißig teure Suchen pro Adresse, neunzig pro Netz und sechshundert für den ganzen Shop die allermeisten Shops ab, ohne dass ein Kunde je etwas merkt. Ein schneller Kunde macht zwanzig in einer Minute; dreißig ist schon jemand, der nicht hinsieht, was er filtert.
Wenn Sie noch nicht vertrauen, gibt es einen Beobachtungsmodus: Die Grenze schaut zu und notiert, was sie gestoppt hätte, lässt aber alles durch. Eine Woche so, und das Panel sagt Ihnen, wie viele Anfragen an der Tür geblieben wären und woher sie kamen, und Sie entscheiden mit Daten.
Woran man erkennt, dass die Grenze richtig sitzt
Eine Grenze, die nicht gemessen wird, ist eine Grenze, die eines Tages einen Kunden stört, ohne dass Sie es erfahren. Jede Woche sind drei Dinge anzusehen: wie viele teure Suchen bedient und wie viele gestoppt wurden, welche Herkünfte am häufigsten gestoppt wurden und warum, und ob eine davon zu Ihnen gehört — Ihr Verfügbarkeitsmonitor, Ihr Preisvergleichs-Feed, ein Kunde, der sich beschwert hat. Die bekommt einen Klick Vertrauen und wird nie wieder gezählt.
Und für Zweifel ein Prüfer: Adresse und Browser aus dem Protokoll einfügen, die angefragte Seite dazu, und er sagt Ihnen genau, was er mit dieser Anfrage jetzt tun würde und warum. So fasst man eine Grenze an, ohne blind daran zu drehen.
All das — die drei Obergrenzen, die Cookie-Umleitung, per DNS verifiziertes Google, die unsichtbare Prüfung, der Beobachtungsmodus und das Panel mit dem Prüfer — ist das, was Anti-Bot-Schutz für PrestaShop ab der Minute der Installation tut, auf PrestaShop 1.7.6 bis 9 und hinter Cloudflare. Und wenn Sie vorher wissen möchten, ob das Ihr Problem ist, schicken Sie uns das Zugriffsprotokoll eines schlechten Tages über das Kontaktformular: Wir sagen Ihnen kostenlos, wie viele dieser Anfragen Menschen sind und wie viele Rauschen.