2015-11-03 4 views
3

Я пытаюсь создать отдельные пользовательские сеансы на экземпляр хромового браузера, но не могу найти подходящих примеров того, как. Цель состоит в том, чтобы хранить файлы cookie отдельно для каждого экземпляра браузера. Может ли кто-нибудь указать мне в правильном направлении? Я хотел бы опубликовать соответствующий код, но до сих пор у меня есть только основные примеры из https://github.com/cefsharp/CefSharp/tree/master/CefSharp.ExampleCEFSharp отдельный CookieManager C#

+0

[Ответить] (http://stackoverflow.com/a/34551034/1548895) поможет вам. –

ответ

2

CEF3 revision 2040 добавлена ​​поддержка разделенных экземпляров браузера (кэш, куки, LocalStorage, гранты доступа и т.д.). Во-первых, убедитесь, что у вас есть новейший CefSharp (который обновлен до CEF3.2526.1347).

Затем, как вы можете видеть в this example (строка 135), сразу после того, как контекст вашего браузера инициализирован в OnContextInitialized, вы можете установить путь для хранилища файлов cookie. API для SetStoragePath:

Устанавливает путь к каталогу, который будет использоваться для хранения данных cookie. Если | путь | пустые данные будут храниться только в памяти. Возвращает false, если файлы cookie недоступны.

Итак, вы можете поэкспериментировать с куки-файлами в памяти или с другим путем для каждого из ваших экземпляров.

+0

Этот путь затем разделяется всеми экземплярами CEFSharp. – astralmaster

0

Если вы пытаетесь поддерживать несколько экземпляров 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 не был реализован.

http://magpcss.org/ceforum/apidocs3/projects/%28default%29/CefRequestContext.html#GetDefaultCookieManager%28CefRefPtr%3CCefCompletionCallback%3E%29

http://magpcss.org/ceforum/apidocs3/projects/%28default%29/CefRequestContextHandler.html#GetCookieManager%28%29

-1

Как сказал 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 на другое приложение и назовите его как новый процесс.

Надежда эта помощь

+0

С момента возникновения этого вопроса многое изменилось, можно изолировать каждый экземпляр браузера, даже иметь разные настройки прокси. Код, который вы предоставляете в качестве ссылки, очень устарел, так как подписи методов изменились. – amaitland

 Смежные вопросы

  • Нет связанных вопросов^_^