CEFSharp отдельный CookieManager C#
Я пытаюсь создать отдельные пользовательские сеансы для каждого экземпляра браузера Chromium, но не могу найти никаких соответствующих примеров того, как это сделать. Цель состоит в том, чтобы хранить куки отдельно для каждого экземпляра браузера. Кто-нибудь может указать мне правильное направление? Я бы опубликовал соответствующий код, но пока у меня есть только основные примеры с https://github.com/cefsharp/CefSharp/tree/master/CefSharp.Example
3 ответа
В CEF3 revision 2040 добавлена поддержка отдельных экземпляров браузера (кеш, куки,
localStorage, права доступа и т. Д.). Во-первых, убедитесь, что у вас установлена последняя версия CefSharp (которая обновлена до CEF3.2526.1347
).
Затем, как вы можете видеть в этом примере (строка 135), сразу после инициализации контекста браузера в OnContextInitialized
Вы можете установить путь для хранения файлов cookie. API для SetStoragePath
является:
Устанавливает путь к каталогу, который будет использоваться для хранения данных cookie. Если | путь | пустые данные будут храниться только в памяти. Возвращает false, если файлы cookie недоступны.
Таким образом, вы можете поэкспериментировать с файлами cookie в памяти или с другим путем для каждого из ваших экземпляров.
Если вы пытаетесь поддерживать несколько ChromiumWebBrowser
экземпляры в пределах одного приложения, тогда это может еще не поддерживаться. Общая идея заключается в том, что вы создаете RequestContext
и поделиться этим между ChromiumWebBrowser
экземпляров.
http://magpcss.org/ceforum/apidocs3/projects/%28default%29/CefRequestContext.html
CefSharp
имеет ограниченную реализацию CefRequestContext
https://github.com/cefsharp/CefSharp/blob/cefsharp/45/CefSharp.Wpf.Example/Views/BrowserTabView.xaml.cs#L28
Я не совсем уверен, как читать раздел о Cookie Manager
в URL ниже. Я предполагаю, что это несколько недостающих частей, необходимых для того, что вы ищете, поскольку ни один из методов get cookiemanager не был реализован.
http://magpcss.org/ceforum/apidocs3/projects/%28default%29/CefRequestContext.html
http://magpcss.org/ceforum/apidocs3/projects/%28default%29/CefRequestContextHandler.html
Как сказал amaitland, это не поддерживается.
Чтобы использовать прокси с CefSharp, вы можете использовать этот код, но метод Initialize можно вызывать только один раз для каждого домена приложения.
CefSettings settings = new CefSettings();
if (string.IsNullOrEmpty(proxyAddress) == false)
{
settings.CefCommandLineArgs.Add("proxy-server", proxyAddress);
}
//validate if the CEF instance was already initialized
if (Cef.IsInitialized == false)
Cef.Initialize(settings, true, true);
chromeBrowser = new ChromiumWebBrowser(url);
Обходным путем может быть использование каждого экземпляра WebBrowser в другом приложении и вызов его как нового процесса.
Надеюсь это поможет