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.

6 comments

  1. Yo no creo que el idioma sea el problema. Por ejemplo, yo ya llevo dos semanas con Akismet y solo he tenido 4 a 6 falsos, definidos como "en moderación" y ninguno definido como spam.

    El problema de las listas negras es otro: muchas de ellas usan algoritmos de probabilidad estadística (como el de Bayes) que requieren que se les entrene para reconocer entre lo que es spam y lo que no es, y por ende, mientras parten todos tienen problemas de falsos positivos, que se reducen en el tiempo a medida que se retroalimentan con lo que es bueno y lo que es spam.

    Y sobre plugins uno recomendable es Spam Karma 2, ya que es transparente (solo agrega una linea de código de verificación sin necesidad de tocar el tema, si es compatible con el estándar de temas de WP 1.5, y no utiliza JS), usa varios métodos de comprobación y da opciones en caso que un comentario habrá sido calificado como spam para quitarle tal categoría (como el uso de un CAPTCHA solo si duda de un comentario).

  2. Interesante tu comentario, creo que aporta mucho a lo que se podría discutir sobre este tema. Me queda una duda, sobre lo que decías de los algoritmos de Bayes y el uso de listas negras, y es que si la gran mayoría de usuarios que utilizan este tipo de plugins son de habla inglesa, ¿no será probable entonces que el aprendizaje sea más adecuado a su lengua que a otras?

    Por otra parte, desde mi experiencia personal podría afirmar que la gran mayoría del spam viene en idioma inglés, aunque creo que se ha empezado a hacer más común el spam en español. Junto a lo anterior, de todas maneras llevaría a que las listas negras estuvieran más preparadas para el idioma inglés, ¿no? Quizás igualmente sería necesaria la creación de listas negras para usuarios hispanoparlantes, lo que en todo caso serviría para determinar finalmente si el spam en inglés que recibimos hace que se incremente el número de falsos positivos.

    Ahora, revisando el post, en lo que sin duda me caí fue en asumir que Akismet funciona en base a listas negras, ya que debo confesar que no tengo totalmente claro cómo lo hace. ¿Alguien lo sabe?

  3. En el FAQ de su sitio sale dos cosas sobre Akismet. La primera es que no funciona bajo listas negras sino en distintas pruebas para verificar si el comentario es en verdad un spam o no.

    Y sobre el soporte de idiomas distintos en inglés, cito:

    Does it work on non-English comments?

    Yes, our system does not discriminate against non-English comments. We have happy users from Japan to France.

Comments are closed.