cef谷歌内核浏览器获取cookie值并保存

目的:获取cookie存入数据库,以实现下次登录的自动完成
知识点:事件和委托

建立cookie读取对象,继承接口ICookieVisitor

public class CookieVisitor : ICookieVisitor
    {
        //定义委托
        public Action<Cookie> SendCookie = null;
        public bool Visit(CefSharp.Cookie cookie, int count, int total, ref bool deleteCookie)
        {
            if (SendCookie != null)
            {
                SendCookie(cookie);
            }

            return true;
        }

        public void Dispose() { }
    }

加载指定页面的cookie信息

chrbro.FrameLoadEnd += (s, e) =>
            {
                //一个页面加载如果有多个iframe会重复加载多次,需自己判断自己的加载的iframe或标记执行一次
                BeginInvoke(new Action(() =>
                {
                                    string _url = e.Url;
                                    //判断是否是需要获取cookie的页面
                                    if (_url.Contains("需要获取cookie的地址"))
                                    {
                                        //注册获取cookie回调事件
                                        ICookieManager cookieManager = chrbro.GetCookieManager();
                                        CookieVisitor visitor = new CookieVisitor();
                                        visitor.SendCookie += SaveCookie;
                                        cookieManager.VisitAllCookies(visitor);
                                    }
                               
                }));
            };

回调函数体,这里可以执行需要执行的操作

private void SaveCookie(CefSharp.Cookie cookie)
{
            Console.WriteLine("Name:" + cookie.Name + "         Value:" + cookie.Value);
            ////保存数据库操作,根据自己需求更改
            //string sql = " INSERT INTO tbbro_cookies(name,value) VALUES ('" + cookie.Name + "','" + cookie.Value + "')";
            //cladata.svrUpdate(sql);

}

posted @ 2020-04-07 15:32  左正  阅读(2703)  评论(0编辑  收藏  举报