Fraude en las 24h

¡Qué envidia esos foros con unas 24h quilométricas! Hay que admitir que esa lista de nombres con tantos colores es fascinante, pero, ¿cómo sabemos si la lista es legítima? En el siguiente artículo explicaré como funcionan estos fraudes en los foros (y en consecuencia, cómo hacerlos en tu foro —cuz science, right?—) y como protegerse de ellos o estar al corriente de su existencia. Existen varios métodos utilizados para jugar a que esta parte de las estadísticas de un foro parezca más de lo que son. Desde jugar con efectos ópticos hasta directamente falsificar su contenido.

Efectos visuales

Definitivamente el fraude más común y también hecho inconscientemente por los administardores (espero). Muchos del los diseños más recientes de los foros son característicos por mostrar las estadísticas con un diseño en columnas. Desde dos columnas a las tres. Incluso algunos foros se aventuran con las cuatro. Da igual el número de columnas que sean, pero siempre hay algo en común: las estadísticas en 24h están en una de ellas.
Uso de las columnas, donde se despilfarra espacio en la columna de la izquierda para que las 24h tengan menos sitio
Al tener su propia columna, las 24h disponen de un ancho menor para aprovechar, por lo que crecen a lo largo y hacen que la lista parezca más extensa de lo que en realidad es. Esto se suele acompañar con el uso de una barra de desplazamiento. De esta manera el usuario que no la utilice simplemene verá que aún falta más en la lista y no identifica cuánto más falta. También es común el uso de texto grande en los nombres de los usuarios para ocupar más espacio.

Cuentas fantasma o multicuentas

Muchos foros permiten tener multicuentas a sus usuarios, ya sea con registros públicos o no. La consecuencia de esto es que las 24h acaban llenándose de cuentas que en realidad son de una sola persona. Esto no debería suponer ningún problema, puesto que no existen alternativas viables para fusionar todas estas cuentas por parte de la administración. Sin embargo, muchos administradores aprovechan esto para crearse varias cuentas fantasma que no rolean pero que se conectan diariamente. Incluso no es necesario que hayan permitido las multicuentas en sus normas, para cubrirse aún más las espaldas. Aunque te parezca surrealista tener que conectar tantas cuentas todos los días, te puedo asegurar que se llega a hacer. Detectar este tipo de fraudes es mucho más complicado y metódico. Me temo que de momento la única forma es el análisis manual de las cuentas y de su comportamiento.

Falsificación de la información

El tercer y último fraude que voy a comentar es la que más risa me da por lo fácil que es de pillar a los administradores con unos mínimos conocimientos de desarrollo web.
Foro en el cual no se especifica de cuánto tiempo son las estadísticas
En foros Foroactivo, los administradores pueden mostrar las estadísticas de las 99h (o cualquier otro número más grande que 24h) en vez del estándar 24h, donde claramente suelen aparecer muchísimos más usuarios en la lista (al fin y al cabo son los últimos 4 días). Esto se acompaña con la modificación a posteriori del número 99 por 24, para que el usuario piense que en realidad la lista que se está mostrando es de las últimas 24h.
Foro en donde se miente en las estadísticas que se están mostrando en realidad
Se puede llegar a ver incluso foros donde se oculta totalmente el texto «Usuarios conectados en las últimas 24h» y lo colocan en otro lado (por ejemplo, como título de la columna). A partir del momento en el que el texto literal desaparece y se coloca en otra sección, el administrador pudo haber puesto el número que quisiese, aunque no se corresponda con la lista.

¿Cómo se hace esta falsificación?

Existen muchas maneras. La manera más fiable que se me puede ocurrir es la siguiente:
  1. En la plantilla index_body busca {L_CONNECTED_MEMBERS}.
  2. Reemplázalo por:
    <script type="text/javascript">
    !function() {
    
    	const hours = 24, /* El número de horas que van a aparecer */
    
    
    	currentScript = document.scripts[document.scripts.length - 1],
    	h24 = '{L_CONNECTED_MEMBERS}';
    	if(h24.length) currentScript.insertAdjacentHTML('beforebegin', h24.replace(/\d+/, hours));
    	currentScript.remove();
    }();
    </script>
  3. Cambia const hours = 24, por el valor de horas que quieras que se muestre al usuario.
  4. Configura las estadísticas de tu PA y pon las horas reales que quieras. Por ejemplo, las últimas 99h.

¿Cómo protegernos?

Llega la parte en la que os explico como ser más listos que los administradores que hacen tanto el fraude con efecto óptico como los que falsifican las estadísticas. Tanto para la primera como para la segunda vamos a protegernos de la misma manera: utilizando un script. Al fin y al cabo, este es un blog de códigos, ¿no? ?‍♂️. Con el siguiente script obtendrás el número de usuarios real que tiene un foro (así no te podrás distraer por lo larga que sea la lista o lo grande que sean los nombres) al mismo tiempo que muestra las horas mínimas desde la última conexión para aparecer en la lista (de manera que podemos saber si los administradores mienten o no en las horas que están mostrando en realidad). Para utilizar el script, entra en el foro en cuestión (este debe estar en español y ser de Foroactivo) y accede a la Consola de desarrollo (Ctrl + Shift + J para Firefox y Chrome en Windows o, si usas macOS, CMD + ALT + K en Firefox o CMD + Shift + J en Chrome). A continuación pega el siguiente script y pulsa la tecla entrar (enter):
!fetch('/forum', {
	method: 'GET',
	credentials: 'include',
}).then(response => response.text()).then(html => new DOMParser().parseFromString(html, 'text/html')).then(doc => {
	const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_TEXT, null, false);
	let node;
	while(node = walker.nextNode())
		if(/Miembros conectados en las \Sltimas /.test(node.textContent)
			&& !node.parentElement.closest('#left, #right')) break;
	if(!node) {
		console.error('No se ha podido identificar la lista de conectados recientemente');
		console.log('Te agradecería que me enviases mediante contacto la dirección de este foro donde ha fallado la identificación. ¡Gracias! :-)');
		return;
	}
	const mode = node.textContent.match(/(\d+)/)[1];
	let i = 0;
	while (node.nextElementSibling && /\/u\d+/.test(node.nextElementSibling.getAttribute('href'))) {
		const nextSibling = node.nextElementSibling.nextSibling;
		i++;
		if(nextSibling && (nextSibling.nodeType != 3 || nextSibling.textContent != ', ')) break;
		node = node.nextElementSibling;
	}
	console.warn(`Hay ${i} usuario${i == 1 ? '' : 's'} conectados en las últimas ${mode}h de ${location.hostname}`);
});
Ejemplo del script funcionando
La consola te debería devolver una respuesta (es posible que pueda tardar un poco) con la información de las estadísticas del foro. El código está preparado para que no le afecte absolutamente ninguna modificación que un administrador haya podido hacer a su foro. Incluso el ejemplo de fraude que puse anteriormente no puede saltarse este código. Las información que devuelva el código será la real del foro.