Moin,
Wie kann ich über die .htaccess korrekt gegen Bots mich absichern. […] Habe meinen Access Log heute früh erneut geprüft nur um festzustellen das weiterhin Anfragen durchgewunken werden. Vielleicht herrscht von meiner Seite aus auch ein Verständnis Fehler was diese Meldungen im Log sind. Nur bräuchte ich eine Erklärung.
Hier gibt es in der Tat gleich ein paar Fragen:
- Woran erkennt man einen Bot?
- Wie kann man „böse“ von „guten“ Bots unterscheiden?
- Welche Bots halten sich an die
robots.txt
, welche nicht?
Die Blacklist der Bots in die robots.txt hereinzuschreiben wirkt ein wenig primitiv auf mich.
Die Datei gehört zum Robots Exclusion Protocol, d.h. zumindest „gute“ Bots halten sich daran; das hat den Vorteil, dass Du mit denen sogar „zusammenarbeiten kannst“.
Zum Problem: Ich habe trotz der Regel noch im access log viele Anfragen von KI Scrappern wie GPTbot, Claudebot. Obwohl ich explizit bestimmte User Agents blockiere.
Also zumindest der GTPBot von OpenAI hält sich an die robots.txt
: Auf meinen Seiten ruft der regelmäßig nur diese Datei auf, sieht, dass er nichts indizieren darf und macht das anscheinend dann auch nicht.
Diese denke ich zerren an der Performance von der Seite, Webserver.
Das müssten dann schon sehr viele Zugriffe sein. Sofern sie nur die robots.txt
abrufen und sich an die Regeln dort halten, ist das nur das Ausliefern einer statischen Ressource, das ist nicht teuer.
Verzerren natürlich jegliche Statistik.
Das können „menschliche“ Nutzer doch auch.
Gut ich nutze Browserfingerprinting.
Datenschutzkonform?
Doch die Anzahl an echten Anfragen, würde mich schon interessieren.
Dafür müsstest Du erst einmal definieren, was „echte Anfragen“ sind.
Wenn ich das richtig gesehen haben von im Webalizer sind wir bei ca. ~800.000 Seiten. Ich habe mich ein wenig belesen und mitbekommen, wenn eine Webseite über einen CDN Anbieter wie Cloudflare gehostet wird besteht die Möglichkeit von Region, Bot Blockierung.
Dafür müsstest Du darauf vertrauen, dass diese Anbieter zuverlässig von Dir unerwünschte Zugriffe identifizieren kann. Und diese Anbieter sollten nicht auf Grund eines Ratelimits oder vermuteten Service-Missbrauchs einfach den Dienst für Dich einstellen.
Nach Region zu blockieren ist meiner Erfahrung nach viel zu ungenau:
- IP-Adress-Bereiche können Besitzer wechseln (einer meiner Telekommunikations-Provider hatte mal einen Bereich übernommen, der vorher in Osteuropa lokalisiert war – nicht alle Webseiten hatten das mitbekommen).
- Nutzer verwenden VPN (z.B. auch über ihre Arbeitgeberin).
Das wäre eine mögliche Lösung. Alternativ lässt sich diese Regeln performanter über SetEnvIf definieren. Nur diese Lösung(en) habe ich noch nicht probiert.
SetEnvInf
setzt lediglich eine Umgebungsvariable. Wofür soll das die Lösung sein?
Root-Access/SSH-Zugang zum Webserver habe ich an sich nicht, würde mich da auch erstmal nicht ran trauen. Provider für den Webserver ist All-Inkl. Habe einen Kontakt zu denjenigen der wohl als Mittelsmann für uns die Web Server Verwaltung übernimmt. Wir selben haben also direkt keinen Vertrag mit All-Inkl.
Ihr habt für euren Shop also einen Dienstleister dazwischen, der seinerseits für euch das Hosting über All-Inkl anbietet.
- Warum ist es denn tatsächlich eine
robots.php
statt einerrobots.txt
? Diese Ressource muss doch gar nicht dynamisch generiert werden, sondern kann statisch sein. - Was hat es mit den
\b
bei denRewriteCond
auf sich
- Was ist denn der Unteschied zwischen diesen beiden Screenshots?
Access Log (eingekürzt aus Datenschutz Gründen)
Das ist lustig, wenn dann die kompletten IP-Adressen wiedergegeben werden 😉 Ich habe die hier mal entfernt:
<…> - - [13/May/2025:23:59:55 +0200] "GET /120_52__45_5__90_4__50_9__75_66?af=20 HTTP/2.0" 200 48332 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)" "Traffic IN:193 OUT:48803" "ReqTime:0 sec"
Wie oben schon beschrieben, hält sich dieser Bot an die robots.txt
<…> - - [13/May/2025:23:59:57 +0200] "GET /120_6::marken/vormann__45_5__80_8__120_6__45_84__30_7__gerollt-breit HTTP/2.0" 200 48251 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36" "Traffic IN:299 OUT:48714" "ReqTime:0 sec"
Bing ist doch die Suchmaschine von Microsoft. Im Zweifelsfall „findet“ die neue Kunden für Dich.
<…> - - [13/May/2025:23:59:58 +0200] "GET /T-5__WIHA_1__2-Komponentengriff__T-25__T-30__T-8 HTTP/2.0" 200 48943 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "Traffic IN:201 OUT:49265" "ReqTime:0 sec"
OK, den müsste ich mir mal genauer anschauen.
Viele Grüße
Robert