Отдельный кеш для каждого браузера?

В настоящее время я устанавливаю путь к кешу следующим образом:

CefSettings settings = new CefSettings();
settings.CachePath = mycachePath;

Cef.Initialize(settings);

var browser = new ChromiumWebBrowser(myUrl);

Выше работает.

Однако мне нужно одновременно войти на веб-сайт с двумя разными учетными записями, но он использует один и тот же контейнер cookie. Поэтому, если я вхожу в систему с одной учетной записи, а затем с другой, первая учетная запись переопределяется.

Возможно ли иметь путь к кешу для каждого браузера?

Или есть лучший способ справиться с этой ситуацией?


person Ivan-Mark Debono    schedule 31.12.2015    source источник
comment
Если это возможно, вы можете легко открыть второй браузер в приватном сеансе.   -  person Camilo Terevinto    schedule 31.12.2015
comment
@cFrozenDeath Как открыть второй браузер в приватном сеансе?   -  person Ivan-Mark Debono    schedule 31.12.2015
comment
Это зависит от того, открываете ли вы браузер вручную или программно. Если первое, щелкните правой кнопкой мыши Chrome и выберите «Новое окно в режиме инкогнито»; если второе, это зависит от класса, который вы используете, и от того, позволяет ли он вам или нет   -  person Camilo Terevinto    schedule 31.12.2015
comment
@cFrozenDeath Я делаю это в коде, как показано выше.   -  person Ivan-Mark Debono    schedule 31.12.2015


Ответы (2)


Похоже, вы используете CefSharp? Если это так, просматривая код, кажется, что вы хотите создать браузер с пустым Путь к кешу:

/// <summary>
/// Returns the cache path for this object. If empty an "incognito mode"
/// in-memory cache is being used.
/// </summary>
string CachePath { get; }

Глядя на их пример (я m, предполагая отсутствие окон), похоже, что вы получите примерно то, что хотите:

var browserSettings = new BrowserSettings();
var requestContextSettings = new RequestContextSettings { CachePath = "" };

using(var requestContext = new RequestContext(requestContextSettings))
using (var browser = new ChromiumWebBrowser(TestUrl, browserSettings, requestContext))
{
    ...
}
person Prescott    schedule 31.12.2015
comment
Я думаю, что этот ответ не относится к текущей версии (63.0), потому что больше нет этого метода Instantiate ChromiumWebBrowser (string url, BrowserSettings, RequestContext) - person Daniel; 30.04.2018

Это старо, но я только что наткнулся на него, и ему нужен более полный ответ. У вас может быть открыто столько экземпляров браузера, сколько вы хотите, каждый со своим собственным кэшем и файлами cookie, независимыми от других. Все, что вам нужно сделать, это установить свойство настроек CachePath для каждого браузера, убедившись, что его пути различаются, а затем создать браузер.

Пример сценария, в котором вы можете использовать это, — с вкладками, где Tab1 имеет Browser1, Tab2 имеет Browser2 и т. д., и каждый экземпляр браузера не знает других. Это достигается путем предоставления каждому браузеру собственного пути к кешу перед его созданием.

В ВБ.NET:

        CEFPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\My\Special\Cache\Path"

        If Not Directory.Exists(CEFPath) Then
            Try
                Directory.CreateDirectory(CEFPath)
            Catch ex As Exception
                MsgBox("Error creating cache directory" + vbCrLf + CEFPath,, "Error")
            End Try
        End If

        Dim settings As New CefSettings()
        settings.CachePath = CEFPath

        'Settings.Proxy = new ProxyOptions(ip: "myipaddress", port: "myport", username: "myusername", password: "mypassword")

        ' initialization before creating instance
        If CefSharp.Cef.IsInitialized = False Then
            CefSharp.Cef.Initialize(settings)
        End If

        browser = New ChromiumWebBrowser("")

        Dim requestContextSettings As New RequestContextSettings()
        requestContextSettings.CachePath = CEFPath
        'Optional:
        requestContextSettings.PersistSessionCookies = True

        'https://github.com/cefsharp/CefSharp/wiki/General-Usage
        browser.RequestContext = New RequestContext(requestContextSettings)

Я использую пакеты NuGet версии 83.4.20.

person technonaut    schedule 14.08.2020