CallMeTechie
EN Anmelden
Home Produkte Blog Über mich Kontakt

AI-Bot-Blocker

v1.x · Updated vor 1 Monat

Übersicht

Der AI-Bot-Blocker schützt über GateControl exponierte Services vor unerwünschten AI-Crawlern. Er erkennt und blockiert Zugriffe von bekannten AI-Firmen (OpenAI, Google, AWS, DeepSeek, GitHub Copilot, Microsoft Azure) anhand ihrer IP-Adressbereiche — direkt auf Reverse-Proxy-Ebene, bevor der Request das Backend erreicht.

Lizenz-Feature-Key: bot_blocking

Funktionsweise

Der Bot-Blocker basiert auf dem caddy-defender Plugin für Caddy. Er wird als erster Handler in die Caddy-Route-Chain eingefügt — noch vor Request-Tracing, Rate-Limiting, Authentifizierung und Compression. Dadurch werden Bots sofort abgewiesen, ohne andere Handler zu belasten.

Erkannte IP-Bereiche

Das Plugin pflegt automatisch aktuelle IP-Listen der folgenden Anbieter:

Anbieter Beschreibung
OpenAI GPTBot, ChatGPT-User und andere OpenAI-Dienste
AWS Amazon Web Services (häufig von AI-Crawlern genutzt)
Google Cloud Google-Extended, Gemini und andere Google-AI-Dienste
GitHub Copilot GitHub Copilot Anfragen
DeepSeek DeepSeek AI-Crawler
Azure Microsoft Azure Public Cloud

Die IP-Listen werden vom Plugin-Maintainer regelmäßig aktualisiert.

Bot-Counter

Funktionsweise

Ein Hintergrund-Task zählt alle 60 Sekunden die geblockten Requests pro Route. Der Counter basiert auf HTTP 403-Responses im Caddy Access-Log, gefiltert nach der Domain der Route.

Anzeige

In der Routen-Liste wird ein oranges Badge angezeigt:

  • Bot-Icon + Zahl (z.B. 🤖 42): Anzahl der bisher geblockten Requests
  • Nur Bot-Icon (ohne Zahl): Bot-Blocker ist aktiv, aber noch keine Bots geblockt

Das Badge wird nur für HTTP-Routen angezeigt (nicht für L4/TCP-Routen).

Bekannte Einschränkung

Der Counter zählt alle HTTP 403-Responses auf der Route, nicht nur die vom Bot-Blocker. Wenn auf derselben Route auch IP-Zugriffskontrolle oder ACL aktiv ist, können diese ebenfalls 403-Responses erzeugen, die mitgezählt werden. Für die meisten Anwendungsfälle ist die Genauigkeit ausreichend.

Testen

Bot-Blocking verifizieren

# Normaler Request — sollte durchkommen
curl -s -o /dev/null -w "%{http_code}" https://deine-route.com/
# Erwartetes Ergebnis: 200 (oder 302 bei Auth)

# Request von einer OpenAI-IP simulieren (nur im lokalen Netzwerk möglich)
# Stattdessen: Im GateControl-Log nach "defender" Einträgen suchen
docker logs gatecontrol 2>&1 | grep "defender"

Counter prüfen

# Route-Daten abrufen — bot_blocker_count enthält den aktuellen Zähler
curl -s /api/v1/routes/:id | jq '.route.bot_blocker_count'

Einschränkungen

  • Nur HTTP-Routen: L4/TCP-Routen unterstützen kein Bot-Blocking (caddy-defender ist ein HTTP-Handler)
  • IP-basiert: Blockierung basiert auf IP-Adressen, nicht auf User-Agent-Strings. Bots die über nicht-gelistete IP-Bereiche kommen, werden nicht erkannt.
  • Keine benutzerdefinierten IP-Ranges: Es werden die vom Plugin gepflegten Standard-Ranges verwendet
  • Keine Whitelist: Einzelne IPs können nicht vom Blocking ausgenommen werden
  • Counter-Genauigkeit: Zählt alle 403er, nicht nur Bot-Blocks (siehe oben)

Datenbank

Felder in der routes-Tabelle

Spalte Typ Default Beschreibung
bot_blocker_enabled INTEGER 0 Feature aktiviert (0/1)
bot_blocker_mode TEXT 'block' Aktiver Modus
bot_blocker_count INTEGER 0 Kumulativer Block-Counter
bot_blocker_config TEXT null JSON mit modusspezifischen Optionen

Migration

Version 28 (add_bot_blocker) — erstellt am 2026-03-28.

Backup/Restore

Die Bot-Blocker-Konfiguration (bot_blocker_enabled, bot_blocker_mode, bot_blocker_config) wird bei Backup/Restore berücksichtigt. Der bot_blocker_count wird nicht exportiert — der Counter startet nach einem Restore bei 0.

Technische Details

Caddy-Handler-Config

{
  "handler": "defender",
  "raw_responder": "block",
  "ranges": ["openai", "aws", "gcloud", "githubcopilot", "deepseek", "azurepubliccloud"]
}

Handler-Position in der Route-Chain

1. defender (Bot-Blocker)     ← blockiert Bots sofort
2. trace (Request-Tracing)
3. headers (Custom Headers)
4. rate_limit
5. mirror (Request Mirroring)
6. encode (Komprimierung)
7. reverse_proxy (Backend)

Go-Modul

pkg.jsn.cam/caddy-defender (ursprünglich github.com/JasonLovesDoggo/caddy-defender)

Background-Task

  • Intervall: 60 Sekunden
  • Quelle: /data/caddy/access.log
  • Logik: Parst JSON-Zeilen, filtert nach status === 403, matched request.host gegen Routen mit bot_blocker_enabled, inkrementiert bot_blocker_count
  • Log-Rotation: Timestamp-basiertes Tracking (kein Offset), kompatibel mit Caddy's Log-Rotation (10 MB, 3 Dateien)

Cookie Settings

Wir verwenden Cookies, um Ihre Erfahrung zu verbessern. Essentielle Cookies sind immer aktiv.

Datenschutzerklärung
ESC
↑↓ navigate open esc close