Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: MA40 en 18 Septiembre 2016, 20:08 pm



Título: [Python] Utilizando autenticación y cookies [RESUELTO]
Publicado por: MA40 en 18 Septiembre 2016, 20:08 pm
Hola.

Estoy aprendiendo a programar cookies en Python para que un usuario pueda autenticarse y mantenerse logueado e incluso pueda loguearse automáticamente en sesiones posteriores.

Una información interesante que he encontrado es ésta: http://crysol.org/es/node/1361 (http://crysol.org/es/node/1361)

El problema es que utiliza módulos no estándares que mi proveedor de hosting no tiene instalados en su equipo.

¿Hay alguna forma de utilizar cookies con los módulos estándares de Python?

Un saludo.


Título: Re: [Python] Utilizando autenticación y cookies
Publicado por: Poyoncio en 18 Septiembre 2016, 20:46 pm
Busca información a cerca de urllib2 o urrlib3, te dejo unos enlaces para usar cookies:
http://stackoverflow.com/questions/3334809/python-urllib2-how-to-send-cookie-with-urlopen-request
http://stackoverflow.com/questions/2422922/python-urllib3-and-how-to-handle-cookie-support


Eso si, te recomiendo que uses la libreria no estandar "requests", ya que es una magnifica api, no encontraras una mejor, muy simplificada, util y estable.

Aqui ademas te dejo un codigo en requests:
Código
  1. import requests
  2. peticion = requests.get(url, cookies={'algo':'valor'})
  3. print(peticion.content)


Título: Re: [Python] Utilizando autenticación y cookies
Publicado por: MA40 en 19 Septiembre 2016, 00:26 am
Hola de nuevo.

Muchas gracias Poyoncio, mi problema con el módulo requests es que no lo tiene instalado mi proveedor de hosting, y no va a hacerlo aunque se lo pida.

He encontrado estas direcciones que explican de una forma sencilla cómo hacer lo que quiero, utilizando el módulo Cookie que sí lo tiene instalado mi proveedor.

http://raspberrywebserver.com/cgiscripting/using-python-to-set-retreive-and-clear-cookies.html (http://raspberrywebserver.com/cgiscripting/using-python-to-set-retreive-and-clear-cookies.html)

https://docs.python.org/2/library/cookie.html (https://docs.python.org/2/library/cookie.html)

He creado el siguiente script en Python con el nombre “enviando_cookie.py” y lo he subido a mi sitio:

Código
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. print "Content-type: text/html\n\n"
  5. import Cookie
  6.  
  7. C = Cookie.SimpleCookie()
  8. C['nombre_de_la_cookie'] = 'valor_de_la_cookie'
  9. C['nombre_de_la_cookie']['expires'] = 1*1*1*5*60
  10.  
  11. print C

Si alguien quiere probarlo, puede hacerlo en la siguiente dirección: ***** PROBLEMA RESUELTO - ENLACE ELIMINADO *****

Se supone que debería enviar una cookie al ordenador del cliente con un tiempo de expiración de 5 minutos.

Aparentemente funciona pues se imprime el valor de la cookie en la pantalla, pero luego si intentas leerla o si la buscas con las opciones de tu navegador, no se encuentra, o sea que no se descarga.

¿Sabéis a que puede ser debido?

Un saludo.


Título: Re: [Python] Utilizando autenticación y cookies
Publicado por: Poyoncio en 19 Septiembre 2016, 17:02 pm
Si por eso puse, no estandar, era solo para que lo tuvieras en cuenta para un futuro :P


Desconozco realmente la totalidad de tu pequeño proyecto pero te aconsejo que uses urrlib2 o urrib3 ya que puedes realizar mas cosas, si te va bien ya ese usa ese (te lo digo como consejo en grandes proyectos).
Respecto a tu script ami me imprime "valor_de_la_coockie" nose si ese es la coockie realmente o si es que hay que modificar algo
Saludos


Título: Re: [Python] Utilizando autenticación y cookies
Publicado por: MA40 en 19 Septiembre 2016, 17:48 pm
...
Respecto a tu script ami me imprime "valor_de_la_coockie"…
...

Sí, ése es el valor de la cookie, el problema es que aunque se imprime por pantalla, no se queda guardada en el ordenador del cliente, (algo no funciona en el script).

Intentaré solucionarlo con este módulo (Cookie) y si no lo consigo, empezaré a estudiar los módulos que tú me recomiendas. (¿Qué podrá ser lo que no funciona en este script?) :-\

Muchas gracias Poyoncio.

Un saludo.


Título: Re: [Python] Utilizando autenticación y cookies
Publicado por: MA40 en 20 Septiembre 2016, 18:41 pm
Hola de nuevo.

Ya he resuelto el problema. Lo dejo aquí por si puede servir de ayuda a alguien.

En realidad no sé a qué puede ser debido, pero si el código que he puesto en mi tercer post, se sustituye por el que pongo a continuación, la cookie se envía correctamente.

Código
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import Cookie
  5.  
  6. C = Cookie.SimpleCookie()
  7. C['nombre_de_la_cookie'] = 'valor_de_la_cookie'
  8. C['nombre_de_la_cookie']['expires'] = 1*1*1*5*60
  9.  
  10. print C
  11.  
  12. print "Content-type: text/html\n\n"
  13.  
  14. print C

Un saludo.