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);
}