Spam en el foro SMF. Anti-Spam

logo SMF Desde hace ya mogollón de años, tengo un foro de java con SMF (Simple Machines Forum). Y desde hace ya mogollón de años vengo sufriendo el spam. Montones de «bots» registrados al día y algunos consiguen llegar a meter mensajes de spam en el foro.

Fui poniendo lo que permite SMF como anti-spam. Un captcha y preguntas que el usuario que quiere registrarse debe contestar. Las preguntas deben ser sencillas para que un usuario normal no tenga problemas, pero que un bot no pueda constestar fácilmente. Mis preguntas eran estilo de qué color es el caballo blanco de Santiago o cuanto es 2+3.

Pues nada, sigue habiendo problemas, así que me he puesto a buscar alternativas. Y encontré esta lectura que me ha llamado la atención «Qué puedo hacer contra el spam»

Resulta que los bots en general pueden con los captchas y según dice ese artículo, un captcha da más problemas a un usuario legítimo al registrarse que a un bot. Desde luego, el captcha más complejo de SMF a mi me cuesta o no puedo leerlo y no ha conseguido parar a los bots.

Resulta también que los bots saben hacer cuentas en las preguntas estilo cuánto es 2+3 y resulta que también prueban a poner todas las palabras de la pregunta como respuesta, con lo que lo de qué color es el caballo blanco de Santiago tampoco es una buena opción.

En este hilo leo posibles buenas preguntas para hacer. Algo que nadie necesita saber puesto que la respuesta se busca en la pregunta y que teóricamente dificulta el asunto a los bots. Preguntas estilo «Pon los tres últimos números que hay en la cadena dg7564gh»

Así que he cambiado las preguntas a preguntas de este estilo. A ver qué pasa.

Actualización del foro SMF

Hace tiempo mi foro de java SMF me avisó de que había una actualización disponible. Tenía la 1.1.5 y estaba disponible al 1.1.6. Le dí a actualizar (lo hace automáticamente), pero me falló porque tenía ficheros modificados por el plugin pretty urls. Así que me dio pereza la actualización: tendría que desinstalar el plugin, actualizar y volver a instalar el plugin, quizás peleándome con él o sin seguridad de que funcionara con la nueva versión de SMF.

No mucho después la versión oficial de SMF volvió a actualizarse. Se ve que la 1.1.6 tenía algún agujero de seguridad importante y sacaron la 1.1.7. Pero esta vez, en mi foro salía el aviso de que estaba la nueva versión, pero no me daba la posibilidad de actualizarme automáticamente, puesto que yo tenía un retraso de dos versiones. Así que si ya tenía pereza antes, no te digo ahora. Y por supuesto, lo dejé correr.

Hace un par de días me decidí a actualizarme. Así que con más miedo que vergüenza (miedo a pasarme un par de horas tontas, si no toda la tarde,  hasta conseguir hacerlo funcionar de nuevo) me puse a ello.

Desinstalé el plugin de pretty url desde el mismo panel de administración de SMF.

Me bajé desde la página de SMF el upgrade a la versión 1.1.7, pero al intentar subirlo a mi foro SMF a través del panel de administración no me lo reconocía como un módulo válido.

En la misma página de SMF, encontré abajo un fichero webinstall y la recomendación de usarlo para los upgrades automáticos. Lo puse, me hizo registrarme en la página de SMF…. y no funcionó, me dijo que había un error y que hiciera la instalación manual.

Ya desesperadito y viendo que efectivamente, iba a pasarme toda la tarde con el puñetero foro, rebuscando, rebuscando, encontré en el panel de administración un enlace para actualizarme a la 1.1.6 automáticamente. Como había desinstalado el pretty url, le di al enlace y funcionó a la primera. A partir de ahí, el enlace a la actualización de la 1.1.7 apareció y funcionó también perfectamente. Finalmente, reinstalé el plugin pretty url…. ¡¡ y también funcionó !!. Mi foro actualizado correctamente y sin demasiados problemas.

Es lo que tiene la informática. Lo normal es que cualquier cosa que parece una chorrada no lo sea, te líes y eches varias horas a lo tonto en ello. Otras veces, las menos, funciona todo a la primera (o casi).

Exito con pretty urls para SMF

