2009-05-28 9 views
17

Pythonのクッキーを名前を知らずにすべて読み取るにはどうすればいいですか?Pythonのすべてのクッキーを取得する

+3

あなたはA意味だ、 "彼らをリードバック" と言う)HTTP応答からそれらを読んで、またはb)をCookieJarからそれらを読んで?あるいは(c)解釈がありますか? –

答えて

4

入手したHTTP応答のCookie:ヘッダーを見て、その内容を標準ライブラリのモジュールCookieで解析します。これはあなたが探しているものであるが、ここであなたがをCookieJarにクッキーを入れて、簡単な例であれば

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

どうすればいいですか?.. –

+1

HTTPレスポンスでクッキーをどのように見ますか?それはあなたがそのレスポンスをどのように取得しているかに依存します。たとえば、urllib.urlretrieveは2つの項目のタプルを返します。もう1つはメタデータを含むhttplib.HTTPMessageです。 urllib.urlopenが好きな人は、urlopenが返す擬似ファイルオブジェクトの.info()を呼び出してHTTPMessageを取得します。 –

4

配列にos.environ['HTTP_COOKIE']を入れ

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

これは、CGIが呼び出された場合にのみ有効であると信じています。 –

24

わからないと戻ってそれらを読んで:

+0

おかげさまで、ありがとうございました! – chenge

+1

私が得たクッキーが '"の場合、どのように '_b'部分を取得しますか? 'cookie [" _ b "]'は動作しません – Shane

4

これはまさにあなたが探しているものかもしれません。

の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) 
関連する問題