Magazine

Cómo crear CAPTCHA usando Python

Publicado el 17 octubre 2022 por Maxisoria @maxialiados

Realice sus propias pruebas de CAPTCHA en poco tiempo con esta práctica biblioteca de Python.

Introducidos a principios de la década de 2000, los CAPTCHA han molestado a los usuarios durante décadas. Desde encontrar imágenes de un autobús hasta ingresar una extraña secuencia de letras o resolver problemas matemáticos, hay muchas formas en que los sitios te piden que demuestres que no eres un robot.

Pero, ¿alguna vez te has preguntado cómo funcionan los CAPTCHA y por qué los sitios web te obligan a resolverlos?

¿Qué es CAPTCHA?

CAPTCHA significa Prueba de Turing Pública Completamente Automatizada para diferenciar a las Computadoras de los Humanos. Como sugiere el nombre, distingue entre humanos y computadoras.

El concepto básico de CAPTCHA se basa en la falta de inteligencia informática para reconocer patrones. Una computadora puede reconocer letras, pero no en los casos en que están alteradas o presentes con mucho ruido de fondo. Mientras tanto, los humanos están programados durante generaciones para detectar e identificar patrones como un mecanismo de seguridad.

Tipos de CAPTCHA

CAPTCHA viene en varios tipos, algunos de ellos son:

1. Imagen basada en texto CAPTCHA

CAPTCHA basado en texto utiliza un conjunto de palabras o frases o una combinación aleatoria de diferentes letras, números y símbolos. Representa una secuencia de personajes en una forma alienada que es un poco difícil de interpretar.

Estos incluyen distorsión, rotación, volteo, tambaleo, estilo de uso de mayúsculas y superposición con caracteres contiguos. Para mejorar esta técnica, un CAPTCHA puede incluir gráficos como líneas, arcos o puntos de forma aleatoria, repartidos por toda la imagen.

2. CAPTCHA de audio

Audio CAPTCHA sirve como una alternativa a los CAPTCHA basados ​​en texto y está dirigido a usuarios con discapacidades visuales. Audio CAPTCHA presenta una grabación de audio de una secuencia de letras o números que el usuario debe ingresar correctamente. De nuevo, hay distorsión, esta vez en forma de ruido de fondo añadido. Una cosa interesante a tener en cuenta es que el módulo Python CAPTCHA solo funciona con números.

3. CAPTCHA de imagen

Los CAPTCHA de imagen son una alternativa a los CAPTCHA de imagen basados ​​en texto. Estos son los CAPTCHA típicos que abordará a diario.

Estos CAPTCHA le piden que identifique un objeto en particular, como un bote, un camión o una boca de incendios. Los presentan junto con otras imágenes para elegir. Estas son mucho más amigables para los humanos que las pruebas basadas en texto, así como más difíciles de reconocer para los bots.

4. Matemáticas, problema de palabras y rompecabezas CAPTCHA

Los CAPTCHA matemáticos a menudo representan un problema aritmético simple como 17 + 23, 16 * 10 o 30/10 con elementos gráficos agregados.

Word Problem CAPTCHA presenta una secuencia de palabras o elementos relacionados y le pide que llene los espacios en blanco con la respuesta adecuada.

Puzzle CAPTCHA implica resolver un mini rompecabezas, como deslizar una barra a la longitud correcta para que la pieza que falta complete la imagen.

5. Sin CAPTCHA ReCAPTCHA

Google posee ReCAPTCHA, que utiliza análisis de riesgo avanzado y desafíos adaptativos para prevenir bots. ReCAPTCHA recupera contenido de Google Street View, periódicos, libros y más.

Sin CAPTCHA ReCAPTCHA requiere que marque la opción «No soy un robot» sin pedirle que realice ninguna prueba. Esto es posible ya que rastrea los movimientos e identifica el clic. Una cosa a tener en cuenta es que ReCAPTCHA también captura su información privada.

