2009-05-28 25 views
17

Comment lire tous les cookies en Python sans connaître leur nom?Récupérer tous les cookies en Python

+3

Quand vous dites « les relue », voulez-vous dire a) les lire à partir d'une réponse HTTP, ou b) les lire sur la CookieJar? Ou y a-t-il une interprétation (c)? –

Répondre

4

Examinez les en-têtes Cookie: dans la réponse HTTP que vous obtenez, analysez leur contenu avec le module Cookie dans la bibliothèque standard.

+0

comment puis-je faire cela? –

+1

Comment regardez-vous les cookies dans la réponse HTTP? Cela dépend de la façon dont vous obtenez cette réponse, par exemple urllib.urlretrieve renvoie un tuple de 2 éléments, le second est le httplib.HTTPMessage avec les métadonnées; Si vous préférez urllib.urlopen, vous obtenez le HTTPMessage en appelant .info() sur l'objet pseudo-fichier retourné par urlopen; etc, etc. –

4

Mettez os.environ['HTTP_COOKIE'] dans un tableau:

#!/usr/bin/env python 

import os 

if 'HTTP_COOKIE' in os.environ: 
    cookies = os.environ['HTTP_COOKIE'] 
    cookies = cookies.split('; ') 
    handler = {} 

    for cookie in cookies: 
    cookie = cookie.split('=') 
    handler[cookie[0]] = cookie[1] 
+0

Je crois que cela n'est valable que si un CGI est appelé ... –

24

Je ne sais pas si cela est ce que vous cherchez, mais voici un exemple simple où vous mettez les cookies dans un cookiejar et les relire:

from urllib2 import Request, build_opener, HTTPCookieProcessor, HTTPHandler 
import cookielib 

#Create a CookieJar object to hold the cookies 
cj = cookielib.CookieJar() 
#Create an opener to open pages using the http protocol and to process cookies. 
opener = build_opener(HTTPCookieProcessor(cj), HTTPHandler()) 

#create a request object to be used to get the page. 
req = Request("http://www.about.com") 
f = opener.open(req) 

#see the first few lines of the page 
html = f.read() 
print html[:50] 

#Check out the cookies 
print "the cookies are: " 
for cookie in cj: 
    print cookie 
+0

utile, merci! – chenge

+1

Si le cookie obtenu est '', comment puis-je faire partie de _b? 'cookie [" _ b "]' ne fonctionne pas – Shane

4

Cela peut être exactement ce que vous recherchez.

Python 3,4

import requests 

r = requests.get('http://www.about.com/') 
c = r.cookies 
i = c.items() 

for name, value in i: 
    print(name, value) 
Questions connexes