c#使用WebBrowser cookie的WebRequest

时间:2009-03-16 13:59:19

标签: c# browser webrequest

我使用WebBrowser登录网站,然后我想使用正则表达式获取一些数据,但webRequest没有使用网页浏览cookie,

我的webBrowser在公开场合, 有没有办法在webRequest中使用WebBrowser cookie?

3 个答案:

答案 0 :(得分:12)

    public CookieContainer GetCookieContainer()
    {
        CookieContainer container = new CookieContainer();

        foreach (string cookie in webBrowser1.Document.Cookie.Split(';'))
        {
            string name = cookie.Split('=')[0];
            string value = cookie.Substring(name.Length + 1);
            string path = "/";
            string domain = ".google.com"; //change to your domain name
            container.Add(new Cookie(name.Trim(), value.Trim(), path, domain));
        }

        return container;
    }

这适用于大多数网站,但使用子域的网站可能存在问题。

答案 1 :(得分:7)

您可以将CookieContainer用于Webrequest。

 web_cookies = new CookieContainer();
 // Create a 'WebRequest' object with the specified url.                 
 HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(url);

 myWebRequest.CookieContainer = web_cookies;

希望这有帮助。

好的,你想登录。这就是不同的故事。您可以使用NetworkCredential。

public string get_secure_webpage(string url, string username, string password)
    {
        WebRequest myWebRequest = WebRequest.Create(url);
        NetworkCredential networkCredential = new NetworkCredential(username, password);
        myWebRequest.Credentials = networkCredential;

...

答案 2 :(得分:0)

这是银光吗? 如果是这样,因为Silverlight 3如果你使用浏览器网络堆栈比你应该免费获得cookie。默认情况下,当您使用WebRequest.Create()方法创建n HttpWebrequest时,您将获得浏览器堆栈。请注意,如果您使用CreateHTTP方法,则会获得一个客户端堆栈,默认情况下不包含浏览器cookie(如前所述,您必须通过欺骗手段获取它们)

请参阅http://msdn.microsoft.com/en-us/library/dd920295(VS.95).aspx关于自版本3以来Silverlight中的网络堆栈