当我使用请求访问URL cookies are automatically sent back to the server 时(在以下示例中,请求的URL设置了一些cookie值,然后重定向到显示存储的cookie的另一个URL)
>>> import requests
>>> response = requests.get("http://httpbin.org/cookies/set?k1=v1&k2=v2")
>>> response.content
'{\n "cookies": {\n "k2": "v2",\n "k1": "v1"\n }\n}'
是否可以像设置Chrome或Firefox不接受cookie一样临时禁用cookie处理?
例如,如果我使用Chrome访问上述URL并禁用cookie处理,我会得到我的预期:
{
"cookies": {}
}
4 回答
您可以通过定义cookie策略来拒绝所有cookie来执行此操作:
(注意
http.cookiejar
的API要求您定义一组属性和方法,如图所示 . )然后,在您的请求会话中设置cookie策略:
它现在不会存储或发送cookie:
顺便说一句,如果你看一下代码,
requests
包中的便捷方法(而不是requests.Session
对象上的方法)每次构造一个新的Session
. 因此,在requests.get
的单独调用之间不会保留cookie . 但是,如果第一页设置了cookie然后发出HTTP重定向,则目标页面将看到cookie . (这是HTTPBin/cookies/set
调用所发生的情况,它会重定向到/cookies
. )因此,根据您想要重定向的行为,您可能不需要做任何特别的事情 . 相比:
你回来了
"k2": "v2", "k1": "v1"
因为他们're sent in GET params. If you follow up with a second request you' ll看到你发送没有cookie . 除非您使用requests.Session
,否则客户端不会自动处理cookie,您必须为每个请求显式传递dict或CookieJar .