2009-05-28 37 views
17

Làm cách nào để đọc lại tất cả cookie trong Python mà không biết tên của chúng?Lấy tất cả Cookie trong Python

+3

Khi bạn nói "đọc chúng trở lại", bạn có nghĩa a) đọc chúng từ một phản ứng HTTP, hoặc b) đọc chúng ra khỏi CookieJar? Hoặc là có một (c) giải thích? –

Trả lời

4

Nhìn vào tiêu đề Cookie: trong phản hồi HTTP bạn nhận được, phân tích nội dung của chúng với mô-đun Cookie trong thư viện chuẩn.

+0

Tôi làm cách nào để làm điều đó? .. –

+1

Bạn xem cookie như thế nào trong phản hồi HTTP? Điều đó phụ thuộc vào cách bạn nhận được phản hồi đó, ví dụ urllib.urlretrieve trả về một bộ gồm 2 mục, thứ hai là httplib.HTTPMessage với siêu dữ liệu; nếu bạn thích urllib.urlopen, bạn nhận được HTTPMessage bằng cách gọi .info() trên đối tượng pseudo-file mà urlopen trả về; vv, vv –

4

Đặt os.environ['HTTP_COOKIE'] vào một mảng:

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

tôi tin rằng điều này chỉ hợp lệ nếu một CGI được gọi là ... –

24

Không chắc nếu đây là những gì bạn đang tìm kiếm, nhưng đây là một ví dụ đơn giản, nơi bạn đặt cookie trong một cookiejar và đọc chúng trở lại:

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

hữu ích, cảm ơn! – chenge

+1

Nếu cookie tôi nhận được là '', làm cách nào để nhận phần '_b'? 'cookie [" _ b "]' không hoạt động – Shane

4

Đây có thể chính xác là những gì bạn đang tìm kiếm.

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) 
Các vấn đề liên quan