Usar cookies en solicitudes de Python

Salman Mehmood 15 febrero 2024
  1. Utilice requests.get() para obtener cookies en Python
  2. Use la clase Session() para mantenerse conectado con las páginas después de iniciar sesión
Usar cookies en solicitudes de Python

Este tutorial demuestra el uso de requests.get() para obtener cookies con la ayuda del parámetro cookies en Python y cómo acceder a una página web en particular que requiere un inicio de sesión.

Además, también aprenderemos el uso de requests.Session() para mantenernos conectados con esa página.

Utilice requests.get() para obtener cookies en Python

La biblioteca de solicitudes permite crear y leer cookies HTTP desde el servidor. Según la documentación de MDN, una cookie es “una pequeña porción de datos que un servidor envía al navegador web del usuario”.

Podemos almacenar la cookie en el navegador y enviarla de vuelta al servidor. Las cookies suelen tener uno de los siguientes propósitos:

  • Gestión de sesiones para iniciar sesión
  • Carritos de compra
  • Personalización del usuario o seguimiento del comportamiento del usuario.

Esta sección demuestra cómo trabajar con cookies, y en la siguiente sección, usaremos el primer propósito (administración de sesión para iniciar sesión).

Para enviar y recibir cookies con la biblioteca requests, empezaremos importando requests. Después de la importación, estableceremos una variable llamada URL para pasar el enlace como una cadena.

Usaremos esta URL porque proporciona un cuerpo de respuesta simple para ver la información de las cookies que enviamos al servidor. Por ejemplo, supongamos que queremos personalizar nuestra experiencia de usuario en función de la ubicación de un usuario.

De esta manera, podemos proporcionar estimaciones de envío para nuestros productos sin que el usuario tenga que ingresar una dirección. Para ello, solicitaremos conocer la ubicación del usuario en la cookie, y si está de acuerdo, almacenaremos la información en una cookie.

Para imitar el contenido recibido en este evento, declararemos un diccionario llamado CK con la clave de ubicación y un valor es Nueva York.

A continuación, declararemos nuestro objeto de respuesta response y lo configuraremos usando el método requests.get(). Ingresaremos nuestra variable URL como primer parámetro, seguido de la palabra clave cookies que se establecerá igual a nuestro diccionario CK.

Ahora que la solicitud está configurada, podemos imprimir el texto del objeto de respuesta usando response.text. Cuando se ejecuta un script, podemos ver que la cookie que acabamos de enviar está dentro del cuerpo de la respuesta.

import requests

URL = "https://httpbin.org/cookies"
CK = {"location": "New York"}
response = requests.get(URL, cookies=CK)
print(response.text)

Producción :

{
  "cookies": {
    "location": "New York"
  }
}

Para recibir una cookie de un servidor, utilizaremos una cookie ya configurada en el sitio web de Google.

Use la clase Session() para mantenerse conectado con las páginas después de iniciar sesión

Usando la herramienta de inspección de elementos en nuestro navegador, podemos ver dónde se envía la solicitud de inicio de sesión e imitarla en nuestro programa. Y la parte de la sesión nos permite mantenernos vivos y acceder a todas las páginas detrás del inicio de sesión.

Antes de escribir nuestro código, debemos hacer algunas cosas; sin embargo, necesitamos encontrar la URL de inicio de sesión y ver qué parámetros se envían con esa solicitud de publicación.

Necesitamos las credenciales de inicio de sesión, por lo que compartiremos la información de inicio de sesión con usted en este ejemplo porque estamos usando un sitio ficticio.

Tenemos un formulario de inicio de sesión simple con un nombre de usuario y una contraseña requeridos; si iniciamos sesión utilizando la información proporcionada, iniciaremos sesión y obtendremos un área segura.

Veremos la solicitud y la respuesta usando el elemento de inspección y yendo a la pestaña de red. Podemos ver aquí si hacemos clic en el botón Iniciar sesión, aparecen varias solicitudes.

