Por qué no hay acertijos de CAPTCHA
Los CAPTCHAs intercambian reducción de spam por fricción: ralentizan o bloquean a visitantes reales, se rompen para lectores de pantalla y otras tecnologías de asistencia, y cada vez más ni siquiera detienen a los bots, los servicios modernos de resolución los vencen fácilmente. También bloquean exactamente al público para el que está construido Formpaste: un agente de IA que envía legítimamente un formulario en nombre de un humano no debería tener que resolver un acertijo diseñado para detectarlo como no humano. En cambio, cada envío se puntúa mediante heurísticas económicas e integradas, sin llamadas a APIs externas, sin costo por envío, sin ningún desafío visible. Consulta Filtrado de spam para la mecánica completa; esta guía trata sobre usarlas bien.1. Conecta el honeypot (botcheck)
Lo de mayor valor que puedes hacer es incluir el campo botcheck y
ocultarlo correctamente:
- Ocúltalo con CSS (
display:none), no contype="hidden". Los bots poco sofisticados que específicamente omiten los inputstype="hidden"igual completarán un inputtextque solo está estilizado como invisible, eso es lo que los atrapa. - No lo elimines “porque nada lo completa”. Un campo
botcheckvacío que se envía exitosamente junto a datos reales es exactamente lo que debería pasar con un visitante humano, es silencioso y gratuito. Solo importa cuando algo más, un bot, o una extensión de navegador que autocompleta cada campo que encuentra, lo llena.
botcheck conectado; si
armaste tu formulario a mano en lugar de copiar uno, agrégalo.
2. Agrega el campo de tiempo (_ts)
Un campo opcional _ts lleva la marca de tiempo de cuando se renderizó tu
formulario. Un envío que llega de forma implausiblemente rápida, más
rápido de lo que un humano podría plausiblemente haber leído el
formulario y escrito una respuesta, se puntúa como sospechoso. Esta es
una forma económica de detectar envíos programados que se saltan el
renderizado por completo y simplemente envían un payload con POST.
Date.now() en JavaScript, o el momento de
renderizado del servidor para una página estática).
3. Deja que el resto se ejecute automáticamente
Una vez queaccess_key está conectado, las heurísticas restantes no
necesitan configuración y se ejecutan en cada envío:
- Densidad de enlaces: un mensaje repleto de varias URLs se puntúa como spam probable.
- Límite de tasa: los envíos repetidos desde la misma fuente en una ventana corta se limitan, independientemente del contenido.
- Detección de correo desechable / duplicado: los envíos de
proveedores de correo desechable, y los envíos repetidos casi
idénticos, se marcan. Si tu caso de uso legítimamente espera
direcciones desechables, activa
allow_disposable_emailpara ese formulario en Lista permitida de dominios en lugar de luchar contra el valor por defecto.
4. Restringe la lista permitida de dominios
access_key está diseñada para vivir en el código fuente de una página
pública, no es un secreto, y CORS en /submit es intencionalmente
permisivo para que cualquier origen pueda enviar un POST. La lista de
dominios permitidos de cada formulario es la verdadera frontera que
evita que alguien copie tu clave y dirija tráfico no relacionado
(incluido spam) a tu bandeja de entrada. Una lista vacía acepta cualquier
origen, bien mientras estás configurando las cosas, pero vale la pena
restringirla a tu dominio o dominios reales una vez que el formulario esté
en producción. Consulta Lista permitida de dominios.
5. Trata la cuarentena como una cola de revisión, no un agujero negro
Nada que llegue a unaccess_key válido se descarta en silencio.
Cualquier cosa que se puntúe como sospechosa llega a la pestaña Spam
del formulario en el panel en lugar de a tu
inbox, revísala periódicamente en busca de falsos positivos. En Free, la
cuarentena es de solo lectura, así que un envío legítimo que fue marcado
incorrectamente necesita que el visitante lo reenvíe una vez que hayas
arreglado lo que activó la heurística (normalmente un problema de
conexión del botcheck o un ajuste de correo desechable demasiado
estricto). Pro agrega un rescate de “no
spam” de un clic que lo reentrega directamente.
Lo que esto no hace
La puntuación heurística reduce el volumen de spam; no garantiza cero. Un atacante decidido y bien financiado que renderiza tu formulario en un navegador headless real, espera una cantidad de tiempo plausible, y envía un envío a la vez desde una IP residencial todavía puede lograrlo, de la misma forma que podría vencer un CAPTCHA. El objetivo es elevar el costo de spamear un formulario muy por encima del costo de la alternativa (una bandeja de entrada real sin ningún filtrado), no construir un muro impenetrable.Filtrado de spam
Qué se verifica y cómo funciona la puntuación.
Cuarentena
A dónde van los envíos marcados, y cómo revisarlos.
Lista permitida de dominios
La verdadera frontera de seguridad detrás de un access_key público.
Referencia de errores
Incluyendo
rate_limited y otros códigos relacionados con spam.