Con una conexión rápida, la prueba de trabajo del modo bajo ataque terminaba antes de que el visitante lo notara, y un script capaz de calcular SHA-256 pasaba igual. La página del reto añade ahora un paso interactivo: cuando la prueba de trabajo está resuelta, muestra el nombre del sitio, «Verifica que eres humano marcando la casilla.» y una caja de verificación con la casilla «Verifica que eres humano» («Verify you are human» en inglés) junto a la marca de la zona, en su color de acento. Al marcarla, la casilla se convierte en un indicador de carga con «Verificando…», luego en una marca verde con «Correcto», y la página carga; un fallo muestra una cruz roja y «Reintentar». La casilla es un control real: recibe el foco, se marca con Espacio y cada estado se anuncia a los lectores de pantalla. Un pie «Protegido por OpenWAF | ID: …» da un ID con el que el soporte encuentra los intentos de verificación de esa página.
Solo cuenta un evento de entrada de confianza del navegador (un clic, un toque, o Espacio o Intro): un clic o un checked = true desde un script de la página no envían nada, y una resolución que llega menos de medio segundo después de emitirse el reto se rechaza con interaction-required, lo que frena los reenvíos instantáneos. Los navegadores que declaran estar automatizados reciben la misma caja, sin huella digital adicional. Los pases, su duración y su ámbito no cambian.
El paso es fricción para los scripts, no una prueba de que haya una persona: la automatización que inyecta entrada a través del navegador o del sistema operativo (por ejemplo Playwright o Puppeteer sobre el protocolo DevTools) genera eventos de confianza y puede pasar. Lo que consigue es que cada pase nuevo cueste una interacción real.
El widget Verify usa la misma caja en su estado interactivo, y la site key de prueba owk_test_interactive la muestra.
El paso viene activado. Pon challenge.under_attack.interactive a false para usar solo la prueba de trabajo: Pedir verificación (casilla) en la tarjeta del modo bajo ataque del panel, "interactive": false en PATCH /v1/orgs/{org}/zones/{zone}/edge, openwaf-cloud ctl zones under-attack example.com on --interactive=false o interactive en la herramienta MCP under_attack. Las resoluciones con la caja se cuentan como interactivas en la analítica de Verificación.