通过名称从CookieJar获取cookie

时间:2011-11-17 23:37:39

标签: python cookies cookiejar cookielib

我知道我可以在cookiejar中遍历cookie,这样我就可以找到一个具有特定名称的cookie - 但CookieJar对象本身是否有任何我可以通过名称获取某个cookie的方法?

它只是让我不得不编写一个已经存在的辅助方法。

5 个答案:

答案 0 :(得分:22)

是的,__iter__方法将遍历CookieJar中的每个Cookie。

for cookie in cj:
   print cookie.name, cookie.value, cookie.domain #etc etc

Cookie不仅仅是名称和值对。在其长列表(17)的属性中,有domainpath。例如,.ibm.com的域值适用于网站mail.ibm.com。域值ibm.com和路径值/abc不适用于网页ibm.com/index.htm。因此,单独提供名称不足以在CookieJar中找到适用cookie的值。

虽然__iter__方法会轻松返回cookie个对象的列表,例如list(cj),但CookieJar的内部结构并不是一个简单的列表。关于CookieJar课程的内部成员是here

答案 1 :(得分:9)

您还可以使用dict_from_cookiejar,它从CookieJar返回键/值字典。类似的东西:

        var column = new GridViewColumn { Header = "" };
        var customTemplate = new System.Windows.DataTemplate();
        var efImage = new FrameworkElementFactory(typeof(Image));
        efImage.SetBinding(Image.SourceProperty, new Binding("Icon"));
        customTemplate.VisualTree = efImage;
        column.CellTemplate = customTemplate;
        view.Columns.Add(column);

然后按键访问您的Cookie值。

答案 2 :(得分:5)

它没有文档内部,但你可以像这样直接访问cookie:cookiejar._cookies[domain][path][name]

答案 3 :(得分:1)

cookielib.CookieJar?

你可以将jar转换为一个列表并处理它,例如{i.name: i for i in list(j)}

和btw,j._cookies实际上已经是一个字典 - 虽然没有完全简单地编入索引。

cookie jar文件?

我认为那些是纯文本文件......

答案 4 :(得分:0)

将Cookie Cookie与Cookie模块混合

public class AppState: INotifyPropertyChanged
{
     private static Operation _activeTask;


    private static AppState _instance;


    public static AppState Instance
    {
        get => _instance ?? (_instance = new AppState());
    }


    public Operation ActiveTask
    {
        get => _activeTask;
        set
        {
            if (value != _activeTask)
            {
                _activeTask = value;
                RaisePropertyChanged("ResourceName");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string prop)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
    }

    public string ResourceName => ActiveTask?.Operacija?.acResursName.Trim() ?? "";
}


}

如果const { parse } = require("cookie"); // uri eg: http://localhost const cookies = parse( cookieJar.getCookieString(uri) ); const cookieValue = cookies["cookie-name"]; 不带uri前缀,它将不会从jar获取cookie