CefSharp - как установить куки из файла?

Использую Хром браузер. Получены куки через Cef.GetGlobalCookieManager().VisitAllCookies(visitor); и записаны в файл.

После считывания записанных данных пробую установить через Cef.GetGlobalCookieManager().SetCookieAsync или browser.GetCookieManager().SetCookieAsync() и ничего не получается.

Установка такого плана:

        await Cef.UIThreadTaskFactory.StartNew(delegate
        {
            List<Cookie> cookies = File.ReadLines(@"C:\cookies").Select(x => JsonConvert.DeserializeObject<Cookie>(x)).ToList();

            foreach (Cookie cookie in cookies)
                browser.GetCookieManager().SetCookieAsync(cookie.Domain, cookie);
        });

Как поступить?


Ответы (2 шт):

Автор решения: Andrew

в цефШарп не нужно вручную куки сохранять и загружать.

Самый простой способ - это задать в настройках путь для кеша. Куки будут подтягиватся автоматически с этого кеша. Для этого тебя интересует CefSettings.CachePath

То есть добавить на старте программы до инициализации цеф-а что-то такое:

CefSharp.CefSettings settings = new CefSharp.CefSettings();

settings.CachePath = @"D:\CEF_Cache"; 

CefSharp.Cef.Initialize(settings);

Этого достаточно и никакой дополнительный код не нужен.

→ Ссылка
Автор решения: Andrew

задавать куки вручную в CefSharp можно вот так:

Cef.SetCookie("192.168.1.6/mywebsite", "/", "MyCookie", "true", new DateTime(2100, 1, 1));

Я не в курсе есть ли возможность сериализации кук напрямую, но наверняка есть возможность чтения данных записаных в куки.

Соответственно если нет возможности прямой сериализации - возьми список кук из CefSharp и скопируй в свою собственную реализацию а потом сериализируй или бинарно (например так https://ru.stackoverflow.com/a/941648/186752 ) или в XML (сам поищи)

А потом в необходимый момент трешь все куки CefSharp и проходишься циклом по десериализованным добавляя через код поданый выше. И перезагружаешь страницу.

→ Ссылка