如何在Python中读取cookie

5

我是Python CGI脚本的新手。我想在Python中读取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())

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

但是,我只看到了“cookies are:”这个消息。

我做错了什么吗?


2个回答

7

尝试使用以下方法在Python中读取cookie:

#!/usr/bin/python

import os

# Hello world python program
print "Content-Type: text/html;charset=utf-8";
print

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

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

for k in handler:
    print k + " = " + handler[k] + "<br>

0

如果您不使用opener,则Cookie jar不会被填充。

访问发出Set-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())

response = opener.open('http://google.com/') # <---
response.read()

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

打印

the cookies are:
<Cookie NID=67=aBkBw0UEgv... for .google.co.kr/>
<Cookie PREF=ID=b99fae87d... for .google.co.kr
<Cookie NID=67=c8QgK_rfyf... for .google.com/>
<Cookie PREF=ID=dbb574e7d... for .google.com/>

仍然只有“the cookies are:”消息出现。关于“opener.open('http://google.com/')”,这里的“http://google.com/”将是我的网站。正确吗? - rpdev123
@rpdev123,你的网站是否输出“Set-Cookie”头?首先尝试使用http://google.com/。然后再尝试你的网站URL。(确保你的网站生成cookie。) - falsetru
还是不行。关于“你的网站是否输出Set-Cookie头?”,怎么办呢? - rpdev123
@rpdev123,您可以使用浏览器的调试功能(如 Chrome 中的“开发者工具 - 网络”选项卡或 Firebug 中的“Net”选项卡)来检查 HTTP 标头。 - falsetru
是的,我可以在Firebug网络选项卡中看到Cookie头。以下是我在Firebug网络选项卡中看到的Cookie信息: Cookie __utma=150254709.575910388.1384152185.1386075091.1386077854.6; __utmz=150254709.1384152185.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __zlcmid=MKdN8V0sE0SPFc; gpv_p23=no%20value; s_nr=1388401890342-Repeat; EuE=gs3t32u978nqsubopcrmifioi2; affiliateID_1=100; merchantID_1=1; merchantPromoID_1=1; - rpdev123
@rpdev123,你是说你正在编写CGI脚本吗? ;) - falsetru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接