Integrationen
Traefik-Plugin
Eine Middleware aus dem Traefik Plugin Catalog, die jeden Besucher prüft, bevor der Router die Anfrage weitergibt.
Installation
- 1Deklarieren Sie das Plugin in der statischen Konfiguration von Traefik und starten Sie Traefik neu.
- 2Legen Sie eine Traefik-Website im Dashboard an und kopieren Sie ihre Site-ID.
- 3Setzen Sie
IPSCANNER_API_KEYim Traefik-Container. - 4Legen Sie eine
ipscanner-Middleware mit der Site-ID an und hängen Sie sie an einen Router.
Eine neue Website startet im Monitor-Modus: Sie erhält Header, blockiert wird nichts, bis Sie auf Enforce umschalten.
Überblick auf der Seite zum Traefik-Plugin, Quellcode und vollständige Beispiele auf GitHub.
experimental:
plugins:
ipscanner:
moduleName: github.com/ipscanner/ipscanner-traefik
version: v0.1.0Coolify, Compose, Kubernetes
- Coolify
Plugin-Flags in die command-Liste des Proxys, den Schlüssel in seine environment. Dann die Middleware in die Container-Labels Ihrer App, angehängt an jeden von Coolify erzeugten Router. Pro App ein eigener Middleware-Name.
- Docker Compose
Flags am Traefik-Service, die Middleware in den Labels Ihrer App. Andere Router nutzen sie als
ipscanner@docker. - Kubernetes
Eine Middleware-Ressource mit dem Schlüssel aus einem Secret. Verweisen Sie darauf aus einer IngressRoute oder aus einem Ingress mit der Annotation
router.middlewares. - File Provider
Die Middleware in einer dynamischen Konfigurationsdatei, mit dem Schlüssel aus einem eingebundenen Secret.
Ohne Schlüssel passiert jede Anfrage mit X-IPScanner-Status: skipped.
- '--experimental.plugins.ipscanner.modulename=github.com/ipscanner/ipscanner-traefik'
- '--experimental.plugins.ipscanner.version=v0.1.0'
environment:
- IPSCANNER_API_KEY=pk_live_...Konfiguration
apiKeyAPI-Schlüssel. Plugin-Optionen erscheinen im Traefik-Dashboard, nutzen Sie daher besser
IPSCANNER_API_KEY,apiKeyFileoder einenurn:k8s:secret-Verweis.apiKeyFileDatei mit dem API-Schlüssel, etwa ein eingebundenes Docker- oder Kubernetes-Secret.
siteIdSite-ID aus dem Dashboard. Modus und Richtlinie kommen dann aus dem Dashboard.
modeStandard monitormonitor oder enforce. Mit Website wirkt nur monitor: Die Website bleibt dann im Monitor-Modus.
blockClassesStandard malicious_automationIm Enforce-Modus ohne Website blockierte Klassen: malicious_automation, ai_agent, tor, vpn, proxy, hosting, relay oder none.
trustedProxiesAdressen und CIDR-Bereiche, deren IP-Header vertraut wird. private ergänzt die privaten Bereiche, cloudflare die Cloudflare-Bereiche.
ipHeadersStandard X-Forwarded-ForHeader, die der Reihe nach von einem vertrauenswürdigen Proxy gelesen werden. Hinter Cloudflare:
CF-Connecting-IP.timeoutStandard 1500msZeitbudget für eine Prüfung. Bei Zeitüberschreitung passiert die Anfrage.
cacheTTLStandard 10mWie lange ein Ergebnis pro Website, IP und User-Agent wiederverwendet wird.
cacheSizeStandard 10000Ergebnisse im Speicher.
policyTTLStandard 30sWie lange die Richtlinie der Website wiederverwendet wird.
skipPathsStandard statische DateienRegex auf den Pfad, ohne Groß- und Kleinschreibung. Passende Anfragen werden nicht geprüft; none prüft jeden Pfad.
blockMessageStandard Blocked by IPScanner edge guard.Text der 403-Seite.
debugStandard falseErgänzt Antworten um
X-IPScanner-Status,-Classund-Actionund protokolliert jede Entscheidung in einer Zeile.apiUrlStandard https://ipscanner.ioBasis-URL der API.
Listen nehmen YAML-Listen oder kommagetrennte Werte (blockClasses=tor,vpn in Labels). Zeitangaben in Go-Syntax: 1500ms, 30s, 10m. Eine ungültige Option deaktiviert den Router mit einem Fehler im Traefik-Log.
Client-IP
Der Besucher ist die Adresse, die Traefik sieht, außer diese Adresse ist ein vertrauenswürdiger Proxy.
trustedProxiesX-Forwarded-Foroder die ListeipHeaderswird nur von diesen Adressen gelesen.forwardedHeaders.trustedIPsTraefik verwirft
X-Forwarded-Forvon Peers außerhalb der vertrauenswürdigen IPs des Entry Points. Setzen Sie also beides oder lesen SieCF-Connecting-IP.trustedProxies=cloudflare,ipHeaders=CF-Connecting-IPHinter Cloudflare mit aktivem Proxy (orange Wolke): beides an der Middleware setzen.
Gesetzte Header
Werden der Anfrage an Ihre App hinzugefügt. Eingehende X-IPScanner-*-Header werden vorher entfernt, damit kein Client ein eigenes Ergebnis mitschickt.
X-IPScanner-Statusok, error, timeout, backoff, skippedOb die Prüfung lief und falls nicht, warum.
X-IPScanner-Classhuman, verified_bot, ai_agent, …Traffic-Klasse des Besuchers.
X-IPScanner-Actionallow, flag, block, would_flag, would_blockWas mit der Anfrage geschah. Im Monitor-Modus
would_flagundwould_block.X-IPScanner-Network-Classresidential_clean, hosting, vpn, tor, …Netzwerkklasse der Adresse.
X-IPScanner-Anonymizedtrue, falseDas Netzwerk verbirgt, wo der Besucher ist.
X-IPScanner-Risk0-100Risikowert der Adresse.
X-IPScanner-CountryDELand der Adresse.
X-IPScanner-Sitesite_...Die Site-ID, wenn eine gesetzt ist.
Schlägt eine Prüfung fehl oder wird sie übersprungen, ist nur X-IPScanner-Status gesetzt.
X-IPScanner-Status: ok
X-IPScanner-Class: ai_agent
X-IPScanner-Action: would_block
X-IPScanner-Network-Class: hosting
X-IPScanner-Anonymized: true
X-IPScanner-Risk: 60
X-IPScanner-Country: US
X-IPScanner-Site: site_4fQ8nZ2kLm7xR1vT9cBwCache und Fail-open
- Richtlinie der WebsiteGET /v1/sites/{id}/policy
Modus und Richtlinie pro Klasse, 30 s im Cache. Scheitert eine Aktualisierung, gilt die letzte gültige Richtlinie bis zu 24 Stunden. Änderungen greifen ohne Neustart.
- Ergebnis-Cache
Eine Prüfung pro Besucher (Website, IP, User-Agent) alle 10 Minuten, im Speicher, bis zu 10.000 Besucher. Bleibt bei Konfigurationsänderungen erhalten.
- Fail-open
1,5 s für Ergebnis und Richtlinie zusammen. Bei Zeitüberschreitung oder API-Fehler passiert die Anfrage, und Prüfungen pausieren 30 s, nach 401, 402, 403 oder 429 fünf Minuten.
- Immer durchgelassen
Verifizierte Crawler, OPTIONS-Anfragen, private und Loopback-Adressen sowie Pfade auf der Ausnahmeliste.
- Blockiert
Eine 403-Seite mit der Request-ID. Der Monitor-Modus blockiert nie.
- Free-Plan
Websites im Free-Plan bleiben im Monitor-Modus.
- Kosten
2 Request-Einheiten pro Besucher ohne Cache-Treffer. Wiederholte Anfragen im Cache-Fenster sind kostenlos.
Was gesendet wird
- POST /v1/edge/checkZählt als 2 Anfragen
Ein Aufruf pro Besucher ohne Cache-Treffer.
- GET /v1/sites/{id}/policyNicht berechnet
Die Richtlinie der Website, wenn eine Site-ID gesetzt ist.
X-IPScanner-Source: traefikKennzeichnet die Aufrufe in Traffic und Nutzung als Aufrufe dieser Integration.
User-Agent: ipscanner-traefik/<version>Die Version, angezeigt auf der Seite der Website im Dashboard.
Request-Body
sitestringDie Site-ID, wenn eine gesetzt ist.
ipstringDie Adresse des Besuchers.
user_agentstringDer User-Agent des Besuchers.
headersobjectAccept, Accept-Language, Accept-Encoding, Sec-CH-UA* und Sec-Fetch-*, jeweils auf 512 Byte gekürzt.
request_idstringDie
X-Request-Idder Anfrage oder eine neue ID, die auch auf der Sperrseite steht.
curl https://ipscanner.io/v1/edge/check \
-H "Authorization: Bearer $IPSCANNER_API_KEY" \
-H "X-IPScanner-Source: traefik" \
-H "User-Agent: ipscanner-traefik/0.1.0" \
-H "Content-Type: application/json" \
-d '{
"site": "site_4fQ8nZ2kLm7xR1vT9cBw",
"ip": "203.0.113.7",
"user_agent": "Mozilla/5.0",
"headers": {
"accept-language": "en-US"
},
"request_id": "9f2c41b7d03e77f2"
}'