API zur Bot-Erkennung
Kunden rein, Bots raus
Vor einem Login, einer Registrierung, einem Checkout oder jeder Seite, auf die Bots es abgesehen haben, fragt Ihr Server Bot Protection nach dem Besucher und erhält eine Klasse, einen Score und die Gründe. Kein Proxy vor Ihrer Website, keine Rätsel für Ihre Kunden.
14 Tage kostenlos · Pläne ab 29 $ im Monat
# Ask before the protected action curl -X POST https://korzen.dev/v1/decide \ -H "Authorization: Bearer $KORZEN_API_KEY" \ -d '{ "ip": "203.0.113.10", "user_agent": "Mozilla/5.0 …", "token": "<_kz cookie>", "path": "/checkout" }'
// Ask before the protected action; let through on any error const d = await fetch(API + "/v1/decide", { method: "POST", headers: { Authorization: `Bearer ${KEY}` }, body: JSON.stringify({ ip, user_agent, token, path }), signal: AbortSignal.timeout(200), }).then((r) => r.json()).catch(() => null); if (d?.action === "block") return res.status(403).end();
# Ask before the protected action; let through on any error try: d = requests.post(API + "/v1/decide", headers={"Authorization": f"Bearer {KEY}"}, json={"ip": ip, "user_agent": ua, "token": token}, timeout=0.2).json() except requests.RequestException: d = {} if d.get("action") == "block": abort(403)
// Ask before the protected action; let through on any error c := &http.Client{Timeout: 200 * time.Millisecond} r, _ := http.NewRequest("POST", api+"/v1/decide", body) r.Header.Set("Authorization", "Bearer "+key) var d struct{ Action string } if res, err := c.Do(r); err == nil { json.NewDecoder(res.Body).Decode(&d) res.Body.Close() } if d.Action == "block" { http.Error(w, "try again later", 403) return }
// Ask before the protected action; let through on any error var req = HttpRequest .newBuilder(URI.create(API + "/v1/decide")) .header("Authorization", "Bearer " + KEY) .timeout(Duration.ofMillis(200)) .POST(BodyPublishers.ofString(json)).build(); String act = ""; try { var res = http.send(req, BodyHandlers.ofString()); act = mapper.readTree(res.body()) .path("action").asText(); } catch (Exception e) { /* let through */ } if (act.equals("block")) { response.sendError(403); return; }
// Ask before the protected action; let through on any error
$ch = curl_init(API . '/v1/decide');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($visitor),
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . KEY],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT_MS => 200,
]);
$d = json_decode(curl_exec($ch) ?: '{}', true);
if (($d['action'] ?? '') === 'block') {
http_response_code(403);
exit;
}
// Ask before the protected action; let through on any error // http: an HttpClient with "Authorization: Bearer KEY" var act = ""; try { using var cts = new CancellationTokenSource(200); var res = await http.PostAsJsonAsync( Api + "/v1/decide", visitor, cts.Token); var d = await res.Content .ReadFromJsonAsync<JsonElement>(cts.Token); act = d.GetProperty("action").GetString(); } catch { /* let through */ } if (act == "block") return Results.StatusCode(403);
200 OK RESPONSE
{
"request_id": "AQEAmJ3…",
"class": "bot_high",
"bot_score": 96,
"human_score": 0,
"reasons": ["behaviour", "inconsistency"],
"rules": [],
"step_up": false,
"action": "block",
"intended_action": "block",
"mode": "block",
"challenge": null,
"token_required": false,
"seen_before": 0,
"crawler": null
}Was Bot Protection über Sie entscheidet
Fragen Sie es jetzt nach diesem Browser: Es führt seinen Tag auf dieser Seite aus und antwortet, was Ihr Server bekäme, die Klasse, den Score und die Gründe.
Nur wenn Sie fragen. Die Entscheidung wird wie jede andere gespeichert, wie die Datenschutzerklärung sagt. Datenschutz
Was es stoppt
Die Angriffe, für die Bot Protection gebaut ist, an dem Schritt, auf den es jeder abgesehen hat.
- Registrierung Fake-Accounts und Missbrauch kostenloser Tests Skripte, die Konten zu Hunderten eröffnen, für Guthaben, Aktionen, Tests oder Spam: New Account Fraud. Lesen →
- Login Credential Stuffing und Account Takeover Geleakte Paare aus E-Mail und Passwort, gegen Ihren Login durchprobiert, bis einige funktionieren. Lesen →
- Checkout Card Testing Kleine Zahlungen mit gestohlenen Karten, um herauszufinden, welche noch funktionieren, bevor sie verkauft werden. Lesen →
- Jede Seite Scraping und Scalping Preise, Inhalte und knappe Bestände, von Automatisierung abgegriffen, schneller als jeder Mensch. Lesen →
Gemessen, nicht versprochen
Das Dashboard
Jede Entscheidung sehen, und warum
Das Dashboard, das Ihr Team öffnet, wenn der Traffic steigt: was Bot Protection geantwortet hat, Stunde für Stunde, und die Regeln hinter jeder Antwort.
Jede Antwort, mit ihren Gründen
Die letzten Entscheidungen, die neueste zuerst, alle paar Sekunden aktualisiert. Filtern Sie nach Klasse, Pfad, Land, Grund oder Zeit und sehen Sie jede Regel, die gegriffen hat. Fahren Sie über einen Grund, um zu lesen, was er bedeutet.
So funktioniert es
Zwei Code-Snippets. Keine Änderung an Ihrem Traffic
Den Tag einbauen
Ein kleines Skript in Ihren Seiten sendet, was der Browser über sich zeigt, direkt an Bot Protection und hält einen signierten Token in einem First-Party-Cookie.
<script src="…/v1/tag.js" data-site-key="sk_…" async></script>
Vor der Aktion fragen
Vor einem Login, einer Registrierung, einem Checkout oder jeder Seite, auf die Bots es abgesehen haben, sendet Ihr Server IP, User-Agent und Token der Anfrage, mit einem kurzen Timeout.
POST /v1/decide {"ip": "…", "user_agent": "…", "token": "…", "path": "/checkout"}
Die Aktion anwenden
Jede Antwort lautet allow, challenge oder block. Sie beginnen im Monitor-Modus, in dem sie immer allow ist, und schalten den Block-Modus ein, wenn Sie ihm vertrauen. Bei jedem Fehler oder Timeout lassen Sie den Besucher durch.
if d.Action == "block" { return http.StatusForbidden }
Oder fügen Sie einen Prompt in Claude Code, Codex oder Cursor ein und lassen Sie beides hinzufügen: mit KI einrichten.
Anleitungen für Next.js, Express, Django, Rails, Laravel, Spring Boot, ASP.NET Core, Cloudflare Workers und mehr, in den Docs.
Die Antwort
Eine Klasse, nach der Sie handeln können, keine Zahl zum Raten
Ein Mensch, mit einem Nachweis außerhalb der Session: eine frühere Bestellung, die eigene Karte.
allowEin Mensch, für den Ihr eigenes Feedback bürgt.
allowNicht genug Belege in die eine oder andere Richtung. Die meisten ersten Besuche landen hier.
allowAutomatisierung, erkannt an dem, was der Client tut.
challengeAutomatisierung, mit starken Belegen im Verhalten.
blockWenn starke Belege in beide Richtungen zeigen, sagt die Antwort step_up: Fragen Sie nach einem Passkey oder 3-D Secure, nicht nach einem CAPTCHA.
Was Bot Protection liest
Belege, die ein Bot nicht lange fälschen kann
Konsistenz
Passt der User-Agent zu den Client Hints, der Plattform, dem Web Worker, der GPU? Ein gepatchter Browser widerspricht sich selbst.
Echte Eingaben
Welche Arten von Eingaben die Seite gesehen hat: Maus, Tasten, Touch, Mausrad. Skripte klicken, ohne sich je zu bewegen.
Das Netzwerk
Rechenzentren, eine Zeitzone weit weg von der IP, einen Round Trip, die einen Proxy-Hop verrät.
Farmen
Ein Gerät hinter vielen Netzwerken, ein Token an vielen Ausgängen, ein Fingerprint über Sessions hinweg: Gruppen, die eine Farm nicht vermeiden kann.
Verhalten über die Zeit
Roboterhafter Takt, Wiederholungen trotz Ablehnungen, Anfragen, die nie eine Seite laden. Zehn Minuten Gedächtnis pro Besucher.
Ihr Feedback
Melden Sie Bot Protection eine abgeschlossene Bestellung oder einen Chargeback. Ein Nachweis außerhalb der Session macht einen Besucher zum Menschen.
Warum eine API
Schutz ohne neuen Single Point of Failure
| Bot Protection | CAPTCHA | Proxy vor Ihrer Website | |
|---|---|---|---|
| Ihre Besucher lösen Rätsel | Nie | Jedes Mal | Manchmal |
| Ihr Traffic läuft hindurch | Nein | Nein, aber jedes Formular wartet darauf | Komplett |
| Wenn es ausfällt | Besucher kommen durch | Formulare stehen still | Ihre Website steht still |
| Sagt Ihnen, warum | Die Klasse, der Score und die Art der Belege | Bestanden oder nicht | Ein Score |
| Wo Sie entscheiden | In Ihrem Code | In deren Widget | In deren Regeln |
Fragen
Bevor Sie fragen
Werden echte Kunden blockiert?
Ein VPN, ein Mobilfunknetz oder ein geteilter Büroanschluss können den Score erhöhen, erreichen allein aber nie bot. bot braucht Belege für Automatisierung in dem, was der Client tut. Kunden, die schon bei Ihnen gekauft haben, kommen als human high zurück.
Speichert Bot Protection personenbezogene Daten?
Kennungen werden mit einem Schlüssel pro Kunde gehasht, der täglich rotiert, sodass sie nicht über Kunden oder Tage hinweg verknüpft werden können. Verhalten wird nach zehn Minuten vergessen; nur Zählwerte und die letzten Entscheidungen bleiben für Ihr Dashboard.
Sieht ein blockierter Bot meine Website noch?
Ja. Bot Protection beurteilt die Aktionen, nach denen Ihr Server fragt, etwa eine Registrierung, eine Anmeldung oder einen Checkout, nicht das Laden der Seiten. Auch im Block-Modus lädt ein Bot Ihre Seiten; was Ihr Server ablehnt, ist die Aktion.
Ihre Website, ohne die Bots
Konto anlegen, zwei Snippets kopieren und zusehen, wie die Entscheidungen eintreffen.