首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python请求会话中特定请求的cookie。

Python请求会话中特定请求的cookie。
EN

Stack Overflow用户
提问于 2015-05-08 17:04:50
回答 1查看 3.7K关注 0票数 1

我试图找到一种方法来提取并可选地删除由特定请求发送的cookie,而不是检查会话cookie jar。

请求库存储所有请求的cookie,我在访问程序当前正在处理的请求发送的cookie时遇到了问题。

删除会话cookie的示例代码:

代码语言:javascript
复制
import requests


s = requests.Session()
r = s.get('http://httpbin.org/cookies/set', params={'foo': 'bar', 'key2': 'value2'})
print('Before Clear:')
print(s.cookies.items())
>>[('foo', 'bar'), ('key2', 'value2')]

s.cookies.clear(domain='httpbin.org', path='/', name='foo')

print('After Clear:')
print(s.cookies.items())
>>[('key2', 'value2')]

现在,由于这是一个会话,我似乎无法访问特定请求的cookie,例如:

代码语言:javascript
复制
r.cookies['foo']

我需要特定请求的cookie的原因是因为我使用的是requests-futures,,所以当应用程序处理请求X时,我有其他请求同时工作,并将其写入会话cookiejar。

我可以使用的似乎是曲奇饼 API调用。

顺便问一下,如何在请求-期货中使用请求API?例如:

代码语言:javascript
复制
requests.utils.add_dict_to_cookiejar(cj, cookie_dict)

这是请求-期货卖空源代码

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-08 18:15:43

您可以有一个函数,它只使用会话中需要的cookie构建请求并发送该请求。

注意:第二个请求不更新会话变量。因此,如果使用第二个请求设置另一个cookie,则不会更新会话cookie。

代码语言:javascript
复制
import requests

def generateCookie(keys, session):
    cookie = {}
    for k, v in session.cookies.get_dict().items():
        if k in keys:
            cookie[k] = v
    return cookie


s = requests.Session()
r = s.get('http://httpbin.org/cookies/set', params = {'foo': 'bar', 'key': 'value', 'Larry': 'Moe'})

print('Session Cookies:', s.cookies.items())

p = requests.get('http://httpbin.org/cookies', cookies=generateCookie(['foo', 'Larry'], s))

print(p.text)

print('Session Cookies:', s.cookies.items())


###########
# OUTPUT
###########
Session Cookies: [('Larry', 'Moe'), ('foo', 'bar'), ('key', 'value')]
{
  "cookies": {
    "Larry": "Moe", 
    "foo": "bar"
  }
}

Session Cookies: [('Larry', 'Moe'), ('foo', 'bar'), ('key', 'value')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30129209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档