Python/Django:从cookies获取var

2024-06-13 07:42:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用request.COOKIES.get('distinct_id')得到{}。但是Mixpanel以一种不可提取的方式保存数据。有人知道为什么会有这么多%22%3A%20%22,以及如何在不同的id之外加上其他的东西吗?在

print(request.COOKIES)

{
'djdt': 'hide',
'cookie_bar': '1',
'mp_1384c4d0e46aaaaad007e3d8b5d6eda_mixpanel': '%7B%22distinct_id%22%3A%20%22165edf326870-00fc0e7eb72ed3-34677908-fa000-165e40c268947b%22%2C%22%24initial_referrer%22%3A%20%22%24direct%22%2C%22%24initial_referring_domain%22%3A%20%22%24direct%22%2C%22__alias%22%3A%20%22maz%2B1024%40gmail.com%22%7D',
'csrftoken': 'nvWzsrp3t6Sivkrsyu0gejjjjjiTfc36ZfkH7U7fgHaI40EF',
'sessionid': '7bkel6r27ebd55x262cv9lzv61gzoemw'
}

Tags: 数据idgetcookierequest方式barmp
2条回答

检查此代码。您可以运行它,因为使用您共享的示例。首先,必须取消引用mixpanel值中的数据。我用cookie密钥的后缀来获取它。然后在unquote之后,您必须加载json以获取字典。在

这里的代码打印字典中的所有键,但是您可以使用mixpanel_dict.get('distinct_id')轻松地获得distinct_id

试试看。在

from urllib import parse
import json

cookie = {'djdt': 'hide',
'cookie_bar': '1',
'mp_1384c4d0e46aaaaad007e3d8b5d6eda_mixpanel': '%7B%22distinct_id%22%3A%20%22165edf326870-00fc0e7eb72ed3-34677908-fa000-165e40c268947b%22%2C%22%24initial_referrer%22%3A%20%22%24direct%22%2C%22%24initial_referring_domain%22%3A%20%22%24direct%22%2C%22__alias%22%3A%20%22maz%2B1024%40gmail.com%22%7D',
'csrftoken': 'nvWzsrp3t6Sivkrsyu0gejjjjjiTfc36ZfkH7U7fgHaI40EF',
'sessionid': '7bkel6r27ebd55x262cv9lzv61gzoemw'
}


def get_value_for_mixpanel(cookie):
    mixpanel_dict = {}
    for key in cookie.keys():
        if '_mixpanel' in key:
            value = parse.unquote(cookie.get(key))
            mixpanel_dict = json.loads(value)
    return mixpanel_dict

if __name__ == "__main__":
    mixpanel_dict = get_value_for_mixpanel(cookie) # type: dict
    for key,value in mixpanel_dict.items():
        print("%s:%s" %(key, value))

结果

^{pr2}$

尝试unquote()

>>> s = '/path/to/my/handler/?action=query&id=112&type=vca&info=ch%3D0%26type%3Devent%26ev46[sts%3Dbegin'
>>> import urllib
>>> urllib.unquote(s)
>>> '/path/to/my/handler/?action=query&id=112&type=vca&info=ch=0&type=event&ev46[sts=begin'

学分:https://stackoverflow.com/a/11215316/5647272

相关问题 更多 >