[Código-Python]Enviando y recibiendo cookies por consola - JaAViEr|0x5d

Iniciado por 0x5d, 28 Abril 2012, 08:34 AM

0 Miembros y 1 Visitante están viendo este tema.

0x5d

Hola, buen día !

Hoy, estuve leyendo acerca de las preciadas cookies, antes de continuar, por si alguien no sabe que son las cookies, consultemos a la ya famosa Wikipedia:
CitarLos cookies enInformática sirven para:

       
  • Llevar el control de usuarios: cuando un usuario introduce su nombre de usuario y contraseña, se almacena una cookie para que no tenga que estar introduciéndolas para cada página del servidor. Sin embargo, una cookie no identifica a una persona, sino a una combinación de computador-navegador-usuario.
  • Conseguir información sobre los hábitos de navegación del usuario, e intentos de spyware, por parte de agencias de publicidad y otros. Esto puede causar problemas de privacidad y es una de las razones por la que las cookies tienen sus detractores.
Para la info completa aquí !

Bien, con este tema rápidamente me vinieron a la mente varias ideas para programar con respecto al caso. Me puse manos a la obra y pues por ahora conseguí un humilde programa de 68 líneas (sin reducir nada).

El código lo que hace es enseñarnos 3 opciones:

       
  • Ver cookies.
  • Enviar cookies.
  • Salir.
Con la primera opción, nos pedirá una URL y nos devolverá las cookies contenidas en dicho sitio, posteriormente nos da la opción de poder almacenarla en un archivo.

Mientras que la segunda opción nos permitirá enviar una o más cookies a algún sitio web(NO ME HAGO RESPONSABLE DEL MAL USO QUE LE PUEDAN DAR), dándonos la opción de guardar la salida del HTML en un archivo local o simplemente mostrarlo en consola.

Si piensan en: Y para que guardarlo ? , podría ser para ver si algún logueo se realiza de forma correcta, si algunos datos varían con cada cookie, etc. A su imaginación lo dejo !

La tercera opción no tiene mucha ciencia, no creo que haya que explicarla jajaja. Bien, sin más preámbulos, el código:
Código (python) [Seleccionar]
# -*- coding: utf-8 -*-
#Autor: JaAViEr|0x5d
#Web: http://www.rootcodes.com
#Twitter: @0x5d

import urllib2, re, sys

while True:
print"""
¡ Obtén o envía cookies desde Python !

1.- Ver cookies.
2.- Enviar cookies.
3.- Salir.
"""
try:
opc = input("Opción ::> ")
if opc in range(1,4):
if opc == 3:
break
elif opc==1:
try:
url = raw_input("URL :: > http://")
headers = urllib2.urlopen("http://%s"%url).info()
cookie = re.findall("Set-Cookie:(.*)",str(headers))[0]
if cookie:
print "Cookie obtenida:\n", cookie
save_q = raw_input("Guardar la cookie en un archivo?(TXT) (s/n) ::>").lower()
if save_q=="s":
try:
archivo = open("%s.txt"%raw_input("Archivo : "),"w")
archivo.write(str(cookie))
archivo.close()
print "Archivo guardado con éxito!"
except:
print "No se pudo guardar el archivo..."
else:
print "No se obtuvo cookies..."
except:
print "No se pudo conectar"
elif opc==2:
print "Recuerda separar cada cookie con un punto y coma (;) !"
try:
url = raw_input("URL :: > http://")
cookie_tosend = raw_input("Cookies: ")
save_cookies = urllib2.build_opener()
save_cookies.addheaders.append(('Cookie', cookie_tosend))
abrir_web = save_cookies.open("http://%s"%url)
try:
q_show = raw_input("Desea volcar el html en un archivo?(HTML) (s/n) ::> ")
if q_show=="s":
try:
save_output = open("%s.html"%raw_input("Archivo de salida(sin .html):"),"w")
save_output.write(abrir_web.read())
save_output.close()
print "Archivo guardado con éxito !"
except:
print "No se pudo guardar el archivo..."
else:
print abrir_web.read()
except:
print "Ocurrió un problema inesperado..."
except:
print "Error inesperado..."
else:
print "No existe dicha opcion"
except:
print "Por favor ingresa un número"

Hice el código lo más ordenado posible, manejando controles de error para todo, evitando un código desastroso (:

Pueden hacer la prueba del programa con esta url : Prueba Cookies

Envíen desde el programa, la cookie "name=Javier" y vean el resultado :D

Y como siempre... Espero sea de su agrado el código !

Fuente: http://rootcodes.com/pythonenviando-y-recibiendo-cookies-jaavier0x5d/

Saludos, Javier.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !