Ein Widget läuft auf Websites, die nicht Ihre sind: Ihre Kunden betten Ihr Buchungsformular, Ihren Shop oder Ihren Ticketschalter in ihre Seiten ein. Bot Protection funktioniert auch dort, mit drei Punkten, die stimmen müssen: wo der Tag läuft, wie das Token Ihren Server erreicht und welche Domains Ihr Plan zählt.
In einem Frame auf Ihrer eigenen Domain (empfohlen)
Liefern Sie das Widget von Ihrer Domain aus und lassen Sie Ihre Kunden es in einem <iframe> einbetten. Setzen Sie den Tag in die Seite im Frame, wie auf jede Ihrer Seiten. Bot Protection sieht dann Ihre Domain, egal welche Website sie einbettet: eine Domain für Ihren Plan, bestätigt wie jede andere (Ihre Startseite trägt den Tag, oder Sie fügen sie auf der Set-up-Seite hinzu).
In einem Frame gehören die Cookies Ihrer Seite einem Drittanbieter. Chrome, Edge und Firefox halten sie für jede einbettende Website getrennt, Safari behält keine. Verlassen Sie sich dort also nicht auf das Cookie _kz: Holen Sie vor der geschützten Aktion das Token vom Tag und senden Sie es selbst.
const token = await window.korzen?.ready(); await fetch("/api/book", { method: "POST", headers: { "content-type": "application/json", "x-korzen-token": token || "" }, body: JSON.stringify(order), });
Geben Sie auf Ihrem Server diesen Header als token an den Aufruf, vor dem Cookie:
const input = fromNodeRequest(req, { ip: (_get, r) => r.ip, path: "/api/book" }); input.token = req.get("x-korzen-token") || input.token; const decision = await korzen.decide(input);
Jedes SDK und der Aufruf von Ihrem Server nehmen ein Feld token genauso an. Auch der Speicher eines Frames ist pro Website getrennt, daher ist derselbe Besucher auf zwei Websites Ihrer Kunden für Bot Protection zwei Geräte. Das ist ein fehlendes Signal, nie ein Hinweis auf einen Bot.
Die Challenge-Seite und Frames
Die Challenge-Seite schickt den Besucher mit einem Cookie zurück, das ein Frame nicht behält. Beantworten Sie challenge in einem Frame stattdessen mit einem eigenen Schritt (Ihr CAPTCHA, eine Prüfung per E-Mail oder Telefon) und lassen Sie require_token bei den Aktionen des Frames weg. Was jede Aktion bedeutet, steht unter Monitor- und Block-Modus.
Ein Script auf der Seite Ihres Kunden
Ein Widget, das ein Script ist, das Ihre Kunden ohne Frame einfügen, läuft auf deren Seite. Dann läuft der Tag auf deren Domain, jede Domain Ihrer Kunden zählt für Ihren Plan, und deren Seiten müssen den Tag mit Ihrem Site Key tragen. Ihr Script ruft Ihren Server von einem anderen Origin auf, wohin keine Cookies gesendet werden: Senden Sie das Token wie oben im Header und erlauben Sie x-korzen-token in Ihrer CORS-Antwort.
Die eigenen Hostnamen Ihrer Kunden
Ein Hostname, den Ihr Kunde auf Sie zeigen lässt (tickets.ihrshop.de, ein CNAME), ist seine Domain: Er zählt als eine der Domains Ihres Plans, wie das Script oben. Die Pläne schützen bis zu fünf; bei mehr Hostnamen Ihrer Kunden liefern Sie das Widget in einem Frame auf Ihrer Domain aus, oder schreiben Sie uns.