Si tu dirección aparece en texto en el HTML, asume que será rastreada. Los trucos como name [at] domain ralentizan a los bots más básicos y molestan a las personas. Lo eficaz es no publicar una dirección rastreable: usa formulario con trampa y, si publicas email, que sea uno por proyecto que puedas sustituir, no tu correo personal.
Cómo se rastrean las direcciones
Los recolectores de emails son rastreadores sencillos: descargan páginas como un buscador y analizan el HTML con expresiones regulares para encontrar algo con forma de [email protected]. No necesitan ser sofisticados: la mayoría de los sitios les entregan exactamente lo que buscan, un mailto: . Es el caso más sencillo: la dirección está en un href, en un formato normalizado, en un atributo que los rastreadores ya analizan. No podrías facilitarles más el trabajo.
Lo peor viene después: una dirección rastreada entra en listas que se venden y combinan. Sigue recibiendo spam años después. No se puede desfiltrar: solo queda filtrar agresivamente o abandonarla.
Un sitio recién creado y sin enlaces puede tardar en rastrearse. Pero cualquier página enlazada acabará recibiendo visitas y basta una visita de un recolector.
Los trucos clásicos y por qué suelen fallar
Ofuscación de texto: escribiendo name [at] domain [dot] com. Este patrón existe desde hace décadas y los rastreadores detectan sus variantes habituales: [at], (at), AT, espacios adicionales, todo. Mientras tanto, cada visitante debe reconstruir tu dirección y confiar en no equivocarse. Has impuesto una dificultad segura a las personas a cambio de un filtro que solo detiene a los bots menos sofisticados.
Codificación JavaScript: reconstruir la dirección durante la ejecución a partir de fragmentos codificados. Mejora la protección frente a rastreadores que solo descargan HTML, pero los navegadores sin interfaz son baratos y los rastreadores avanzados renderizan las páginas antes de analizarlas. La codificación de entidades HTML (he…) es aún peor: todos los analizadores normalizan las entidades antes de buscar coincidencias, así que no detiene nada. En cambio, la dirección deja de funcionar sin JavaScript y, según la implementación, también fallan el copiado y los lectores de pantalla.
Imágenes de tu dirección: la peor opción. Los lectores de pantalla no obtienen nada y añadir la dirección como texto alternativo anula la protección. No se puede copiar, se ve mal en pantallas de alta resolución y el OCR permite a los rastreadores leerla igualmente.
La ofuscación es una carrera desigual: al atacante le cuesta cambiar una expresión regular y a ti, la experiencia de cada visitante. Frena el rastreo, no lo detiene, y no sirve si la dirección se filtra por un commit, boletín o agenda ajena.
Qué funciona de verdad
Dos medidas complementarias.
1. Un formulario de contacto con campo trampa
Un formulario evita publicar una dirección en tu HTML, por lo que no hay nada que rastrear. Los envíos llegan a un endpoint y se guardan en una bandeja. Los formularios atraen su propio spam: bots que rellenan todo lo que encuentran. La defensa eficaz más sencilla es un campo trampa: un campo oculto que las personas nunca ven. Algunos bots rellenan todos los campos; si este está rellenado, el envío se descarta. Los bots más avanzados pueden omitirlo, por lo que siguen activas las comprobaciones de contenido del servidor, la detección de campañas y la verificación automática.
<form action="https://mailcontact.app/api/forms/your-form-id" method="POST" data-mailcontact-form>
<label>Name <input name="name" autocomplete="name" /></label>
<label>Email <input name="email" type="email" required /></label>
<label>Message <textarea name="message" required></textarea></label>
<button type="submit">Send</button>
<p data-contact-status role="status" aria-live="polite"></p>
</form>
<script defer src="https://mailcontact.app/forms/v1.js"
crossorigin="anonymous" referrerpolicy="no-referrer"></script>de mailcontact endpoint del formulario acepta datos sencillos de FormData o JSON desde cualquier origen y responde JSON. El script inserta la trampa, verifica y mantiene al visitante en la página conservando borradores en errores. Free muestra un enlace visible «Processed by mailcontact.app»; Pro y Plus no. Las comprobaciones se explican en la documentación antispam.
2. Una dirección por proyecto
Algunas personas prefieren su correo: escribir, reenviar un hilo o guardar constancia. Perfecto. No les des tu dirección personal. Cada proyecto de mailcontact incluye su propia dirección [email protected] que funciona al instante, sin DNS ni servidor de correo.
La clave es limitar el impacto. Si rastrean una dirección de proyecto, el spam llega solo allí, no al correo de tu banco. Como puedes sustituirla, la retiras y creas otra. La solución no es hacerla ilegible, sino reemplazable.
La configuración práctica
- Haz del formulario tu canal principal, con campo trampa. Para empezar rápido, la generador de formularios de contacto genera el código por ti y hay guías específicas para sitios estáticos y GitHub Pages, donde publicar la dirección en el HTML suele parecer la única opción.
- Publica la dirección del proyecto en texto para quienes prefieren email. Sí, en texto: no pasa nada porque es sustituible.
- Ambos orígenes llegan a la misma bandeja del proyecto, con notificaciones en Discord o por email para no tener que revisar un panel.
- Tu dirección personal nunca aparece en ningún HTML.
Nada elimina todo el spam. Las trampas detectan bots básicos, no personas que rellenan formularios, y una dirección pública acabará recibiendo basura. La diferencia es poder contenerlo: cambia la dirección de un proyecto o refuerza un formulario sin arrastrar diez años de spam.
Si configuras desde cero un formulario en un sitio estático, esta guía explica las opciones.