2

使用 python 外壳

>>> import requests
>>> cookies = {'sentcookie':'666'}
>>> res = requests.get('http://en.wikipedia.org/wiki/Main_Page', cookies=cookies)
>>> res   
<Response [200]>
>>> res.cookies
<<class 'requests.cookies.RequestsCookieJar'>[Cookie(version=0, name='sentcookie', 
value='666', port=None, port_specified=False, domain='', domain_specified=False, 
domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None,  
discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]>
>>>

为什么服务器返回的 cookie 列表中包含“sentcookie”?我已经嗅探了通信并且没有从服务器返回 cookie。为什么请求将其包含在列表中,我该如何禁用此行为?

4

2 回答 2

1

我有完全相同的问题,我认为我不完全理解您的答案。假设您想根据文档将 cookie 添加到您的请求中,这是正确的方法:

cookies = {'sentcookie':'666'}
response = requests.get('http://en.wikipedia.org/wiki/Main_Page', cookies=cookies)

现在,如果服务器返回 cookie,您可以通过以下方式访问它们:

response.cookies 

但我不希望得到与我发送的相同的 cookie,即使服务器没有返回它们,出于某种原因它正在发生。

我怎样才能防止这种行为?

于 2012-12-18T18:51:02.057 回答
1

这不是要禁用该行为,而是要告诉 requests 您执行该行为。

在这:

cookies = {'sentcookie':'666'}
res = requests.get('http://en.wikipedia.org/wiki/Main_Page', cookies=cookies)

您是在告诉它您希望该 cookie 可用,无论是否需要...

您通常使用cookies=浏览器缓存或其他东西(出于某种原因)可能拥有的现有 cookie,然后照常requests处理来自服务器的 cookie

于 2012-12-18T17:23:13.143 回答