Puede crear un formulario de validación de CAPTCHA usando HTML, CSS y JS, así como usando el módulo Python CAPTCHA.

El módulo Python CAPTCHA

Python viene con un módulo fantástico llamado CAPTCHA que lo ayuda a crear CAPTCHA de imagen y audio basados ​​​​en texto en momentos. Aunque el módulo proporciona un estilo de fuente y una voz incorporados, puede usar su voz y los datos de la fuente para personalizar aún más los CAPTCHA.

Para instalar el módulo CAPTCHA en su entorno Python, abra la ventana Terminal y escriba:

pip install captcha

Cómo generar un CAPTCHA de imagen basado en texto usando Python

El código fuente completo para generar CAPTCHA de imagen y audio personalizados basados ​​en texto está disponible en este repositorio GitHub.

Puede seguir estos pasos para crear un CAPTCHA de imagen basado en texto usando Python:

  1. Importar el ImageCaptcha módulo situado en imagen CAPTCHA.
    # importing the required libraries
    from captcha.image import ImageCaptcha
  2. Especifique un ancho y alto personalizados para su CAPTCHA y cree una instancia del mismo.
    # specify dimensions
    image = ImageCaptcha(width = 300, height = 100)
  3. Tome una secuencia de caracteres como entrada de usuario usando el aporte() para convertirlo a un formato CAPTCHA basado en texto.
    # enter the text to create its captcha
    captcha_text = input("Please enter text: ")
  4. Pase el texto que recibió del usuario al imagen.generar() para crear el CAPTCHA.
    # generate the text-based captcha
    data = image.generate(captcha_text)
  5. Pase el texto del CAPTCHA y el nombre del archivo de imagen junto con su extensión a imagen.escribir() para guardar el CAPTCHA de la imagen generada.
    # save the captcha image file
    image.write(captcha_text, (captcha_text) + ".png")

Salida de CAPTCHA de imagen basada en texto usando Python

Una de las mejores características de este módulo es que genera el mismo texto en diferentes colores, estilos y sesgos. Estos son algunos de los ejemplos generados.

Este es otro diseño fascinante generado a través del mismo programa.

Cómo generar un CAPTCHA de audio usando Python

Siga estos pasos para crear un CAPTCHA de audio usando Python:

  1. Importar el Captcha de audio módulo de captcha.audio.
    # importing the required libraries
    from captcha.audio import AudioCaptcha
  2. Crea una instancia de AudioCaptcha().
    # creating an audio instance
    audio = AudioCaptcha()
  3. Tome dígitos como entrada de usuario usando el aporte() función para crear su audio CAPTCHA.
    # audio captcha number, eg: 32135
    captcha_text = input("Please enter number: ")
  4. Pase el texto que recibió del usuario a audio.generar() para crear el CAPTCHA.
    # generate the audio-based captcha
    audio_data = audio.generate(captcha_text)
  5. Pase el texto del CAPTCHA y el nombre del archivo de audio junto con su extensión a audio.escribir() para guardar el CAPTCHA de audio generado.
    # save the audio file
    audio.write(captcha_text, "audio"+captcha_text+'.wav')

Si ingresa los números 970322este programa CAPTCHA de audio generará un audio970322.wav archivo que dice los dígitos en secuencia con un montón de ruido de fondo.

Los muchos usos de CAPTCHA

La función principal de un CAPTCHA es evitar el spam y el abuso por parte de los bots en un sitio web. Ayudan a mantener la precisión de las encuestas en línea al evitar que los bots las inunden con respuestas negativas. Actúan como una capa de protección contra ataques de fuerza bruta y restringen la cantidad de veces que un usuario intenta iniciar sesión en un sitio web.

CAPTCHA también puede ayudar a prevenir comentarios automatizados y puede ayudar a proteger las pasarelas de pago con su dificultad para resolver.


Volver a la Portada de Logo Paperblog