Web Bot Auth

Ver en Markdown

OpenWAF Browsers firma cada petición con Web Bot Auth para que los sitios comprueben que les visita un agente. Cómo funciona, cómo verificarlo y cómo desactivarlo.

En esta página

Web Bot Auth es un borrador del IETF que permite a un bot o a un agente demostrar quién es con una firma criptográfica en cada petición, en lugar de un User-Agent que cualquiera puede copiar. Se apoya en HTTP Message Signatures (RFC 9421). OpenWAF Browsers firma las peticiones de cada navegador por defecto.

Qué lleva una petición firmada

Las cabeceras propias de Chrome y su User-Agent no cambian. Se añaden tres cabeceras:

Signature-Agent: "https://browsers.openwaf.dev"
Signature-Input: sig1=("@authority" "signature-agent");created=1761732000;keyid="…";alg="ed25519";expires=1761732300;nonce="…";tag="web-bot-auth"
Signature: sig1=:…:
CabeceraSignificado
Signature-AgentQuién firma: el origen https://browsers.openwaf.dev, donde se publica la clave pública.
Signature-InputQué se firma y cómo: el host de la petición (@authority) y la cabecera Signature-Agent, una clave Ed25519 (alg="ed25519"), el id de la clave (su huella JWK según RFC 7638), la hora de creación, una caducidad 5 minutos después, un nonce aleatorio y la etiqueta web-bot-auth.
SignatureLa firma Ed25519 sobre esos componentes.

Las cabeceras se añaden dentro del navegador a cada petición HTTP y HTTPS que hace: cargas de página, frames, subrecursos, fetch y XHR. Las conexiones WebSocket y las peticiones internas de los service workers pueden no llevarlas.

Directorio de claves

La clave pública se publica como un conjunto de claves JSON Web Key en:

https://browsers.openwaf.dev/.well-known/http-message-signatures-directory

Se sirve con el tipo application/http-message-signatures-directory+json:

{"keys": [{"kty": "OKP", "crv": "Ed25519", "x": "…", "kid": "…"}]}

El kid coincide con keyid en Signature-Input.

Verificarlo en tu sitio

Un sitio que quiera reconocer OpenWAF Browsers, para permitirlo, limitarlo aparte o simplemente contarlo:

  1. Lee Signature-Agent y comprueba que es "https://browsers.openwaf.dev".
  2. Descarga el directorio de claves (guárdalo en caché; cambia poco) y elige la clave cuyo kid coincide con keyid.
  3. Reconstruye la base de la firma con @authority (el host de la petición, en minúsculas y sin puerto por defecto), el valor de Signature-Agent y los parámetros de Signature-Input, como describe la RFC 9421, y verifica la firma Ed25519.
  4. Recházala si expires ya ha pasado o si created está demasiado en el futuro. Si quieres, recuerda los nonces para rechazar repeticiones.

Las bibliotecas que implementan la verificación de Web Bot Auth hacen los pasos 2 a 4 por ti. Los sitios detrás de OpenWAF ya comprueban firmas de Web Bot Auth como uno de los métodos de verificación de bots del control de rastreadores IA.

Una firma válida dice que la petición viene de un navegador de OpenWAF Browsers. No dice qué cliente lo usa, y no significa que la petición sea bienvenida: qué hacer con ella lo decides tú.

Desactivarlo

Te recomendamos dejarlo activado. Una petición firmada es honesta sobre ser automática, así que los sitios pueden dejarla pasar a propósito en vez de adivinar, y un sitio que la bloquea ha tomado una decisión clara que conviene respetar. Algunos sitios tratarán mejor a los agentes firmados que al tráfico anónimo.

Si tienes un motivo para desactivarlo:

  • Para un navegador: arráncalo con "webBotAuth": false:

    curl -sS -X POST https://browsers.openwaf.dev/v1/browsers \
      -H "X-API-Key: $OPENWAF_BROWSERS_KEY" -H "Content-Type: application/json" \
      -d '{"webBotAuth": false}'
  • Como valor por defecto de la organización: un administrador desactiva Web Bot Auth en Navegadores → Ajustes, envía PATCH /v1/orgs/{org}/browsers/settings con {"web_bot_auth": false}, ejecuta openwaf-cloud ctl browsers settings --web-bot-auth off --reason "…" o usa la herramienta MCP browser_settings. Los navegadores nuevos van entonces sin firmar, salvo que pidan "webBotAuth": true.

Quitar la firma no vuelve sigiloso a un navegador: sigue siendo Chrome sin modificar con su propio User-Agent, desde las direcciones de OpenWAF. Mira qué no es.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar