Lathack

Formulario web con Flask y Python

Formulario web con Flask y Python      

Introducción

A continuación estaremos viendo en detalle el funcionamiento de un formulario web a través del módulo Flask y el lenguaje Python. El uso de formularios son muy importantes, especialmente cuando debemos registrarnos, llenar algún campo con nuestra información o automatizar tareas.

Las siguientes prácticas serán muy útiles, ya que no solo veremos la utilidad de la librería requests, sino también, el funcionamiento por detrás de toda web. Muchas veces, se suelen usar estas prácticas para fines de web scraping (extracción de datos) o hacking ético, como por ejemplo desarrollo de malware, ejecución remota de código, carga de archivos, etc.. Puede ver con más detalles dichas prácticas con respecto a los métodos de un servidor en el artículo anterior.

Descarga del Formulario web

Para llevar a cabo estas prácticas, estaremos usando un repositorio de github. El mismo, una vez descargado o clonado, veremos que se ejecuta a través del puerto 5000 de nuestro host local, es decir, http://localhost:500/form. Por tanto, se nos presentará la siguiente pantalla:

Como vemos, tenemos el primer apartado, con datos opcionales a colocar, y el segundo, con campos personales y obligatorios.

Recordemos que toda información de un formulario HTML que enviemos a través de un sitio web, se ejecuta a través del protocolo HTTP/S y con el método POST. Entonces, como vimos en la práctica anterior, podemos hacer uso de la librería requests de la siguiente manera:

import requests

r = requests.post(“http://localhost:5000/form”, data=info)

Fragmento del Formulario web

Una vez hecho esto, necesitamos pasar los datos necesarios a nuestro formulario, en este caso, aquellos que son obligatorios. Sin embargo, estos datos deben estar contenidos utilizando un diccionario y, en este caso, no sabemos las “claves”. Por tanto, es fundamental inspeccionar el sitio web por detrás. En otras palabras, ver el “Código fuente”. Esto lo podemos hacer en cualquier sitio web. Simplemente debemos hacer click derecho sobre la página y luego en la opción “ver código fuente” de la siguiente manera:

Formulario web con Flask y Python

Se nos abrirá una ventana con el siguiente código fuente:

Formulario web con Flask y Python

El armado, o fragmento, del Formulario se encuentra dentro de las etiquetas <form></form>. No obstante, lo que estamos buscando son los campos correspondientes a los campos obligatorios, específicamente las claves de los diccionarios. Estos los podemos ver resaltados en rojo.

Enviar datos (POST)

Los datos a enviar a través de la función requests, serían los siguientes:

r = requests.post(“http://localhost:5000/form”, data = {“name”:”Lathack”, “email”:”[email protected]”, “message”:”¡Hola hackers!”})

También podríamos haber pasado las claves y sus datos a través de una variable. Por ejemplo:

info = { “name”:”Lathack”

“email”:”[email protected]

“message”:”¡Hola hackers!”

}

r = requests.post(“http://localhost:5000/form”, data = info)

Podemos notar que el argumento para POST es “data” y no “json”. Esto se debe a que, por lo general, no suelen codificarse los datos en JSON en el uso de formularios. Entonces por seguridad usamos “data”.

Una vez enviado nuestros datos, debemos verificar que estos se hayan enviado correctamente. Para esto, podemos notar en nuestro navegador un mensaje de “¡Los datos se han enviado correctamente!”. En caso contrario, veremos el siguiente mensaje “Error: Compruebe que los campos no estén vacíos.”

En el servidor podríamos ver los datos ingresados:

Formulario web con Flask y Python

Visualizar datos

Para visualizar y acceder a la respuesta del sitio, podemos hacerlo a través de nuestra consol o terminal usando la función r.text. Para una vista más “amigable” podríamos usar print(r.text)

info = { “name”:”Lathack”

“email”:”[email protected]

“message”:”¡Hola hackers!”

}

r = requests.post(“http://localhost:5000/form”, data = info)

print(r.text)

En nuestra consola veríamos lo siguiente:

Formulario web con Flask y Python

Desarrollo de Script

Teniendo esto en cuenta, podríamos hacer uso de dicho mensaje y automatizar el proceso. Es decir, desarrollar un script a través de nuesto editor de texto pero no vamos a usar todo el código HTML, ya que es muy extenso y se torna confuso. Lo que haremos será igualar la función r.text con la cadena anterior y buscar el contenido “¡Los datos se han enviado correctamente!” a través del operador in. Esto se vería de la siguiente manera:

info = {

«name»: «Lathack»,

«email»: «[email protected]»,

«message»: «¡Hola hackers!»

}

r = requests.post(«http://localhost:5000/form»,data=info)

respuesta = r.text

if «¡Mensaje enviado!» in respuesta:

print(«¡Datos enviados correctamente!»)

else:

print(«Error al enviar formulario»)

Recordar

Un dato a tener en cuenta es que la página, luego de enviar el contenido del formulario, pasados los 3 segundos se actualizará para volver ingresar nuevos datos. Esto lo vemos reflejado en http-equiv=”refresh” content=”3” dentro del formulario.

Como puede ver, el uso de formulario web con el módulo Flask y el lenguaje Python es muy útil para llevar a cabo diferentes prácticas o proyectos. De igual manera, también se ha empezado a utilizar el framework DJango para múltiples proyectos y/o tecnologías.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

dos × 4 =

Lathack
Scroll al inicio