【问题标题】:C# How to get cookies from GeckoWebBrowser controlC# 如何从 GeckoWebBrowser 控件中获取 cookie
【发布时间】:2013-12-10 03:30:52
【问题描述】:

我正在使用 GeckoWebBrowser 控件来导航 URL。 加载该页面时,它实际上应该有 cookie。 但是,如果我尝试获取 cookie,即使页面已加载,我也会得到一个空白文本。

GeckoWebBrowser m_Browser = ...

// ... 导航后。 字符串 sCookie = m_Browser.Document.Cookie.ToString();

还有其他方法可以从 GeckoWebBrowser 获取 cookie 吗? 请帮我。 谢谢

【问题讨论】:

  • 您可以在加载页面后使用 m_Browser.Document.Cookie 获取 cookie 值。你能告诉我你正在浏览哪个网站吗?而且你不需要在这里使用 Tostring() 因为m_Browser.Document.Cookie 本身返回字符串值..
  • 这个网站:trading.binaryinternational.com/#Trade。即使我加载了这个网站,cookie 仍然是空白的。我使用的壁虎版本是 21.0
  • 我认为在那个网站上他们通过调用javascripts 来保护cookies,你尝试过其他一些网站吗?
  • 那么,如果他们保护 cookie,有没有其他方法可以获取 cookie?
  • 在您的浏览器中使用Firebug 插件并尝试识别他们如何在该网站中生成cookie,然后您会有所了解...如果您有登录凭据,请在检查后登录饼干

标签: c# gecko geckofx


【解决方案1】:

已验证可与 GeckoFX v29.0 一起使用。

var uri = new Uri(txtURL.Text);
//often cookies are stored on domain level, so ".google.com", not "www.google.com" (leading dot is important)
string host = uri.Host.Replace("www", ""); 
var cookies = CookieManager.GetCookiesFromHost(host);
string cookiesText = "";
while (cookies.MoveNext())
{
    var c = cookies.Current;
    cookiesText += c.Name + "=" + c.Value + ";";
}

而且 Browser.Document.Cookie 现在似乎更可靠了,但我还没有进行广泛的测试。

【讨论】:

  • 他们将 CookieContainer 重命名为 CookieManager,我已经更新了答案。
  • @Sire 有什么方法可以选择特定的 cookie 吗?例如 User_ID ?
  • @rgerculy 不,你现在需要循环它们。
【解决方案2】:

我找到了这个问题的原因,因为 geckowebbrowser 的 all 元素正在加载然后你立即设置 cookie,所以 geckowebbrowser 没有足够的时间来授权。 我的解决方案是制作一个按钮。 onload winform 你确实导航你想要的 url,然后点击按钮,在事件按钮后面为你的 url 设置授权 cookie。它对我有用。 :)

【讨论】:

  • 这是我的代码: private void frm_testwebdriver_Load(object sender, EventArgs e) { Xpcom.Initialize("Firefox"); geckowebsite.Navigate("m.facebook.com"); } private void btn_Click(object sender, EventArgs e) { string[] arr1 = "your cookie";字符串[] arr = arr1.Split(';'); for (int i = 0; i
  • 请将您的代码直接放在您的答案中不要作为评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 2023-03-12
  • 2019-08-22
  • 2018-12-10
  • 2011-09-09
相关资源
最近更新 更多