【发布时间】:2018-12-27 07:08:00
【问题描述】:
所以我正在尝试使用requests 库编写一个小脚本,该库向站点(例如github.com)发出请求,并解析响应标头中的cookie。因此,当您向 github.com 发出请求时,会有 3 个不同的 Set-Cookie 标头为:
Set-Cookie: has_recent_activity=1; path=/; expires=Thu, 27 Dec 2018 07:54:16 -0000
Set-Cookie: logged_in=no; domain=.github.com; path=/; expires=Mon, 27 Dec 2038 06:54:16 -0000; secure; HttpOnly
Set-Cookie: _gh_sess=MldFM3p...; path=/; secure; HttpOnly
现在,当您通过 requests API 发出请求并通过 req.headers.get('Set-Cookie') 检查 Set-Cookie 标头时,所有这些 cookie 值将合并为一个:
has_recent_activity=1; path=/; expires=Thu, 27 Dec 2018 07:54:16 -0000, logged_in=no; domain=.github.com; path=/; expires=Mon, 27 Dec 2038 06:54:16 -0000; secure; HttpOnly, _gh_sess=MldFM3p...; path=/; secure; HttpOnly
所以我的问题是如何获得 3 个完全独立的完整 cookie,因为它是由服务器连同所有 cookie 元数据信息(可能以列表的形式)一起发送的?
我是 Python 新手,因此我们将不胜感激任何帮助。干杯!
【问题讨论】:
-
如果请求将它们全部聚集成一个,你怎么知道有三个 set-cookie 标头?
-
@robert 我在发布之前显然已经尝试过了。 :)
-
我的意思是,您在看到 3 个 set-cookies 标头的地方还发送了一个获取请求吗?无论如何,如果它们都聚集在一起,我不知道如何区分实际的 set-cookie 标头,如果您知道 cookie 名称,则可以从 cookies.get_dict() 中单独获取值。 (如果您需要查看 cookie 的路径/域,请参阅stackoverflow.com/questions/25091976/…)
-
@robert,查看设置的 cookie 会发现它们都有自己的
expires标志,每个设置的 cookie 只能有一个过期标志,所以它们是有道理的不同的。另一方面,您可以通过简单的浏览器/fiddler/burpsuite 进行尝试,拦截请求,您会看到它们。或者你可以在这里试试:hackertarget.com/http-header-check。对于第二部分,遗憾的是我不知道 cookie 的名称。 :(
标签: python python-3.x python-2.7 python-requests