Como comenté hace unos días, había instalado el plugin pretty-urls en mi foro SMF. Pues bien, dos semanas después y habiendo quitado el sitemap de google webmaster tools, reviso las estadísticas de visitas y aparentemente van subiendo notablemente. Parece quedar demostrado que es importante para salir bien en el buscador de google tener palabras interesantes en la url, y no números feos.

Ahí va el gráfico de estadísticas del último mes.

Estadísticas de visitas con pretty-urls

Pretty URLs en el foro SMF

Gracias al comentario de fabbc, he descubierto el plugin pretty URLs para el foro SMF.

Me he puesto a instalarlo y por supuesto, por no variar y por seguir la costumbre, no me ha funcionado. De todas formas, las instrucciones de instalación no son nada claras, sobre todo un punto que pone

Enable the filters in the new Pretty URLs page

cosa misteriosa donde las haya. Después de instalar el plugin, no veo ningún "new Pretty URLs page" por ningún lado. Investigando por google, parece que debería aparecer un menú en algún sitio para activarlo (en la barra lateral creo que he leido), pero por más que busco, no aparece.

Finalmente, leyendo, leyendo, acabo encontrando en http://code.google.com/p/prettyurls/wiki/Filters que hay un panel de administración oculto en index.php?action=admin;area=pretty;sa=filters, así que voy a él. Por supuesto, siguiendo la sana costumbre de que nada funcione a la primera para garantizar lo más posible el entreteniento, la distracción y la posibilidad de descubrir cosas nuevas, ese enlace no funciona y no me muestra nada.

Leo también en algún sitio que la versión más última (la snapshot) de este plugin, sí tiene ese panel de administración, así que desinstalo la versión 0.8.4 "estable" e instalo la snapshot. Esta vez SÍ funciona. Me sale el panel de administración, pulso el botón "settings" (el enlace del panel es para ir a otro sitio, no para decir cómo se activa el plugin, aunque por todos los caminos se llega a Roma), le doy a activar los "rewrite" y maravilla de las maravillas, todo funciona correcto.

Tengo ahora mi foro con URL amigables. Supongo que ya puedo quitar el sitemap que hice en su día, más que nada por no liar al pobre google, que verá la misma página con dos URL distintas.

sitemap para SMF

Hace tiempo comenté en un post que el foro SMF es un desastre para que lo indexe google y, de hecho, no aparecía en google ninguno de los temas de mi foro de java. Intenté instalar el plugin seo4smf para tratar de arreglarlo, pero no conseguí que me funcionara. Al final, como comenté en aquel post, me hice un pequeño programa java que generara un fichero sitemap.xml para colgarlo en el foro.

Esa opción no era buena del todo. Conseguí que google indexara los temas del foro, pero tenía que actualizar el sitemap periódicamente a mano. Así que decidí hacerme un pequeño script sitemap.php que hiciera de sitemap para google de forma automática.

Este script, al llamarlo, consulta en la base de datos el campo id_topic de la tabla smf_topics. Es la única información que necesita para generar el fichero XML de sitemap. El script dice que devuelve un "Content-Type : application/xml" para que cuando google lo consulte piense que es un fichero XML, luego envía los tags XML correspondientes al sitemap.

Adjunto el código php por si a alguien le interesa

<?php
header(‘Content-Type: application/xml’);
include (‘Settings.php’);

print (‘<?xml version="1.0" encoding="UTF-8"?>’);
print (‘<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">’);

$link = mysql_connect ($db_server, $db_user, $db_passwd) or die ("<center>No se puede conectar con la base de datos\n</center>\n");
$query=’select id_topic from smf_topics’;
$result=mysql_db_query ($db_name, $query, $link);

while ($row = mysql_fetch_array ($result))
{
   print (‘<url>’);
   print (‘<loc>’);
   print (‘http://foro.chuidiang.com/index.php?topic=’.$row[0]);
   print (‘</loc>’);
   print (‘</url>’);
}
mysql_free_result($result);
print (‘</urlset>’);
?>

El include "Settings.php" únicamente incluye un fichero de configuración del foro, en el que están las variables con el nombre de la base de datos $db_name, el usuario $db_user y la password $db_passwd. Ojo, no le busqueis pegas, que las tiene. Yo no tengo ni idea de PHP.