Bot- und Spider Blocking, Teil 2
Im ersten Teil beschrieb ich, wie man unerwünschte Besucher, die einem z. B. die Referrer vollspammen oder die öfter mal die gesamte Website inklusive aller Bilder etc. herunterladen, mittels einer PHP Datei aussperrt. In diesem Teil erkläre ich, wie man das selbe mit dem Apache Modul mod_rewrite und der .htaccess Datei macht.
Voraussetzung ist natürlich, dass auf Ihrem Webserver Apache läuft und dass mod_rewrite installiert ist – fragen Sie dazu bitte ihren Hoster. Voraussetzung ist auch, dass Sie wissen, was eine .htaccess Datei ist. Sie sollten sich im klaren darüber sein, dass fehlerhafte Einträge unter Umständen dazu führen können, dass Ihre Website per Browser nicht mehr erreichbar ist. Für niemanden.
Das hätten wir auch geklärt, dann können wir loslegen: Mit einem geeigneten Texteditor (idealerweise benutzen Sie einen, der Dateien direkt von einem FTP Server öffnen kann, auf dem Mac kann das z. B. BBEdit) öffnen Sie die .htaccess Datei im Root-Verzeichnis ihres Servers – ist dort keine, legen Sie im Texteditor einfach ein neues Dokument an.
Zunächst muss das Rewrite Modul eingeschaltet werden, das macht man mit dieser Zeile:
RewriteEngine on
Anschließend geht es schon los mit dem Blockieren. Hier sind drei Zeilen, die beispielhaft zeigen, wie man bestimmte IP-Nummern, Referrer oder User Agents aussperrt. Es handelt sich hierbei um Bedingungen, die mit Hilfe regulärer Ausdrücke formuliert werden:
RewriteCond %{REMOTE_ADDR} ^211.152.14. [OR]
RewriteCond %{HTTP_REFERER} ^paris-hilton-video.blogspot.com$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} SiteSucker
Erklärungen:
| ^ | Kennzeichnet den Anfang einer Zeichenfolge | |
| $ | Kennzeichnet das Ende einer Zeichenfolge | |
| Da Punkte und Leerzeichen in regulären Ausdrücken eine besondere Bedeutung haben, muss man sie, damit sie auch als solche erkannt werden, mit einem Backslash maskieren. | ||
| NC | No Case, Groß- und Kleinschreibung spielen keine Rolle | |
| OR | Oder |
In allgemein verständliche Sprache übersetzt, heißen obige Zeilen dann so:
- Wenn jemand mit einer IP-Adresse, die mit „211.152.14.“ anfängt, auf meine Website zugreift, oder
- Wenn jemand mit einem Referrer, der „paris-hilton-video.blogspot.com“ – Groß- und Kleinschreibung spielen keine Rolle – lautet, auf meine Website zugreift, oder
- Wenn jemand mit einem User Agent, der die Zeichenfolge „SiteSucker“ enthält, auf meine Website zugreift …
Dann …
fehlt eigentlich nur noch die Anweisung, was passieren soll, falls eine dieser Bedingungen zutrifft – und die lautet folgendermaßen:
RewriteRule .* – [F,L]
Erklärungen:
| .* | Steht für eine beliebige Zeichenfolge, in diesem Fall für eine beliebige Seite, die der unerwünschte Besucher aufgerufen hat. | |
| F | Forbidden. Es wird unmittelbar nach der Anfrage ein 403 HTTP Response gesendet, d. h. der Besucher bekommt die gewünschte Seite nicht zu sehen. | |
| L | Last Rule. Weitere Regeln werden nicht mehr angewandt (wichtig, falls man mod_rewrite in der selben .htaccess Datei auch für andere Zwecke als zum Blockieren benutzt). |
Das wars. Tragen Sie einfach nach obigem Muster diejenigen Adressen / Referrer / User Agents in Ihre .htaccess Datei ein, die Sie in Zukunft von Ihrer Website ausschließen wollen, speichern Sie sie im Root-Verzeichnis Ihres Servers unter dem Namen „.htaccess“ (ohne die Anführungszeichen, aber mit dem Punkt am Anfang) und schon genießen Sie himmlische Ruhe.
Ähnliche Beiträge:
Schreib mal wieder 101 Dinge, die ich wirklich hasse - Nr. 12
Kommentare:
Bei den Kommentaren handelt es sich um fremde Inhalte, die sich „esse est percipi“ nicht zueigen macht. Verantwortlich für den Inhalt eines Kommentars ist der jeweilige Verfasser.
Gut das du darauf hinweist! Fehlerhafte Einträge können einen Apache Server auch derart lahmlegen das nicht nur die Webseite nicht mehr erreichbar ist – so bei uns am Freitag passiert.
Danke für den Teil 2. IPs aussperren geht auch mit ‘deny from 218.12.196.35’. Spricht da etwas dagegen?
Sorry für meinen Trackback mit falscher URL.
Gruss, Stefan
Macht nix, ich hab ihn gerade mal per Hand berichtigt.
Und nö, gegen deny spricht nichts. Ich habs in meiner .htaccess nur der Übersichtlichkeit halber bei den RewriteRules gelassen.
Kommentar schreiben:
FAQ (Häufig gestellte Fragen)
Kommentare:
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Henning zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Mesrop zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Hopper 1.0b7 (Update: 1.0b9)
Schlagwörter

