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 шт):
в цефШарп не нужно вручную куки сохранять и загружать.
Самый простой способ - это задать в настройках путь для кеша. Куки будут подтягиватся автоматически с этого кеша. Для этого тебя интересует CefSettings.CachePath
То есть добавить на старте программы до инициализации цеф-а что-то такое:
CefSharp.CefSettings settings = new CefSharp.CefSettings();
settings.CachePath = @"D:\CEF_Cache";
CefSharp.Cef.Initialize(settings);
Этого достаточно и никакой дополнительный код не нужен.
задавать куки вручную в 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 и проходишься циклом по десериализованным добавляя через код поданый выше. И перезагружаешь страницу.