HTTP y HTTPS con requests de Python

HTTP y HTTPS con requests de Python

En esta ocasión, vengo a hablar de forma breve y simplificada sobre el protocolo HTTP y HTTPS, cuál es su principal diferencia, los métodos que utilizan, los códigos de respuesta y practicaremos un poco con todo esto con el módulo requests de Python, de forma que podáis materializar toda la información con algo práctico.

protocolo https

¿Cuál es la diferencia entre HTTP y HTTPS?

La principal diferencia entre HTTP y HTTPS es la seguridad. HTTP no proporciona ninguna seguridad para la comunicación entre el cliente y el servidor. Cualquier información que se transmite a través de HTTP puede ser interceptada y leída por terceros, por ejemplo, con un sniffer como Wireshark. Es realmente fácil de hacer. HTTPS, por otro lado, usa cifrado para proteger la comunicación entre el cliente y el servidor. Esto significa que cualquier información que se transmite a través de HTTPS está protegida y no puede ser leída por terceros.

Códigos de error HTTP

Los códigos de error HTTP son una forma en que los servidores web informan a los clientes sobre el resultado de una solicitud HTTP.

¿Cuántas veces has ido a una página inexistente de una web que te da un error 404? Pues bien, aquí tienes posibles errores de ese estilo:

  1. 1xx: Respuestas informativas
  • 100 Continuar: El servidor ha recibido la solicitud y espera que el cliente la continúe.
  • 101 Cambio de protocolo: El servidor está cambiando el protocolo utilizado en la conexión.
  1. 2xx: Respuestas satisfactorias
  • 200 OK: La solicitud ha sido exitosa.
  • 201 Creado: La solicitud ha sido exitosa y ha resultado en la creación de un nuevo recurso.
  • 204 Sin contenido: La solicitud ha sido exitosa, pero no hay contenido para mostrar.
  1. 3xx: Redirecciones
  • 301 Movido permanentemente: El recurso solicitado ha sido movido permanentemente a una nueva ubicación.
  • 302 Encontrado: El recurso solicitado ha sido encontrado temporalmente en una nueva ubicación.
  • 304 No modificado: El recurso no ha sido modificado desde la última vez que se accedió a él.
  1. 4xx: Errores del cliente
  • 400 Solicitud incorrecta: El servidor no puede entender la solicitud.
  • 401 No autorizado: El cliente no tiene permiso para acceder al recurso solicitado.
  • 404 No encontrado: El servidor no puede encontrar el recurso solicitado.
  1. 5xx: Errores del servidor
  • 500 Error interno del servidor: El servidor encontró un error mientras procesaba la solicitud.
  • 503 Servicio no disponible: El servidor no puede manejar la solicitud en este momento.

Los tipos de solicitudes HTTP

HTTP utiliza diferentes tipos de solicitudes con las que podemos trabajar con el servidor web. Aquí tienes los más comunes:

  1. GET: Una solicitud GET se utiliza para recuperar recursos del servidor. Por ejemplo, si introduces una URL en el navegador y presionas Enter, el navegador enviará una solicitud GET al servidor para recuperar la página web.
  2. POST: Una solicitud POST se usa para enviar datos al servidor. Por ejemplo, cuando envías un formulario en línea, los datos del formulario se envían al servidor mediante una solicitud POST.
  3. PUT: Una solicitud PUT se utiliza para actualizar un recurso existente en el servidor. Por ejemplo, si tienes un archivo en el servidor y deseas actualizar su contenido, puedes emplear una solicitud PUT.
  4. DELETE: Una solicitud DELETE se utiliza para eliminar un recurso existente en el servidor. Por ejemplo, si deseas eliminar un archivo del servidor, puedes usar una solicitud DELETE.
  5. HEAD: Una solicitud HEAD es similar a una solicitud GET, pero el servidor solo envía los encabezados de respuesta, no el cuerpo de la respuesta. Esto se utiliza a menudo para comprobar si un recurso está disponible sin descargar todo el contenido.
  6. OPTIONS: Una solicitud OPTIONS se usa para obtener información sobre los métodos HTTP que se pueden utilizar en un recurso determinado.

El uso de GET con requests de Python

Con el fin de que puedas materializar un poco este tema, vamos a practicar un poco con un módulo de Python llamado requests.

En esta ocasión, solo vamos a probar el método GET y para que lo entiendas mejor, te voy a poner un ejemplo práctico:

Si tienes una página web con una hoja de estilos enlazada, dos imágenes y un video, la representación cliente-servidor con las correspondientes solicitudes podría ser la siguiente:

  1. El navegador (cliente) envía una petición GET al servidor para solicitar el contenido de la página web.
  2. El servidor responde con el contenido de la página web en formato HTML.
  3. El navegador analiza el contenido HTML y encuentra referencias a una hoja de estilos enlazada, dos imágenes y un video, que son archivos externos al propio .html de la página.
  4. El navegador envía peticiones GET adicionales al servidor para solicitar cada uno de estos recursos (la hoja de estilos, las dos imágenes y el video).
  5. El servidor responde con cada uno de estos recursos y el navegador los muestra en la página web.

Instalación de requests en Python

Para utilizar Requests, primero debes instalarlo. La forma más sencilla de hacerlo es mediante el comando pip en la terminal:

pip install requests

Importar el módulo requests en Python

Una vez instalado, puedes importar la biblioteca requests en tu script Python con la siguiente línea:

import requests

Enviar una solicitud HTTP get con requests en Python

Enviar una solicitud de tipo get desde Python, es muy sencillo:

import requests

respuesta = requests.get('https://www.programacionfacil.org')

print(respuesta)

En la consola se imprime un código 200 (ahora explicaré el tema de los códigos).

Resultado en la consola

<Response [200]>

Este código 200 se ha producido porque la solicitud get se ha realizado correctamente.

Página no encontrada - HTTP 404

Vamos a provocar el código 404 de página no encontrada. Basta con poner una página inexistente en el get:

import requests

respuesta = requests.get('https://www.programacionfacil.org/no-existe')

print(respuesta)

Resultado en la consola

<Response [404]>

Con esto, ya puedes hacerte una idea de como puedes establecer reglas en tus programas interactuando con los códigos que devuelva el servidor. Por supuesto, a lo largo del curso, iré hablando sobre

Por ejemplo, imagina que tienes una app meteorológica. Los datos los recibes de una API (servicio). Supón que cae el servicio, un código 503. Si no manejas el código, tu programa fallará de forma inesperada, Sin embargo, quizás quieras añadir un servicio alternativo para que tu app siga funcionando en caso de que el primer servicio caiga.

Por ejemplo, en mi sitio web, he redireccionado una página alternativa para cada error HTTP. Si alguien va a una página inexistente, le aparecerá esto:

http 404 error

De esta forma, le aviso de lo que ha ocurrido y de lo que puede hacer, así como un contacto para avisar del error y los botones de navegación para continuar en el sitio web, ya que si llegan desde un buscador, puede ser lo último que hagan antes de irse a otro sitio web.

No te pierdas nada del curso Máster en Python.

Deja una respuesta

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

curso django Entrada anterior Creando una app de varias URL con Django
curso django Entrada siguiente Herramientas de desarrollo del navegador con Django