2009-05-28 21 views
17

Come posso leggere tutti i cookie in Python senza conoscere i loro nomi?Recupero di tutti i cookie in Python

+3

Quando si dice "leggere indietro", cosa vuoi dire a) leggerli da una risposta HTTP, oppure b) leggerli fuori dal Cookiejar? O c'è una (c) interpretazione? –

risposta

4

Guarda le intestazioni Cookie: nella risposta HTTP che ottieni, analizza il loro contenuto con il modulo Cookie nella libreria standard.

+0

come si fa? ... –

+1

Come si guardano i cookie nella risposta HTTP? Ciò dipende da come si ottiene tale risposta, ad esempio urllib.urlrriveeve restituisce una tupla di 2 elementi, il secondo è il httplib.HTTPMessage con i metadati; se si preferisce urllib.urlopen, si ottiene HTTPMessage chiamando .info() sull'oggetto pseudo-file restituito da urlopen; ecc, ecc. –

4

Mettere os.environ['HTTP_COOKIE'] in un array:

#!/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

credo che questo sia valido solo se un CGI è chiamato in ... –

24

Non sono sicuro se questo è quello che stai cercando, ma qui è un semplice esempio dove si mettono i cookie in un Cookiejar e leggere di nuovo:

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, grazie! – chenge

+1

Se il cookie che ho ottenuto è '', come faccio a ottenere la parte '_b'? 'cookie [" _ b "]' non funziona – Shane

4

Questo potrebbe essere esattamente quello che stai cercando.

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) 
Problemi correlati