当前位置:  开发笔记 > 编程语言 > 正文

c#使用WebBrowser cookie的WebRequest

如何解决《c#使用WebBrowsercookie的WebRequest》经验,为你挑选了2个好方法。

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

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



1> 小智..:
    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;
    }

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


由于使用"httponly"修饰符的cookie,此解决方案似乎不再起作用.这使得它们从脚本中看不见.

2> TalkingCode..:

您可以将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;

...


实际上,大多数网站使用cookie进行身份验证而非HTTP身份验证,因此使用networkCredential无济于事.只要获得IE cookie,附加cookie容器就可以工作; 如果没有,PInvoke到InternetGetCookie()
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有