Usar cookies en solicitudes de Python
-
Utilice
requests.get()
para obtener cookies en Python -
Use la clase
Session()
para mantenerse conectado con las páginas después de iniciar sesión
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.
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:
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
.
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.
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.
LinkedInArtículo relacionado - Python Requests
- Cadena de consulta con parámetros para solicitudes en Python
- Establecer agente de usuario usando solicitudes en Python
- Establecer reintentos máximos para solicitudes en Python
- Hacer una llamada API con token en Python
- Ignorar la verificación del certificado de seguridad SSL en las solicitudes de Python
- Python solicita paginación