Antes de iniciar sesión en la página, debe verificar el registro de Preservar para que podamos ver todo en la pestaña de red. Después de abrir la solicitud de autenticación, obtendremos cierta información, y una de ellas es una solicitud de publicación.

Una solicitud de “publicación” es una solicitud enviada al servidor desde el navegador web, y una solicitud de “obtención” es la información que regresa para averiguar la URL que se está publicando.

Copiaremos la solicitud de publicación URL porque enviaremos nuestra solicitud de publicación desde nuestro script de python. Podemos encontrar los datos de nuestro formulario dentro de la carga útil.

A veces, encuentra más información dentro de la carga útil, por lo que debe asegurarse de que todos los parámetros coincidan con la solicitud de publicación.

Pero, en nuestro caso, vemos que solo hay un nombre de usuario y una contraseña. Entonces, después de iniciar sesión, nos dirigieron de nuevo a la página segura, y esta es nuestra solicitud de obtención; al usar una respuesta “segura”, copiaremos la solicitud URL para usar en nuestro script de python.

usar cookies en solicitudes de python - salida

Ahora saltaremos al editor de código y comenzaremos a escribir nuestro código, lo primero que debemos hacer, como siempre, es importar solicitudes, y debemos configurar nuestra URL de inicio de sesión para la solicitud de publicación y asegurar URL para la solicitud obtener.

Ahora necesitamos llamar al método post() para enviar el nombre de usuario y la contraseña y autenticarnos con el servidor. Para hacer eso, necesitamos enviar alguna carga útil usando un diccionario llamado ACCESS_DATA.

Envolvimos el código dentro de Login_Dummy_web() y creamos otro archivo python llamado data.py.

Después de importar el archivo de datos, accedimos al nombre de usuario y la contraseña de este archivo al llamar a la función y devolver el RESULTADO.texto de la página segura.

Intentemos volver a la página segura usando el método get(); nos enviará de vuelta a una página de inicio de sesión porque no estamos autenticados.

import requests
import data


def Login_Dummy_web(username, password):
    LOGIN_URL = "https://the-internet.herokuapp.com/authenticate"
    SECURE_URL = "https://the-internet.herokuapp.com/secure"

    ACCESS_DATA = {"username": username, "password": password}

    RESULT = requests.post(LOGIN_URL, data=ACCESS_DATA)
    RESULT2 = requests.get(SECURE_URL)
    return RESULT2.text


print(Login_Dummy_web(data.username, data.password))

Producción:

usar cookies en solicitudes de python - página de inicio de sesión

Ya iniciamos sesión usando el método post(), pero aún así, niega el uso para enviar la página segura porque no tenemos nuestra sesión. La sesión nos permite persistir cookies para un sitio web en particular; para obtener una página segura, necesitamos usar requests.Session().

Usando la palabra clave con, usamos el administrador de contexto; El administrador de contexto es útil porque nos permitirá permanecer conectados y permanecer conectados mientras permanezcamos.

Ahora tenemos que llamar a los métodos get() y post() desde la variable de sesión llamada ss porque ahora estamos accediendo desde la clase Session().

import requests
import data


def Login_Dummy_web(username, password):
    LOGIN_URL = "https://the-internet.herokuapp.com/authenticate"
    SECURE_URL = "https://the-internet.herokuapp.com/secure"

    ACCESS_DATA = {"username": username, "password": password}
    with requests.Session() as ss:
        ss.post(LOGIN_URL, data=ACCESS_DATA)
        RESULT = ss.get(SECURE_URL)
    return RESULT.text


print(Login_Dummy_web(data.username, data.password))

Ahora dice (Bienvenido al Área Segura), lo que demuestra que hemos iniciado sesión allí; usando la variable requests.Session() llamada ss, podemos obtener otro contenido URL.

usar cookies en solicitudes de python - página segura

El código del archivo data.py se muestra a continuación:

username = "tomsmith"
password = "SuperSecretPassword!"

Para obtener más detalles, puede visitar este sitio web.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Python Requests