Añadir la protección de BotDetect CAPTCHA usando Python

ATENCIÓN

Cómo este ejemplo usa la versión de componente COM de BotDetect CAPTCHA, servidores y máquinas de desarrollo deben utilizar Windows. Por el momento no podemos dar soporte para Python sobre otros sistemas operativos.

Prerequisites

Comience descargando el ejemplo de uso de BotDetect CAPTCHA con Python.

LanapBotDetectHandler.py

El proyecto de ejemplo de Python incluye LanapBotDetectHandler.py, un archivo Pyton que usted puede utilizar de ayuda para sus aplicaciones en Python.

Este archivo utiliza el control COM de BotDetect CAPTCHA para crear las imágenes aleatorias, las que son generadas cuando una página en Python las solicite. Usted puede utilizar este componente "como está" sin modificar nada – sólo cópielo en la misma carpeta en donde se encuentra el código fuente de Python.

Generando una imagen CAPTCHA

La forma más fácil de mostrar la imagen del CAPTCHA es colocando una etiqueta <img> en su código HTML, en la página Python:

<img src="LanapBotDetectHandler.py?Command=CreateImage" 
  alt="Imagen CAPTCHA" id="CaptchaImage" />

Si tiene BotDetect instalado, y ha copiado el archivo LanapBotDetectHandler.py en el mismo directorio del formulario, debería ver una imagen generada por BotDetect:

Ejemplo de BotDetect CAPTCHA Python

Configurando parámetros adicionales de la imagen CAPTCHA

Si usted quiere configurar parámetros adicionales (como por ejemplo el tamaño, tipo, entre otros) sólo debe especificar esto en la cadena de solicitud de la imagen. Por ejemplo:

<img src="LanapBotDetectHandler.php?Command=CreateImage&
  TextStyle=28&ImageWidth=300&imageHeight=40&CodeLength=7&
  CodeType=1&Format=PNG" alt="CAPTCHA image" id="CaptchaImage" />

La imagen resultante tendrá un aspecto similar al siguiente:

Ejemplo de BotDetect CAPTCHA PHP

Todos los otros parámetros (aparte de ?Command=CreateImage) son opcionales, y si uno de ellos no es proporcionado, se utilizará un valor por defecto.

Por ejemplo, el parámetro TextStyle especifica que algoritmo será usado para generar el dibujo del CAPTCHA (uno de los 50 algoritmos incluídos en BotDetect CAPTCHA). Puede encontrar una lista de todos los valores válidos, ejemplos y capturas de pantalla en la página de referencia de TextStyle.

Para más información sobre todos los parámetros disponibles, vea la documentación de Componentes de Interfaz de BotDetect.

Usando audio en un CAPTCHA

Si desea utilizar un sonido para mejorar la accesibilidad de su CAPTCHA, la forma más simple de hacerlo es así:

<a href="LanapBotDetectHandler.py?Command=CreateSound">
  <img src="speaker.gif" alt="Play Sound" style="border:0;" />
</a>

Una imagen de un altavoz aparecerá que al hacerle clic ejecutará un sonido que representa el texto del CAPTCHA. Puede también utilizar un enlace de texto (como "Reproducir sonido") o incluso otra imagen si así lo desea.

Usando JavaScript para ejecutar el audio del CAPTCHA

El último ejemplo del uso del audio no es muy elegante- abre el sonido con las letras o números del CAPTCHA directamente, preguntándole al usuario si desea abrir o guardar el archivo de sonido.

Sería mucho mejor que el sonido se reproduciera automáticamente como sonido de fondo al hacer clic sobre el altavoz, siempre y cuando el navegador del usuario lo soporte. Veamos el siguiente código:

<a href="LanapBotDetectHandler.py?Command=CreateSound" 
  onclick="LBD_LoadSound('soundPlaceholder', 
    'LanapBotDetectHandler.py?Command=CreateSound'); 
    return false;">
  <img src="speaker.gif" alt="Play sound" style="border:0;" />
</a>
<div id="soundPlaceholder" style="visibility:hidden; border:0; 
  width:0; height:0;"></div>

El ejemplo utiliza BotDetectScript.js, un código Javascript que carga automáticamente el sonido del CAPTCHA a la página, y lo reproduce en segundo plano (los archivos .wav se abren generalmente en Windows Media Player sobre IE, o con QuickTime para Firefox, Opera o Safari).

El mismo script funcionará para clientes con navegadores que no soporten Javascript, comportándose como en el primer caso en donde el usuario debe descargar el archivo, así es fácil abarcar el máximo de audiencia.

Cargando nuevamente la imagen CAPTCHA

Si desea incorporar un botón para cargar nuevamente la imagen del CAPTCHA, el código JavaScript incluído en BotDetectScript.js contiene un método para hacerlo. La función LBD_ReloadImage function usa un identificador, para cargar nuevamente el elemento <img>:

<a href="#" onclick='LBD_ReloadImage("CaptchaImage"); return false;' 
  title="Cambiar el código">
    <img src="reload.gif" alt="Cambiar el código" />
</a>

Validando el ingreso del usuario

En un escenario típico de uso, el usuario tendrá un código en una imagen CAPTCHA que deberá escribir en un cuadro de texto. Luego de recibir y comprobar el código, podremos decir si la validación es correcta o no. El método Validate del componente BotDetect CAPTCHA compara el código codificado (hash) con el código correspondiente.

code = captchaSession.data.get(codeKey)
captchaSession.data[codeKey] = ""
captchaSession.close()

form = cgi.FieldStorage() 
if(form.has_key("CaptchaCode")):
  userInput = form["CaptchaCode"].value
if(form.has_key("FirstName")):
  firstName = form["FirstName"].value
if(form.has_key("LastName")):	
  lastName = form["LastName"].value

if (userInput == code.lower()):
  display_result(firstName, lastName)
else:
  print "Location: ../index.py?FirstName=%s&LastName=%s&WrongCode=
    WrongCode\n" % (firstName, lastName)

Versiones Actuales de BotDetect

Advertencia

Esta página es una traducción no oficial de la página original: How To Add BotDetect CAPTCHA Protection to Python Forms y puede estar incompleta, incorrecta o poco actualizada.

Última traducción del 2009-12-18. Esto se aplica para los productos BotDetect ASP.NET CAPTCHA v2.0.15 y BotDetect ASP CAPTCHA v2.0.9.

language: English Español Tiếng Việt