Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Leer contenido de una cookie
#1
Hola , tengo un sitio web en php que me crea una cookie , seria posible abrir esta cookie en python y leer su contenido ? si es asi como tendria que hacerlo?
Responder
#2
Hola, puedes usar la librería requests que aunque no pertenece a la librería estándar de Python es de las más usadas en la comunidad.

Código:
>>> import requests
>>> r = requests.get("http://recursospython.com")
>>> r.cookies

(Un artículo sobre requests es todavía una tarea pendiente).

También es asequible vía el módulo urllib, pero requests siempre simplifica las cosas.

Saludos.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Me da este error , alguna idea ?

AttributeError: 'module' object has no attribute 'open'

Intento para las pruebas leer una cookie local que he generado , La cookie se llama test y este es el codigo

import requests

r = requests.get("http://localhost")
cookies=r.cookies

print cookies['Test']


Y este el error 


Traceback (most recent call last):
  File "C:\Python27\Proyectos\cookies.py", line 6, in <module>
    print cookies['Test']
  File "C:\Python27\lib\site-packages\requests\cookies.py", line 329, in __getitem__
    return self._find_no_duplicates(name)
  File "C:\Python27\lib\site-packages\requests\cookies.py", line 400, in _find_no_duplicates
    raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path))
KeyError: "name='Test', domain=None, path=None"
Responder
#4
El error fue mío, la función correcta es requests.get.

Con respecto a lo último, puede que el nombre de la cookie sea incorrecto. ¿Es "test" o "Test"? ¿Cómo la estás generando?

Puedes hacer una prueba con el foro:

Código:
>>> import requests
>>> r = requests.get("http://foro.recursospython.com")
>>> r.cookies["sid"]
'87bea27af2a8ef63501ae74ba255dcad'

Saludos.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
Es Test , esta bien escrita , si la busco en el navegador tengo esto

Nombre: Test
Contenido: LEER_DNI
Dominio: localhost
Ruta: /
Enviar para: Cualquier tipo de conexión
Accesible para secuencia de comandos: Sí
Creado: jueves, 16 de marzo de 2017, 21:15:03
Caduca: Al finalizar la sesión de navegación

No cierro el navegador

Tengo esto mismo con una cookie en pruebasfran.hol.es que se llama TestCookie y me da el mismo error

La unica diferencia que veo con la tuya es la mia es accesible para secuencia de comandos y la tuya no .

La cookie en pruebas se genera en
http://pruebasfran.hol.es/dni.php

Te agredeceria mucho si le echas un vistazo
Responder
#6
Bien, en ese caso el código debería ser:

Código:
>>> import requests
>>> r = requests.get("http://pruebasfran.hol.es/dni.php", params={"dni": "lector"})
>>> r.cookies["Test"]
'LEER_DNI'

Cabe aclarar que esto es independiente del navegador. Requests no puede acceder a las cookies generadas por Firefox, Chrome u otro similar (puede que haya algún método para esto pero lo desconozco).
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#7
Ok , ahora si funciona , pero no es esto lo que pretendo , lo que yo necesito es saber si la cookie existe , no en el servidor , cuando en la pagina php se pulsa sobre el boton siguiente se genera la cookie y lo que yo necesito es acceder a la cookie local y comprobar si contiene LEER_DNI.
Responder
#8
Puedes chequear browsercookie que permite leer cookies almacenadas por Firefox o Chrome. Aquí hay un ejemplo con Chrome:

Código:
>>> import browsercookie
>>> cj = browsercookie.chrome()
>>> for c in cj:
...     if (c.domain == "pruebasfran.hol.es" and
...         c.name == "Test" and c.value == "LEER_DNI"):
...             print "Existe."
...
Existe.

(Lo instalas vía pip install browsercookie).

No tuve mucha suerte con Firefox, habría que ver si el módulo soporta las versiones más recientes. Espero que te sirva.

Saludos.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#9
Me da este error al probar tu codigo :

Traceback (most recent call last):
File "C:\Python27\q.py", line 47, in <module>
cj = browsercookie.chrome()
File "C:\Python27\lib\site-packages\browsercookie\__init__.py", line 201, in chrome
return Chrome(cookie_file).load()
File "C:\Python27\lib\site-packages\browsercookie\__init__.py", line 72, in __init__
self.tmp_cookie_file = create_local_copy(cookie_file)
File "C:\Python27\lib\site-packages\browsercookie\__init__.py", line 43, in create_local_copy
raise BrowserCookieError('Can not find cookie file at: ' + cookie_file)
BrowserCookieError: Can not find cookie file at: C:\Users\Antonio\AppData\Roaming\..\Local\Google\Chrome\User Data\Default\Cookies
Responder
#10
¿Tienes Chrome instalado? ¿Ingresaste a la web antes de ejecutar el código? Aquí encontré un fork un poco más actualizado, puedes chequearlo.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)