So blockierst du KI-Crawler auf deinem Server
Zuletzt aktualisiert:
KI-Unternehmen durchsuchen das Web, um Modelle zu trainieren, um KI-Suchen zu betreiben und um Seiten abzurufen, wenn ein Nutzer danach fragt. Auf einem kleinen Server kann schon die Last allein ein Problem sein, und viele Website-Betreiber wollen nicht, dass ihre Inhalte für das Training verwendet werden.
Es gibt vier Werkzeuge, und sie wirken am besten zusammen: robots.txt für die Crawler, die sich daran halten, User-Agent-Regeln im Webserver für die, die sich zu erkennen geben, Reverse DNS oder veröffentlichte IP-Listen, um einen echten Crawler von einem gefälschten zu unterscheiden, und Rate Limits für alles andere. Die Befehle gelten für nginx und Apache unter Debian, Ubuntu und der RHEL-Familie.
Wissen, mit welchen Crawlern du es zu tun hast
Die wichtigsten, Stand Oktober 2026, laut der Dokumentation des jeweiligen Betreibers. Manche sind Crawler; andere sind nur robots.txt-Tokens, die steuern, wie die Daten eines anderen Crawlers verwendet werden.
| Name | Betreiber | Was er tut |
|---|---|---|
GPTBot | OpenAI | Crawlt Inhalte, die zum Training der Modelle von OpenAI verwendet werden können. Veröffentlichte IP-Liste. |
OAI-SearchBot, ChatGPT-User | OpenAI | Die Suche von ChatGPT und Seiten, die auf Anfrage eines Nutzers abgerufen werden. Laut OpenAI gilt robots.txt für ChatGPT-User möglicherweise nicht. |
ClaudeBot, Claude-SearchBot, Claude-User | Anthropic | Training, Suche und Seiten, die für einen Nutzer abgerufen werden. Laut Anthropic halten sie sich an robots.txt. Veröffentlichte IP-Liste. |
Google-Extended | Nur ein robots.txt-Token, ohne eigenen User Agent: Es steuert die Verwendung für das Training und das Grounding von Gemini. Auf die Google-Suche hat es keinen Einfluss. | |
Applebot-Extended | Apple | Nur ein robots.txt-Token: Es steuert, ob das, was Applebot crawlt, für das Modelltraining von Apple verwendet wird. |
CCBot | Common Crawl | Erstellt den Common-Crawl-Datensatz, der häufig zum Training von Modellen verwendet wird. Per Reverse DNS überprüfbar. |
meta-externalagent | Meta | Crawlt für Zwecke wie das Training von KI-Modellen. |
PerplexityBot, Perplexity-User | Perplexity | Die Suche von Perplexity und Seiten, die für einen Nutzer abgerufen werden. Laut Perplexity ignoriert Perplexity-User robots.txt in der Regel. |
Entscheide nach Zweck. Wenn du Trainings-Crawler blockierst, bleiben deine Inhalte aus künftigen Trainingsdaten heraus; blockierst du auch KI-Suchen und Abrufe für Nutzer, taucht deine Website auch in deren Antworten nicht mehr auf, und die Besuche, die sie bringen, entfallen. Um zu sehen, welche davon deinen Server erreichen, zähl die User Agents im Access-Log:
sudo awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Mit robots.txt bitten, fernzubleiben
Leg eine robots.txt in das Wurzelverzeichnis jedes Hosts, den du abdecken willst (jede Subdomain hat ihre eigene). Mehrere User-agent-Zeilen können sich eine Regel teilen:
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: meta-externalagent
Disallow: /Diese Liste blockiert das Training und lässt die Suche in Ruhe. Füg OAI-SearchBot, Claude-SearchBot und PerplexityBot hinzu, um auch aus KI-Suchen herauszubleiben. Lass deine bestehenden Regeln für andere Crawler darunter stehen, und schreib nie User-agent: * mit Disallow: /, es sei denn, du willst auch aus Google und Bing verschwinden.
Was robots.txt nicht kann
- Die Datei ist eine Bitte. Crawler, die sich daran halten, hören auf; die anderen nicht, und nichts sagt dir, wer wer ist.
- Bei Abrufen, die Nutzer auslösen, wird sie laut den Betreibern selbst möglicherweise nicht beachtet.
- Änderungen brauchen Zeit: Die Betreiber speichern die Datei zwischen, oft bis zu einem Tag.
- Ein Scraper, der seinen Namen verbirgt oder sich als Browser ausgibt, ist überhaupt nicht erfasst.
Nach User Agent in nginx oder Apache blockieren
Der Webserver kann die Crawler abweisen, die sich zu erkennen geben. Das stoppt sie auch dann, wenn sie robots.txt ignorieren, solange sie ihren Namen behalten.
nginx
Die map gehört in den http-Kontext: Dateien in /etc/nginx/conf.d/ werden von den Paketen für Debian, Ubuntu und die RHEL-Familie dort eingebunden.
sudo tee /etc/nginx/conf.d/ai-crawlers.conf > /dev/null <<'EOF'
map $http_user_agent $ai_crawler {
default 0;
~*(GPTBot|ClaudeBot|CCBot|meta-externalagent|PerplexityBot) 1;
}
EOFFüg dann Folgendes in jeden server-Block ein, der sie abweisen soll, unter Debian und Ubuntu in /etc/nginx/sites-available/, in der RHEL-Familie in /etc/nginx/conf.d/:
if ($ai_crawler) {
return 403;
}Teste die Konfiguration, lade neu und prüfe: Das erste curl muss 403 ausgeben, das zweite 200 (ersetze example.com durch deine Website).
sudo nginx -t && sudo systemctl reload nginx
curl -s -o /dev/null -w "%{http_code}\n" -A "GPTBot/1.2" https://example.com/
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/Achtung: Halte die Muster exakt. Ein Muster wie bot oder Google blockiert auch Googlebot und Bingbot, und deine Website fällt aus der Suche. Google-Extended und Applebot-Extended sind keine User Agents: Die beiden gehören nur in die robots.txt.
Apache
Nutze mod_rewrite, in jedem <VirtualHost> (sowohl dem für Port 80 als auch dem für Port 443) oder in der .htaccess der Website. Rewrite-Regeln in der Hauptkonfiguration gelten nicht für virtuelle Hosts.
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|ClaudeBot|CCBot|meta-externalagent|PerplexityBot) [NC]
RewriteRule ^ - [F]sudo a2enmod rewrite
sudo apachectl configtest && sudo systemctl reload apache2sudo apachectl configtest && sudo systemctl reload httpdHinweis: In der .htaccess brauchen die Regeln AllowOverride FileInfo (oder All) für dieses Verzeichnis. Beim Shared Hosting ist das meist schon der Fall.
Echte Bots per Reverse DNS überprüfen
Jeder kann User-Agent: Googlebot senden. Scraper tun das, um an Regeln vorbeizukommen, die Suchmaschinen durchlassen. Ein echter Crawler wird per Forward-Confirmed Reverse DNS bestätigt: Die Adresse löst zu einem Namen in der Domain des Betreibers auf, und dieser Name löst wieder zu derselben Adresse auf.
sudo apt install -y bind9-hostsudo dnf install -y bind-utilsip=66.249.66.1
name=$(host "$ip" | awk '/pointer/ {print $NF; exit}' | sed 's/\.$//')
echo "$name"
host "$name" | awk '{print $NF}' | grep -qxF "$ip" && echo "confirmed" || echo "NOT confirmed"- Googlebot:
googlebot.comodergoogle.com. Bingbot:search.msn.com. Applebot:applebot.apple.com. CCBot:crawl.commoncrawl.org. - Ein Name in einer anderen Domain, oder einer, der nicht wieder zur Adresse auflöst, ist eine Fälschung.
OpenAI, Anthropic, Perplexity und Common Crawl veröffentlichen stattdessen die Adressbereiche ihrer Crawler als JSON (die Links stehen in der Dokumentation des jeweiligen Betreibers). Dieses Skript prüft eine Adresse gegen eine solche Liste:
python3 - 20.171.207.10 https://openai.com/gptbot.json <<'EOF'
import ipaddress, json, sys, urllib.request
ip = ipaddress.ip_address(sys.argv[1])
req = urllib.request.Request(sys.argv[2], headers={"User-Agent": "Mozilla/5.0"})
prefixes = json.load(urllib.request.urlopen(req))["prefixes"]
nets = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix")) for p in prefixes]
print("in the list" if any(ip in n for n in nets) else "NOT in the list")
EOFDieselben JSON-Listen lassen sich in einen geo-Block von nginx oder in die Firewall laden, wenn du nur die echten Crawler zulassen willst, die einen bestimmten Namen verwenden.
Crawler per Rate Limit bremsen
Ein Rate Limit wirkt unabhängig davon, wie sich ein Crawler nennt, und schützt den Server vor denen, die zu schnell crawlen. In nginx begrenzt dies jede Adresse, deren User Agent nach Bot aussieht, auf 30 Anfragen pro Minute mit einem kurzen Burst; andere Besucher werden nicht gezählt, weil ein leerer Schlüssel nicht begrenzt wird.
sudo tee /etc/nginx/conf.d/bot-limit.conf > /dev/null <<'EOF'
map $http_user_agent $bot_key {
default "";
~*(bot|crawler|spider|scraper) $binary_remote_addr;
}
limit_req_zone $bot_key zone=bots:10m rate=30r/m;
limit_req_status 429;
EOFDann kommt Folgendes in die server- oder location-Blöcke der dynamischen Seiten; lade danach wie oben neu:
limit_req zone=bots burst=10 nodelay;Achtung: Hinter einem CDN oder einem Proxy kommt jede Anfrage von der Adresse des Proxys: Setz zuerst set_real_ip_from und real_ip_header, sonst gilt das Limit für alle Besucher zusammen. Suchmaschinen werden langsamer, wenn sie 429 erhalten, wähle das Limit also großzügig.
Apache hat von sich aus kein Anfragelimit pro Adresse (mod_ratelimit begrenzt die Bandbreite). Die üblichen Optionen sind mod_evasive, ein fail2ban-Jail auf dem Access-Log oder nginx bzw. ein CDN davor.
Wenn ein Crawler alles ignoriert
Ignoriert ein Crawler robots.txt und wechselt seinen User Agent, sperr die Adressen, die er nutzt, an der Firewall (ersetze den Beispielbereich):
sudo ufw insert 1 deny from 198.51.100.0/24sudo firewall-cmd --permanent --zone=drop --add-source=198.51.100.0/24
sudo firewall-cmd --reloadWie InfraFence mit KI-Crawlern umgeht
Die Bot-Verwaltung von InfraFence liest die Access-Logs des Webservers und erkennt rund 1.500 Bots anhand öffentlicher, täglich aktualisierter Listen. KI-Crawler sind eine eigene Kategorie.
- Für jede Kategorie oder für einen einzelnen Bot wählst du: erlauben, nur protokollieren oder blockieren. Änderungen erreichen deine Server innerhalb von Sekunden.
- Jeder Bot wird in verständlichen Worten erklärt: wer ihn betreibt, wofür er da ist (Training, Suche, Assistent, Agent) und ob er angibt, robots.txt zu beachten.
- Taucht ein Bot, der auf Blockieren steht, im Log auf, wird seine Adresse an der Firewall gesperrt. Da die Sperre aus dem Log kommt, wurde die Anfrage, durch die er aufgefallen ist, bereits beantwortet.
- Bots, die sich als Suchmaschine oder als anderer bekannter Crawler ausgeben, etwa Googlebot, Bingbot oder Applebot, werden per Forward-Confirmed Reverse DNS geprüft, und Fälschungen werden als gefälscht gemeldet.
- Anfragen, die nach Bot aussehen, aber zu keinem bekannten passen, werden als unbekannte Bots gemeldet.
KI-Crawler werden an ihrem User Agent erkannt. Ein Scraper, der seinen Namen verbirgt, bleibt der Web-Firewall überlassen, die jeden Besucher nach seinem Verhalten bewertet. InfraFence ändert deine robots.txt nicht: Die Schritte oben bleiben daneben sinnvoll.
Fragen
- Schadet das Blockieren von KI-Crawlern meinem Google-Ranking?
- Nicht, wenn du die richtigen Namen blockierst.
Google-Extendedin der robots.txt hat laut Google keinen Einfluss auf die Google-Suche. Blockierst du dagegenGooglebotoder ein Muster, das darauf passt, schon. - Reicht robots.txt aus?
- Für die Crawler, die sich daran halten, ja. Gegen die, die sie ignorieren oder ihren Namen verbergen, hilft sie nicht, und genau dafür gibt es die User-Agent-Regeln und die Rate Limits.
- Sollte ich auch KI-Such-Crawler blockieren?
- Das hängt davon ab, ob du in KI-Antworten erscheinen willst. Blockierst du sie, bleiben deine Inhalte aus diesen Antworten heraus, und die Besuche, die sie bringen, gehen verloren. Viele Websites blockieren Trainings-Crawler und lassen die Suche zu.
Kostenlos auf 1 Server testen
Starter ist für einen Server kostenlos, mit vollem Schutz und automatischen Sperren. Ohne Kreditkarte.
Installiere den Agenten als root, mit deinem Token anstelle von <TOKEN>:
curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>Das Token erstellst du im Dashboard unter Server › Server hinzufügen.
