Я пытаюсь создать отдельные пользовательские сеансы на экземпляр хромового браузера, но не могу найти подходящих примеров того, как. Цель состоит в том, чтобы хранить файлы cookie отдельно для каждого экземпляра браузера. Может ли кто-нибудь указать мне в правильном направлении? Я хотел бы опубликовать соответствующий код, но до сих пор у меня есть только основные примеры из https://github.com/cefsharp/CefSharp/tree/master/CefSharp.ExampleCEFSharp отдельный CookieManager C#
ответ
CEF3 revision 2040 добавлена поддержка разделенных экземпляров браузера (кэш, куки, LocalStorage, гранты доступа и т.д.). Во-первых, убедитесь, что у вас есть новейший CefSharp (который обновлен до CEF3.2526.1347
).
Затем, как вы можете видеть в this example (строка 135), сразу после того, как контекст вашего браузера инициализирован в OnContextInitialized
, вы можете установить путь для хранилища файлов cookie. API для SetStoragePath
:
Устанавливает путь к каталогу, который будет использоваться для хранения данных cookie. Если | путь | пустые данные будут храниться только в памяти. Возвращает false, если файлы cookie недоступны.
Итак, вы можете поэкспериментировать с куки-файлами в памяти или с другим путем для каждого из ваших экземпляров.
Этот путь затем разделяется всеми экземплярами CEFSharp. – astralmaster
Если вы пытаетесь поддерживать несколько экземпляров 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
в приведенной ниже ссылке. Я предполагаю, что их несколько недостающих частей необходимы для того, что вы ищете, поскольку ни один из методов get cookiemanager не был реализован.
Как сказал 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 на другое приложение и назовите его как новый процесс.
Надежда эта помощь
С момента возникновения этого вопроса многое изменилось, можно изолировать каждый экземпляр браузера, даже иметь разные настройки прокси. Код, который вы предоставляете в качестве ссылки, очень устарел, так как подписи методов изменились. – amaitland
[Ответить] (http://stackoverflow.com/a/34551034/1548895) поможет вам. –