gpt4 book ai didi

c# - 那可能吗 ? GeckoFX 可以为每个实例使用单独的 CookieContainer 吗?

转载 作者:太空狗 更新时间:2023-10-29 23:46:04 30 4
gpt4 key购买 nike

我正在使用 Geckfx22.0xulrunner22.0。由于 .Net 中的 GeckoWebBrowser 与 GeckoWebBrowsers 的所有其他实例共享 cookie,我希望 GeckoWebBrowser 拥有自己的 cookie 容器,该容器不共享之前在其他 GeckoWebBrowsers 或其他实例中创建的任何 cookie。

例如,当我创建一个 GeckoWebBrowser 时,它不应该有任何 cookie。当我运行 2 个 GeckoWebBrowser 实例时,它们有自己的 cookie 容器,并且不会彼此共享或冲突 cookie。

这怎么可能?

我通过创建不同的类并启动 geckofx 尝试了各种可能的方法,但是当同时运行不同的浏览器时,它会在其他浏览器之间共享 cookie。如果我从一个浏览器中删除 cookie,其他浏览器也会发生同样的情况。我已经在不同的时间启动了 proxyuseragent 及其工作,但无法同时为多个浏览器应用各种用户代理。

 public void Initiate()
{
Gecko.Xpcom.Initialize(AppDomain.CurrentDomain.BaseDirectory + "/xulrunner");
if (this.IsProxySet)
{
Gecko.GeckoPreferences.User["network.proxy.http"] = this.Host;
Gecko.GeckoPreferences.User["network.proxy.http_port"] = this.Port;
Gecko.GeckoPreferences.User["network.proxy.type"] = 1;
}
if (IsUseragentSet)
{
Gecko.GeckoPreferences.User["general.useragent.override"] = this.Useragent;
}
}

为了删除 cookie,我使用了以下代码:

nsICookieManager CookieMan;
CookieMan = Xpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1");
CookieMan = Xpcom.QueryInterface<nsICookieManager>(CookieMan);
CookieMan.RemoveAll();

帮助将不胜感激!!!

最佳答案

您可以尝试实现自己的支持此功能的 cookie 管理器:

参见单元测试 Register_AfterDefaultFactoryHasBeenUnregistered_NewCookieServiceIsUsedInsteadOfDefaultOne有关如何执行此操作的示例。

此代码目前未经测试,可能包含错误

此代码需要 geckofx 版本高于 v22.0-0.6

[Guid("c375fa80-150f-11d6-a618-0010a401eb10")]
[ContractID(TestCookieServiceFactory.ContractID)]
public class TestCookieServiceFactory
: GenericOneClassNsFactory<TestCookieServiceFactory, TestCookieService>
{
public const string ContractID = "@mozilla.org/cookieService;1";
}

public class TestCookieService : nsICookieService
{
// Implement nsICookieService...
}

public void Main()
{
Xpcom.Initialize("My Xulrunner/Fireofox location");
var existingFactoryDetails = TestCookieServiceFactory.Unregister();
TestCookieServiceFactory.Register();

var browser = new GeckofxWebBrowser();
// Add browser to form etc...
browser.Navigate("http://SomeWebPageThatUsesCookies")

// Cookie requests should now be sent to TestCookieService, process them as your want.
}

关于c# - 那可能吗 ? GeckoFX 可以为每个实例使用单独的 CookieContainer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209756/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com