当我使用访问URL的请求时, cookie会自动发送回服务器
(在下面的示例中,所请求的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处理?
例如,如果我在禁用了cookie处理的情况下使用Chrome访问上述URL,则会得到我期望的结果:
{
"cookies": {}
}
您可以通过定义Cookie政策来拒绝所有Cookie来做到这一点:
from http import cookiejar # Python 2: import cookielib as cookiejar
class BlockAll(cookiejar.CookiePolicy):
return_ok = set_ok = domain_return_ok = path_return_ok = lambda self, *args, **kwargs: False
netscape = True
rfc2965 = hide_cookie2 = False
(请注意,http.cookiejar
API要求您定义一堆属性和方法,如图所示。)
然后,在“请求”会话中设置Cookie策略:
import requests
s = requests.Session()
s.cookies.set_policy(BlockAll())
现在它将不存储或发送cookie:
s.get("https://httpbin.org/cookies/set?foo=bar")
assert not s.cookies
顺便说requests
一句,如果您查看代码,则包中的便捷方法(而不是requests.Session
对象上的便捷方法)Session
每次都会构造一个新方法。因此,Cookie不会在单独的调用之间保留requests.get
。但是,如果第一页设置cookie,然后发出HTTP重定向,则目标页面将看到cookie。(这是HTTPBin/cookies/set
调用发生的情况,该调用重定向到/cookies
。)
因此,根据您要重定向的行为,您可能不需要执行任何特殊操作。比较:
>>> print(requests.get("https://httpbin.org/cookies/set?foo=bar").json())
{'cookies': {'foo': 'bar'}}
>>> print(requests.get("https://httpbin.org/cookies").json())
{'cookies': {}}
>>> s = requests.Session()
>>> print(s.get("https://httpbin.org/cookies/set?foo=bar").json())
{'cookies': {'foo': 'bar'}}
>>> print(s.get("https://httpbin.org/cookies").json())
{'cookies': {'foo': 'bar'}}
>>> s = requests.Session()
>>> s.cookies.set_policy(BlockAll())
>>> print(s.get("https://httpbin.org/cookies/set?foo=bar").json())
{'cookies': {}}
>>> print(requests.get("https://httpbin.org/cookies").json())
{'cookies': {}}
问题内容: 我试图打开登录页面(GET),获取网络服务器提供的cookie,然后提交用户名和密码对以登录网站(POST)。 看着这个Stackoverflow问题/答案,我认为我会做以下事情: 但是,标头中有一个,但该对象中没有改变。实际上,链接问题的回答将表明没有内容被填充。 我在代码中通过使用标头字典来解决此问题,并在执行GET或POST之后使用此标头处理: 然后在请求方法中传递标头。这是正确
我正在使用OkHttpClient向网站的网页url发送请求,并通过以下方法存储它提供的cookie,我仅从stackoverflow获得该方法。 有必要存储cookie,否则网站会将请求重定向到超时页面。 然后,我看到页面的html来检查我是否到达了正确的网址。 现在,我以类似于网址“www.example.com/loginPage”的方式制作另一个请求变量,并尝试查看html,但它将我重定向
问题内容: 我正在尝试使用Python访问poloniex.com(一种加密货币交易所)上的交易API。为此,我必须遵循以下规定: 所有对交易API的调用都通过HTTP POST发送到https://poloniex.com/tradingApi,并且必须包含以下标头: 密钥-您的API密钥。 签名-根据HMAC-SHA512方法,由您的键的“秘密”对查询的POST数据进行签名。 此外,所有查询都
问题内容: 我正在使用以下网址: 正如我在“ myserver.com”的“ access.log”中看到的那样,使用了客户端的系统代理。但是我想完全禁止使用代理。 问题答案: 我目前了解的 完全 禁用代理的唯一方法是: 建立会议 设置于 使用该会话创建您的请求 import requests session = requests.Session() session.trust_env = Fal
问题内容: 我一直在努力解决这个问题几天。根据CORS请求设置Cookie。我看到了相互矛盾的文章和答案,有人说,只要XHR请求设置为true,并且服务器发送适当的标头,浏览器就应该尊重标头。但是,在我的测试中情况并非如此。 示例代码: index.js(Node.js服务器) cookies.html 我已经尝试在Firefox Developer Edition和Chrome上对此进行测试,除
问题内容: 我有一个node.js Connect服务器,用于检查请求的Cookie。为了在节点中测试它,我需要一种写客户端请求并将cookie附加到它的方法。我知道HTTP请求对此具有’cookie’标头,但是我不确定如何设置和发送它- 我还需要在同一请求中发送POST数据,因此我目前正在使用danwrong的restler模块,但似乎没有让我添加该标头。 关于如何使用硬编码的cookie和PO