从WebBrowser控件获取CookieContainer?

时间:2018-02-26 04:00:00

标签: vb.net winforms http cookies webbrowser-control

首先,请原谅我如果我误解了一些概念,因为网页请求和cookie不是我的堡垒。

嗯,问题是我希望将当前网址中存储在 WebBrowser 会话中的所有Cookie。这将帮助我,例如在交互式登录网站后,我可以从WebBrowser实例检索cookie,以便在后台使用 HttpWebRequest 类。 (该网站有安全措施,如验证码和随机问题,所以对我来说尝试自动使用后台登录和存储cookie的请求是不可行的,我更喜欢使用webbrowser)

这是我到目前为止所尝试的,似乎它工作正常,但我不确定我是否做到这一切都没有错过任何重要的事情要考虑,我认为我的方法似乎有点肮脏的解决方案,我的意思是可能存在直接的方法从 WebBrowser 控件的抽象层获取...

$data = array(
    'ID1' => array('Column 1', 'Cell 1', 'Cell 2', 'Cell3')
    'ID2' => array('Column 2', 'Cell 1', 'Cell 2', 'Cell3'),    
    'ID3' => array('Column 3', 'Cell 1', 'Cell 2'),    
);

所以,我的问题是:我的方法一切正常吗?如果不是那么哪种方法可以做到这一点?

PS:我知道 WebBrowser Internet Explorer 的嵌入式实例,但我不确定<HideModuleName> Public Module WebBrowserExtensions <Extension> <DebuggerStepThrough> Public Function GetCookieContainer(ByVal wb As WebBrowser) As CookieContainer Dim uri As Uri = wb.Url Dim cookieContainer As New CookieContainer() Dim cookies As String() = wb.Document.Cookie.Split({";"c}, StringSplitOptions.None) For Each cookie As String In cookies Dim name As String = cookie.Substring(0, cookie.IndexOf("="c)).TrimStart(" "c) Dim value As String = cookie.Substring(cookie.IndexOf("="c) + 1) cookieContainer.Add(uri, New Cookie(name, value, "/", uri.Host)) Next cookie Return cookieContainer End Function End Module 如何管理Cookie,我表示cookie仅在当前应用程序或 WebBrowser 实例的生命周期内持续存在,或者只是cookie存储在系统中且与 Internet Explorer 使用的cookie相同。正如我所说,对不起,如果我误解了一些概念。

0 个答案:

没有答案