【问题标题】:Parse cookie string to array or something else in python将cookie字符串解析为数组或python中的其他内容
【发布时间】:2023-03-26 02:59:01
【问题描述】:

我有许多从 http 响应中获取并保存在集合中的 cookie 字符串。比如这样:

cookies = set()
cookies.add("__cfduid=123456789101112131415116; expires=Thu, 27-Aug-20 10:10:10 GMT; path=/; domain=.example.com; HttpOnly; Secure")
cookies.add("MUID=16151413121110987654321; domain=.bing.com; expires=Mon, 21-Sep-2020 10:10:11 GMT; path=/;, MUIDB=478534957198492834; path=/; httponly; expires=Mon, 21-Sep-2020 10:10:11 GMT")

现在我想将该字符串解析为数组或其他内容,以便更轻松地访问数据(域、过期、...)。比如这样:

cookie['MUID']['value']
cookie['MUID']['domain']
cookie['MUIDB']['path']
cookie['__cfduid']['Secure']
...

但我不知道我是怎么做到的。我尝试使用来自http.cookiesSimpleCookie,但没有得到预期的结果。

【问题讨论】:

标签: python cookies http-headers


【解决方案1】:

你应该为此创建一个 python 字典。

from collections import defaultdict
cookies = defaultdict(str)
list_of_strings = ["__cfduid=123456789101112131415116; expires=Thu, 27-Aug-20 10:10:10 GMT; path=/; domain=.example.com; HttpOnly; Secure"]# this is your list of strings you want to add
for string in list_of_strings:
    parts = string.split(";")
    for part in parts:
        temp = part.split("=")
        if len(temp) == 2:
            cookies[temp[0]] = temp[1]

【讨论】:

  • 谢谢,但是像SecureHttpOnly 这样的属性是什么?包含两个或多个像MUID=16151413121110987654321; domain=.bing.com; expires=Mon, 21-Sep-2020 10:10:11 GMT; path=/;, MUIDB=478534957198492834; path=/; httponly; expires=Mon, 21-Sep-2020 10:10:11 GMT 这样的单个cookie 的字符串是怎么回事?这包含 cookie MUIDMUIDB
  • 您是否使用上述代码在示例 cookie 字符串上运行?我希望它能涵盖大多数情况
  • 如果你想保留HttpOnlySecure,那么你可以这样做cookies['HttpOnly'] = 1cookies['Secure']=1
  • 现在它尝试上面的代码并得到一个错误key, value = part.split("=") ValueError: not enough values to unpack (expected 2, got 1)
  • 非常感谢您的努力!它给了我一个curious output。我想访问特定 cookie 中的每个属性(例如名称为 __cfduid 的 cookie),如下所示:cookies['__cfduid']['domain'] 或例如 path,如下所示:cookies['__cfduid']['path']
猜你喜欢
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
相关资源
最近更新 更多