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:Los
cookies enInformática (http://es.wikipedia.org/wiki/Inform%C3%A1tica) 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 (http://es.wikipedia.org/wiki/Spyware), por parte de agencias de publicidad y otros. Esto puede causar problemas de privacidad (http://es.wikipedia.org/wiki/Privacidad) y es una de las razones por la que las cookies tienen sus detractores.
Para la info completa aquí ! (http://es.wikipedia.org/wiki/Cookie_%28inform%C3%A1tica%29)
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:
# -*- 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 (http://rootcodes.com/codes/a.php)
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.