Um widget roda em sites que não são seus: seus clientes incorporam seu formulário de reserva, loja ou bilheteria nas páginas deles. O Bot Protection funciona ali também, com três pontos a acertar: onde a tag roda, como o token chega ao seu servidor e quais domínios o seu plano conta.
Num frame no seu próprio domínio (recomendado)
Sirva o widget do seu domínio e deixe seus clientes o incorporarem num <iframe>. Coloque a tag na página dentro do frame, como em qualquer página sua. O Bot Protection então vê o seu domínio, seja qual for o site que o incorpora: um domínio no seu plano, comprovado como qualquer outro (sua página inicial tem a tag, ou você o adiciona na página Set-up).
Num frame, os cookies da sua página são de terceiros. Chrome, Edge e Firefox os guardam separados para cada site que incorpora você, e o Safari não guarda nenhum. Então não dependa do cookie _kz ali: antes da ação protegida, pegue o token da tag e envie você mesmo.
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), });
No seu servidor, passe esse header para a chamada como o token, acima do 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);
Todo SDK e a chamada do seu servidor aceitam um campo token do mesmo jeito. O armazenamento de um frame também fica separado por site, então o mesmo visitante em dois sites dos seus clientes são dois dispositivos para o Bot Protection. Isso é um sinal ausente, nunca evidência de bot.
A página de desafio e os frames
A página de desafio devolve o visitante com um cookie que um frame não guarda. Dentro de um frame, responda challenge com um passo seu (seu CAPTCHA, uma verificação por email ou telefone) e deixe require_token fora das ações do frame. Veja monitor mode e block mode para o que cada ação significa.
Um script na página do seu cliente
Um widget que é um script que seus clientes colam, sem frame, roda na página deles. Então a tag roda no domínio deles, cada domínio dos seus clientes conta no seu plano, e as páginas deles precisam ter a tag com a sua site key. Seu script chama seu servidor de outra origem, onde cookies não são enviados: envie o token no header como acima e permita x-korzen-token na sua resposta de CORS.
Os hostnames dos seus clientes
Um hostname que seu cliente aponta para você (tickets.lojadele.com, um CNAME) é o domínio dele: conta como um dos domínios do seu plano, como o script acima. Os planos protegem até cinco; com mais hostnames dos seus clientes, sirva o widget num frame no seu domínio, ou escreva para nós.