【问题标题】:Retrieving all Cookies in Python在 Python 中检索所有 Cookie
【发布时间】:2010-10-29 14:57:01
【问题描述】:

如何在不知道名称的情况下用 Python 读回所有 cookie?

【问题讨论】:

  • 当您说“读回”时,您的意思是 a) 从 HTTP 响应中读取它们,还是 b) 从 CookieJar 中读取它们?还是有(c)解释?
  • 还有一个 (c) :) c_1) 有人可能会问关于 HIS python 会话的 cookie... 例如如果 python 脚本是 .cgi (为此参见 Matt Lacey 的 os.environ['HTTP_COOKIE'] 回答,取决于用于服务 cgi 的 Web 服务器)c_2)如果它是在 jupyter 中运行的笔记本(网络服务器是龙卷风)

标签: python cookies


【解决方案1】:

查看收到的 HTTP 响应中的 Cookie: 标头,使用标准库中的模块 Cookie 解析它们的内容。

【讨论】:

  • 您如何看待 HTTP 响应中的 cookie?这取决于您如何获得该响应,例如 urllib.urlretrieve 返回 2 个项目的元组,第二个是带有元数据的 httplib.HTTPMessage;如果您更喜欢 urllib.urlopen,您可以通过在 urlopen 返回的伪文件对象上调用 .info() 来获取 HTTPMessage;等等等等。
【解决方案2】:

os.environ['HTTP_COOKIE'] 放入一个数组中:

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

【讨论】:

  • 那太好了,正是我需要的,除了没有 HTTP_COOKIE...我正在使用 jupyter...(这意味着 Tornado)它在哪里存储 cookie?
【解决方案3】:

不确定这是否是您要查找的内容,但这里有一个简单的示例,您将 cookie 放入 cookiejar 并读回:

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

【讨论】:

  • 如果我得到的cookie是<Cookie _b="AQYJuqIEi9xHvY1vHG9i6bkSgQNv8b0/04YaLTPf4J0t4fOpb33Gr63a3y+nC6H2I0Y=" for .google.com/>,我如何得到_b部分? cookie["_b"] 不起作用
【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2019-03-20
    • 2014-11-15
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多