2009-02-08 65 views
10

¿Cómo puedo aceptar cookies en una secuencia de comandos python?Aceptar cookies en Python

+0

Quizás debería ser más específico. ¿Qué está tratando de lograr? ¿Qué marco estás usando, si hay alguno? –

Respuesta

1

Creo que quiere decir tener un script de Python que intente hablar HTTP. Le sugiero que use una biblioteca de alto nivel que maneja las cookies automáticamente. pycurl, mechanize, twill - usted elige.

Por Nikhil Chelliah:

no veo lo que no está claro aquí.

Al aceptar se produce una cookie en el lado del cliente. El servidor puede establecer una cookie.

+1

Un servidor también puede obtener cookies del cliente. Por otra parte, "aceptar" podría ser solo un término válido para el cliente. –

+0

+ por mencionar mecanizar – Alex

0

Existe la biblioteca cookielib. También puede implementar sus propias políticas y almacenamiento de cookies, las cookies se encuentran en el encabezado set-cookie de la respuesta (Set-Cookie: name = value), luego envía el reverso a un servidor en uno o más encabezados de Cookie en el solicitud (Cookie: nombre = valor).

1

No está claro si desea una solución del lado del cliente o del lado del servidor.

Por el lado del cliente, cookielib funcionará bien. This answer y algunos tutoriales web ofrecen explicaciones más detalladas.

Si se trata de un problema del lado del servidor, debe utilizar un marco que se ocupe de todo el texto estándar. Realmente me gusta cómo lo manejan CherryPy y web.py, pero la API es bastante simple en cualquier biblioteca.

18

Prueba esto:

import urllib2 
import cookielib 

jar = cookielib.FileCookieJar("cookies") 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 

print "Currently have %d cookies" % len(jar) 
print "Getting page" 
response = opener.open("http://google.com") 
print response.headers 
print "Got page" 
print "Currently have %d cookies" % len(jar) 
print jar 

Debe imprimir

Currently have 0 cookies 
... 
Currently have 2 cookies 

(Google siempre establece una cookie). Realmente no necesitas tanto a menos que quieras guardar tus cookies en el disco y usarlas más tarde. Debería encontrar que

urllib2.build_opener(HTTPCookieProcessor).open(url) 

Cuida la mayor parte de lo que desea.

Más información aquí:

4

La forma más sencilla es utilizar requests biblioteca.

import requests 
url = 'http://www.google.com/doodles/' 
r = requests.get(url) 
print r.cookies 
Cuestiones relacionadas