Integración en 5 minutos
Un script en el navegador, un atributo en el formulario y una línea en tu servidor. Empieza en modo observación: tu web sigue igual y el panel te dice qué habría retenido.
1. Da de alta el sitio
En el panel creas el sitio y obtienes su identificador y su secreto. El secreto se muestra una sola vez: guárdalo en una variable de entorno de tu servidor (BIA_SECRET) y nunca en el código del navegador.
2. Añade el script
En las páginas que quieras medir, lo antes posible. Pesa 1,9 KB comprimido.
<script src="https://COLLECTOR/v1/k.js" data-site="ID_DEL_SITIO" defer></script>3. Marca el formulario
El script añade al envío un token firmado de un solo uso. Si tu web usa fetch o es una SPA, envía el token en la cabecera x-bia-token.
<form method="post" action="/consulta" data-bloqueo>
<input name="q" data-bloqueo-field>
<button>Buscar</button>
</form>4. Verifica en tu servidor
El middleware comprueba la firma, la caducidad y que el token no se haya usado antes. No llama a nuestro servidor al verificar. Hay adaptadores para Express, Fastify y Next.js.
import { createBloqueo } from '@bloqueo/node';
const bloqueo = createBloqueo({
siteId: process.env.BIA_SITE_ID,
secret: process.env.BIA_SECRET,
});
app.post('/consulta', express.urlencoded({ extended: false }), expressMiddleware(bloqueo), handler);5. Empieza en observación
El modo del sitio se cambia en el panel y viaja con el token. En observación todo pasa y el resultado indica si se habría retenido. En bloqueo se retiene con un 403, o con la respuesta que definas tú.
Sin token válido (sin JavaScript, o el servicio caído) la petición pasa por defecto, para no dejar fuera a las personas. Puedes cambiarlo, pero mídelo antes en observación con tráfico real.
Opcional: escudo para webs estáticas
Para frenar las descargas directas, que no ejecutan el script, el escudo se pone en el edge (Vercel, Next, Cloudflare Workers o Express) y también arranca en observación.
import { createShield } from '@bloqueo/node/shield';
const shield = createShield({ mode: 'observe' });
export default async (request) =>
(await shield.handle(request)) ?? undefined;Antes de pasar a bloqueo
- Deja la observación el tiempo suficiente para ver tráfico real, también el de tus personas.
- Revisa en el panel qué se habría retenido y si hay algo que no esperabas.
- Lee los límites: no es una atestación y un agente adaptado podría evadirlo.