我正试图找到一种方法来提取和删除特定请求发送的cookie,而不是检查会话cookie jar。
请求库存储了所有请求的cookie,我无法访问程序当前正在处理的请求发送的cookie。
删除会话cookie的示例代码:
function t({}) {/* code inside */} //Ok, I give up
现在,因为这是一个会话,我似乎无法访问特定请求的cookie,例如:
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的原因是因为我正在使用 requests-futures ,因此当应用程序处理请求X时,我有其他请求同时工作,写入会话cookiejar。
我可以使用的是extract_cookies API调用。
顺便说一句,如何在请求期货中使用Requests API?例如:
r.cookies['foo']
这是请求期货短source code。
谢谢!
答案 0 :(得分:1)
您可以拥有一个功能,只使用会话中需要的Cookie构建请求并发送该请求。
注意:第二个请求不会更新会话变量。因此,如果您使用第二个请求设置另一个cookie,则会话cookie不会更新
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')]