Aug 22, 2011
Chuck Not Captcha; Pegandole una patada voladora a los spambots
Por si no saben, los captchas son sistemas de protección contra procesos automatizados, como los conocidos spam bots, una forma de validar que el que está realizando una acción es un humano y no un programa o bot, esto se logra pidiendo una acción que solo puede realizar un humano, como escribir ciertas letras que estan deformadas para que los sistemas de OTR no puedan leerlas, fondos aleatorios y efectos de humo o rayas que confundan la identificación por software.
El problema de esto es que los sitemas de identificación para romper estos sistemas son cada vez mejores, asi que los captchas tienen que ser mejores, pero sin imposibilitar la lectura humana, realmente estos se vuelven cada vez mas molestos, asi que estan apareciendo formas alternativas, dificiles para los bots, pero mas “humanizadas”.
El que les vengo a mostrar hoy realmente nace de una idea llamada Animal Captcha, que en vez hacernos leer complicadas letras nos propone ver fotos de animales y escribir sus nombres, asi es mas facil entender que se trata de un “leon” o de una “cebra”, estando estos ofuscados. Pero hoy no vengo a hablar de este, sino de otro que se basa en este (por lo menos hasta su versión 0.0.2, ya que promete ser reescrito para poder ser liberado bajo la licencia GPL 3).
El Chuck Not Captcha en cambio nos propone otra cosa, hacerle click a la imagen del seguramente conocido por todos Chuck Norris, actor de películas de acción que se convirtió en un Meme de internet del cual se dicen cosas como “No hay teoría de la evolución, solo una lista de criaturas a las que Chuck Norris permite vivir.”, y bueno, para el que no lo conozca, seguro no sabe de esto de la internet, ni vio sus peliculas o series. De hecho el sitio oficial dice:
Are you tired of spambots or people who doesn’t know Chuck Norris? This may be your solution
Lo que en español seria: “¿Está cansado de Spambots o de gente que no sabe quién es Chuck Norris? Esta puede ser su solución.”
Esta hecho para ser el último paso del formulario, donde en vez de hacerle click a un boton de “enviar” o etc, se le hace click a la cara de Chuck, de esta forma:
Como podemos ver, aparecen distintas caras, y entre ellas la del conocido actor, si se le hace click a otra cara que no es la de chuck, podemos deducir que del otro lado hay un spambot (o alguien que no merece registrarse en nuestro sitio o mandar un comentario).
La implementeción es cencilla, bajandonos el código fuente de la web (esi si, en PHP):
# wget http://cnc.esfriki.com/cnc-0.0.2.tar.gz # tar -xvf cnc-0.0.2.tar.gz
Esto nos dejará un directorio llamado ·”captcha” el cual puede ser puesto en el arbol de directorio de nuestro sitio, para usarlo simplemente reemplazamos nuestro boton de submit, por un input img del captcha generado:
<form action="/login" method="post">
<label for="user">Usuario:</label>
<input type="input" name="user" />
<br />
<label for="pass">Password:</label>
<input type="password" name="pass" />
<br />
<p>* Haga click en la cara de Chuck Norris para saber que es humano</p>
<input type="image" src="/captcha" name="submit" />
</form>
De esta forma al hacer click en la imagen automaticamente enviará el formulario, desde el otro lado, lo único que tenemos que hacer es:
require('captcha/check-chuck.php');
if ( check_chuck($_POST['submit_x'],$_POST['submit_y']) ) {
// Esta todo bien
} else {
// Falló la validación
}
Y listo, ya tenemos funcionando nuestro captcha. De igual manera dentro del tar.gz que nos bajamos hay un archivo llamado example.php que contiene un ejemplo.
Ahora una Yappa, se pueden alterar las caras (agregar o sacar), hasta cambiar a nuestro personaje por otro, modificando los archivos que estan en los directorios: chuck y notchuck.
Sitio oficial: http://cnc.esfriki.com/
Tips relacionados:

[...] Chuck Not Captcha; Pegandole una patada voladora a los spambots web2.0-tips.com.ar/283-chuck-not-captcha.html por exos hace 3 segundos [...]
No entiendo mucho lo que hace la funcion, pero… como seria para preguntar directamente si NO ES LA CARA?
Twitter: exos
says:
Justamente la función “check_chuck” chequea que el click fue realizado donde estaba la cara de Chuck, caso contrario devolvería false, asi que:
if (check_chuck($_POST['submit_x'],$_POST['submit_y'])) {
echo “Le hizo click”;
} else {
echo “No le hizo click”;
}