Español: el idioma del Spam

Eduardo Arcos ha escrito una revisión de Akismet, la publicitada herramienta anti-spam de Matthew Mullenweg que fue lanzada hace solo pocos días — lo que sigue es una ampliación del comentario que dejé allí.

Quizás es aventurado saltar hacia conclusiones tan rápidamente, pero en mi caso me sucedió algo similar con WP-Blacklist, un clon del Blacklist para Movable Type pero para WordPress: el uso de listas negras actualizadas en tiempo real (Realtime Blacklist o RBL) causaba el rechazo de prácticamente todos los comentarios (digamos, el 99.9% de ellos, hubieron uno o dos que pasaron) sin importar si eran o no spam. Claro, detuvo el spam, pero también los comentarios.

La forma de actuar de los plugins basados en listas negras es fundamentalmente el siguiente: cuando ingresa un comentario, se registra su comentario y se compara con una lista de palabras, direcciones IP, URLs y correos electrónicos que han sido encontrados en el spam. Como una manera de aumentar el poder de discriminación de este tipo de plugins, estas listas no se limitan a palabras o datos específicos, sino que también pueden usar expresiones regulares, es decir, cadenas de texto que usan caracteres especiales en lugares donde pueden ir una o más variaciones de una palabra (por ejemplo, algo como [a-zA-Z] para representar todas las palabras formadas por letras de la “a” a la “z”, mayúsculas y/o minúsculas).

Por lo tanto, luego de revisar que el plugin estuviera bien instalado y las opciones bien fijadas, pensé que debía existir algún factor que hiciera que los comentarios válidos fueran marcados como spam: el único factor que podía explicar esto era el idioma. Es decir, en las definiciones de las expresiones regulares que en inglés pueden identificarse como spam, al parecer se incluyen muchas palabras muy comunes en español, lo que hace que este tipo de medidas para frenar el spam sean simplemente inútiles para los usuarios de habla hispana. Desconozco lo que pasará con otras lenguas, pero es probable que también existan problemas.

La solución pasa entonces por buscar un plugin que no dependiera de listas negras, y en ese entonces di con Hashcash otro plugin para WordPress que básicamente lo que hacía era reemplazar el formulario de contacto por uno generado con JavaScript y que incluía valores aleatorios que eran chequeados antes de aceptar un comentario. Funcionaba bastante bien, pero tenía el detalle de que si alguien tenía JavaScript desactivado no podía comentar; o sea, no era transparente al usuario sino solo a algunos usuarios mientras que a otros simplemente no les permitía comentar —y esta cantidad no debe ser nada despreciable, pues NoScript, un plugin para Firefox que sirve para bloquear JavaScript aparece mientras escribo este post como el segundo más popular.

Por lo tanto, tenía que buscar algo que funcionara para todos, y lo encontré: actualmente estoy usando Bad Behavior, que por su forma de actuar es tanto “insensible al idioma” como “transparente al usuario”: en vez de analizar el comentario en sí, lo que hace es analizar las peticiones que hacen los clientes para navegar por la página en la que se puede comentar —cada vez que tu navegador web va a descargar una página, envía una cantidad de información indicando qué es lo que quiere (la petición). Una vez que el plugin cuenta con esta información, la compara con peticiones “verdaderas”, es decir, las que produciría cualquier usuario con su navegador, lo que deja fuera la mayor cantidad de spam, puesto que para que éste sea rentable se necesita tener miles de referencias, las que serían económicamente inviables de hacer por personas. Claro, siempre hay algunos que pasan (en lo personal, me habrán llegado una docena en más de tres meses de funcionamiento) pero la cantidad es mínima.