C#之WebView2实现cookie登录,免登操作。

.NET兼职社区
.NET兼职社区
.NET兼职社区
.NET兼职社区
.NET兼职社区
.NET兼职社区

我实现的方式有三种,一种是通过JS注入cookie的方式,第二种是通过读取本地化存储的用户数据实现,第三种是发送请求的时候,对请求头进行修改。

一、JS注入的方式

这种方式需要逆向分析下需要的参数,对不熟悉JS逆向的不是很友好。
这里给出参考代码。
点击按钮,跳转到指定的url,页面加载完成后,注入JS。代码中有注释。

        private void ButtonGo_Click(object sender, RoutedEventArgs e)
        {
   
            if (webView != null && webView.CoreWebView2 != null)
            {
   
                webView.CoreWebView2.NavigationCompleted += ActionCompleted;
                webView.CoreWebView2.Navigate(addressBar.Text);
            }
        }

        #region 可以成功实现cookie登录
        private async void ActionCompleted(object? sender, CoreWebView2NavigationCompletedEventArgs e)
        {
   

            string cookieString = $"document.cookie='{
     _cookie}';";
            await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(cookieString); //通过js注入cookie  这种方式注入完成后需要刷新页面 
            // 刷新页面  isLoadCookie 表示cookie加载完成后就不要再重定向了   避免事件链无限触发
            if (!isLoadCookie)
            {
   
                webView.CoreWebView2.Navigate(addressBar.Text);
            }
            //加载完成
            isLoadCookie = true;
        }
        #endregion

二、读取用户本地化数据

这种方式是比较简单的方式,不需要分析别人网页,无脑加载就行。适合不想麻烦的人。

        #region 成功实现cookie登录 。用户数据存储 通过指定用户数据目录的存储和加载。也可以实现自动登录,如果你之前登录过,WebView2会把登录的用户信息存储在userDataFolder中,下次再指定相同的文件,WebView2会自动获取用户数据。如果想实现用户切换,可以为每个用户独立一个UserData文件夹,切换的时候加载不同的文件夹,就OK。
        string userDataFolder = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WebView2", "UserData");
        Directory.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值